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
# 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érature | Effet | Cas d'utilisation |
|---|---|---|
| 0 ~ 0.3 | Sortie stable et déterministe, les résultats sont presque identiques à chaque fois | Extraction de données, classification, génération de code, traduction |
| 0.5 ~ 0.7 | Créativité modérée, sortie naturelle qui reste sur le sujet | Conversation quotidienne, résumé de contenu |
| 0.8 ~ 1.2 | Sortie diversifiée avec plus de place pour la créativité | Écriture créative, brainstorming |
| 1.3 ~ 2.0 | Sortie très aléatoire, du contenu inattendu peut apparaître | Gé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
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
# 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ètre | Description | Valeur recommandée |
|---|---|---|
| timeout | Temps d'attente maximal pour une seule requête (secondes). None signifie aucune limite | 30~60 (trop court peut entraîner des délais d'attente ; trop long dégrade l'expérience utilisateur) |
| max_retries | Nombre de tentatives après échec. 0 signifie aucune nouvelle tentative | 2~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
# 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
# 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
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
# 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ètre | Type | Valeur par défaut | Quand l'utiliser |
|---|---|---|---|
| temperature | float | Varie selon le modèle | Ré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_tokens | int | Limite supérieure du modèle | Lorsque la longueur de sortie doit être contrôlée |
| timeout | int/float | Aucune | Recommandé de toujours définir dans les environnements de production |
| max_retries | int | Varie selon le modèle | Recommandé 2~3 lorsque le réseau est instable |
| base_url | str | Adresse officielle | Lors de l'utilisation d'un proxy, d'un relais ou d'un service local |
| top_p | float | 1.0 | Lorsque le contrôle de l'échantillonnage nucleus est nécessaire (comme alternative à la température) |
| stop | list[str] | Aucune | Lorsqu'un contrôle précis de la fin de la sortie est nécessaire |