Paramètres courants du modèle de chat LangChain

Dans la section précédente, nous avons apprisinit_chat_model()l'utilisation de base de

Cette section détaillera les paramètres de contrôle courants utilisés lors de l'appel des modèles, vous aidant à mieux contrôler le comportement du modèle.


temperature - Contrôle de la créativité et du déterminisme

temperatureC'est le paramètre le plus couramment utilisé, avec une plage de valeurs de 0 à 2. Il contrôle le caractère aléatoire de la sortie du modèle.

Exemple

from langchain.chat_models import init_chat_model

# Comparaison de différentes valeurs de température pour la même question
question = "Présentez le tutoriel Python Python en une phrase"

# temperature=0 : la sortie est très déterministe, presque identique à chaque fois
model_low = init_chat_model("deepseek:deepseek-v4-flash", temperature=0)
resp1 = model_low.invoke(question)
resp2 = model_low.invoke(question)
print(f"temperature=0 1re fois : {resp1.content}")
print(f"temperature=0 2e fois : {resp2.content}")
print(f"Les deux résultats sont identiques : {resp1.content == resp2.content}")
print()

# temperature=1.5 : la sortie est variée, peut différer à chaque fois
model_high = init_chat_model("deepseek:deepseek-v4-flash", temperature=1.5)
resp1 = model_high.invoke(question)
resp2 = model_high.invoke(question)
print(f"temperature=1.5 1re fois: {resp1.content}")
print(f"temperature=1.5 2e fois: {resp2.content}")

Sortie :

temperature=0 第1次: Example是一个为编程初学者提供免费教程的学习平台。
temperature=0 第2次: Example是一个为编程初学者提供免费教程的学习平台。
两次结果相同: True

temperature=1.5 第1次: Example是一个简单易懂的编程与网络技术入门学习平台。
temperature=1.5 第2次: Example是深受编程新手喜爱的中文免费在线技术学习平台。
valeur de températureEffetCas d'utilisation
0 ~ 0.3Sortie stable et déterministe, les résultats sont presque identiques à chaque foisExtraction de données, classification, génération de code, traduction
0.5 ~ 0.7Créativité modérée, sortie naturelle qui reste sur le sujetConversation quotidienne, résumé de contenu
0.8 ~ 1.2Sortie diversifiée avec plus de place pour la créativitéÉcriture créative, brainstorming
1.3 ~ 2.0Sortie très aléatoire, du contenu inattendu peut apparaîtreGénération exploratoire (non recommandée pour la production)

temperature=0 ne signifie pas « exactement identique ». En raison de différences de précision en virgule flottante dans les calculs internes du modèle, il peut encore subsister de minuscules différences dans des cas extrêmes. Si un déterminisme absolu est nécessaire, certains modèles fournissent un paramètre seed.


max_tokens - Contrôler la longueur et le coût de la sortie

max_tokensLimite le nombre maximal de tokens dans la sortie du modèle. Un token équivaut approximativement à 0.75 mots anglais ou 0.5 caractères chinois.

Exemple

from langchain.chat_models import init_chat_model

model = init_chat_model("deepseek:deepseek-v4-flash", temperature=0)

# max_tokens=30: Limiter la sortie à un maximum de 30 tokens
response_short = model.invoke(
    "Décrivez en détail la plateforme EXAMPLE du tutoriel d'exemple",
    max_tokens=30
)
print(f"Limité à 30 tokens ({len(response_short.content)} caractères) :")
print(response_short.content)
print()

# max_tokens=200: Autoriser une sortie plus longue
response_long = model.invoke(
    "Décrivez en détail la plateforme EXAMPLE du tutoriel d'exemple",
    max_tokens=200
)
print(f"Limité à 200 tokens ({len(response_long.content)} caractères) :")
print(response_long.content)

Sortie :

限制 30 tokens (42 字符):
Example是一个面向编程初学者的在线学习平台,提供各种编程语言的教程和实例。

限制 200 tokens (306 字符):
Example是一个面向编程初学者的在线学习平台,提供了丰富的编程教程和参考资料。
该平台涵盖了 HTML、CSS、JavaScript、Python、Java、C、C++、PHP、SQL 等多种编程语言和技术。
Example的特点包括:
1. 内容系统化:从基础到进阶,帮助学习者逐步掌握编程知识
2. 实例丰富:每个知识点都配有可运行的代码示例
3. ...

max_tokens est une limite stricte sur la longueur de sortie. Si elle est définie trop bas, la réponse du modèle peut être brusquement coupée au milieu d'une phrase. Il est généralement recommandé de la définir entre 100 et 2000 selon le scénario. Pour les scénarios de "réponse en une phrase", 30-100 suffisent ; pour les scénarios d'"explication détaillée", 500-2000 sont recommandés.


timeout et max_retries - Fiabilité du réseau

Dans les environnements de production, les requêtes réseau peuvent échouer pour diverses raisons. Ces deux paramètres vous aident à contrôler le comportement des requêtes.

Exemple

from langchain.chat_models import init_chat_model

# Configuration recommandée pour l'environnement de production
model = init_chat_model(
    "deepseek:deepseek-v4-flash",

    # Attendre au maximum 30 secondes pour une seule requête
    timeout=30,

    # Réessayer jusqu'à 3 fois après un échec (4 tentatives de requête au total)
    max_retries=3,
)

# Simuler un appel normal
try:
    response = model.invoke("Qu'est-ce que Python Tutorial Python ?")
    print(f"Appel réussi : {response.content[:50]}...")
except Exception as e:
    print(f"Échec de l'appel : {e}")
ParamètreDescriptionValeur recommandée
timeoutTemps d'attente maximal pour une seule requête (secondes). None signifie aucune limite30~60 (trop court peut entraîner des délais d'attente ; trop long dégrade l'expérience utilisateur)
max_retriesNombre de tentatives après échec. 0 signifie aucune nouvelle tentative2~3 (suffisant pour gérer des problèmes réseau occasionnels)

Analyse du coût en temps pour définir timeout et max_retries :

假设 timeout=30, max_retries=3:
单次成功: ~2s
第1次失败+重试成功: ~2s + ~2s = ~4s
全部失败: 4次 × 30s = 最多 120s 才抛出异常

base_url - Adresse d'API personnalisée

Le paramètre base_url est très utile lorsque vous devez accéder à des modèles via un proxy, un service relais ou un déploiement privé.

Exemple

from langchain.chat_models import init_chat_model

# Scénario 1 : Accéder à OpenAI via un proxy
model = init_chat_model(
    "deepseek:deepseek-v4-flash",
    base_url="https://your-proxy-domain.com/v1",  # Adresse du proxy
)

# Scénario 2 : Utiliser un service tiers compatible avec l'API OpenAI
# De nombreux modèles nationaux proposent des interfaces compatibles avec OpenAI
model = init_chat_model(
    "deepseek:deepseek-v4-flash",           # Définir provider sur openai
    base_url="https://api.third-party.com/v1",  # Mais il pointe en réalité vers un tiers
    api_key="your-third-party-key",  # Clé API tierce
)

# Scénario 3 : Connexion à des modèles locaux (par ex., vLLM, Ollama)
model = init_chat_model(
    "openai:qwen2.5",               # Nom du modèle local
    base_url="http://localhost:8000/v1",  # Adresse du service local
    api_key="not-needed",           # En local, une clé n'est généralement pas requise
)

base_url modifie l'adresse du point de terminaison de l'API, mais le paramètre provider détermine le mode de comportement. Par exemple, provider="openai" utilisera le format de message d'OpenAI, même si base_url pointe vers un autre service. Assurez-vous que le service cible est compatible avec le format de provider que vous spécifiez.


Autres paramètres courants

top_p - Échantillonnage noyau

Exemple

from langchain.chat_models import init_chat_model

# top_p est une autre façon de contrôler l'aléatoire
# Le modèle n'échantillonne qu'à partir des mots dont la probabilité cumulée atteint top_p
# top_p=0.1 signifie ne sélectionner que parmi les 10 % des mots les plus probables
model = init_chat_model(
    "deepseek:deepseek-v4-flash",
    top_p=0.9,       # Ne considérer que les mots dans les 90 % supérieurs de probabilité cumulée
)

response = model.invoke("Présentez le tutoriel Python Python")
print(response.content[:100])

Il est généralement recommandé de ne régler qu’un seul parmi temperature ou top_p, pas les deux en même temps. Si les deux sont définis, le comportement du modèle peut être difficile à prévoir.

stop - Séquence d'arrêt

Exemple

from langchain.chat_models import init_chat_model

model = init_chat_model("deepseek:deepseek-v4-flash")

# Le paramètre stop spécifie les séquences d'arrêt ; le modèle arrête immédiatement la génération lorsqu'il rencontre ces mots
response = model.invoke(
    "Listez cinq sites d'apprentissage de la programmation, un par ligne",
    stop=["\n"]  # Arrêter lorsqu'un saut de ligne est rencontré, ne renvoyer que le premier
)
print(f"Limite stop=['\n']: {response.content}"\\n']: {response.content}")

Sortie :

限制 stop=['\n']: 1. Example

seed - Reproductibilité (pris en charge par certains modèles)

Exemple

from langchain.chat_models import init_chat_model

# Certains modèles prennent en charge le paramètre seed pour obtenir une sortie déterministe
# Même seed + même entrée = même sortie
model = init_chat_model("deepseek:deepseek-v4-flash", seed=42, temperature=0)
resp1 = model.invoke("Présentez le tutoriel Python")
resp2 = model.invoke("Présenter le tutoriel Python")
print(f"seed=42, résultats identiques : {resp1.content == resp2.content}")

Tableau de référence rapide des paramètres

ParamètreTypeValeur par défautQuand l'utiliser
temperaturefloatVarie selon le modèleRégler sur 0~0.3 lorsque la tâche exige de la stabilité, et sur 0.7~1.0 lorsque la créativité est nécessaire
max_tokensintLimite supérieure du modèleLorsque la longueur de sortie doit être contrôlée
timeoutint/floatAucuneRecommandé de toujours définir dans les environnements de production
max_retriesintVarie selon le modèleRecommandé 2~3 lorsque le réseau est instable
base_urlstrAdresse officielleLors de l'utilisation d'un proxy, d'un relais ou d'un service local
top_pfloat1.0Lorsque le contrôle de l'échantillonnage nucleus est nécessaire (comme alternative à la température)
stoplist[str]AucuneLorsqu'un contrôle précis de la fin de la sortie est nécessaire
Autres extensions