LangChain Chat Model – Häufige Parameter

Im vorherigen Abschnitt haben wirinit_chat_model()die grundlegende Verwendung von gelernt

In diesem Abschnitt werden die gängigen Steuerungsparameter erläutert, die beim Aufrufen von Modellen verwendet werden, damit Sie das Modellverhalten besser steuern können.


temperature - Steuerung von Kreativität und Determinismus

temperatureEs ist der am häufigsten verwendete Parameter mit einem Wertebereich von 0 bis 2. Er steuert die Zufälligkeit der Modellausgabe.

Beispiel

from langchain.chat_models import init_chat_model

# Vergleich verschiedener Temperaturwerte für dieselbe Frage
question = "Stelle Python Tutorial Python in einem Satz vor"

# temperature=0: Die Ausgabe ist sehr deterministisch, fast jedes Mal identisch
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 1. Mal: {resp1.content}")
print(f"temperature=0 2. Mal: {resp2.content}")
print(f"Beide Ergebnisse sind identisch: {resp1.content == resp2.content}")
print()

# temperature=1.5: Die Ausgabe ist vielfältig, kann sich jedes Mal unterscheiden
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 1. Mal: {resp1.content}")
print(f"temperature=1.5 2. Mal: {resp2.content}")

Ausgabe:

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

temperature=1.5 第1次: Example是一个简单易懂的编程与网络技术入门学习平台。
temperature=1.5 第2次: Example是深受编程新手喜爱的中文免费在线技术学习平台。
TemperaturwertWirkungAnwendungsfälle
0 ~ 0.3Stabile und deterministische Ausgabe, die Ergebnisse sind bei jedem Durchlauf nahezu identischDatenextraktion, Klassifizierung, Codegenerierung, Übersetzung
0.5 ~ 0.7Mittlere Kreativität, natürliche Ausgabe, die beim Thema bleibtAlltagsgespräche, Inhaltszusammenfassung
0.8 ~ 1.2Vielfältige Ausgabe mit mehr Spielraum für KreativitätKreatives Schreiben, Brainstorming
1.3 ~ 2.0Sehr zufällige Ausgabe, unerwartete Inhalte können auftauchenExplorative Generierung (nicht für die Produktion empfohlen)

temperature=0 bedeutet nicht "exakt identisch". Aufgrund von Gleitkomma-Präzisionsunterschieden in den internen Berechnungen des Modells kann es in extremen Fällen dennoch winzige Unterschiede geben. Wenn absoluter Determinismus benötigt wird, bieten einige Modelle einen seed-Parameter.


max_tokens - Steuerung von Ausgabelänge und Kosten

max_tokensBegrenzt die maximale Anzahl von Tokens in der Modellausgabe. Ein Token entspricht ungefähr 0.75 englischen Wörtern oder 0.5 chinesischen Schriftzeichen.

Beispiel

from langchain.chat_models import init_chat_model

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

# max_tokens=30: Ausgabe auf maximal 30 Tokens begrenzen
response_short = model.invoke(
    "Beschreibe die Example Tutorial EXAMPLE-Plattform ausführlich",
    max_tokens=30
)
print(f"Begrenzt auf 30 Tokens ({len(response_short.content)} Zeichen):")
print(response_short.content)
print()

# max_tokens=200: Längere Ausgabe zulassen
response_long = model.invoke(
    "Beschreibe die Example Tutorial EXAMPLE-Plattform ausführlich",
    max_tokens=200
)
print(f"Begrenzt auf 200 Tokens ({len(response_long.content)} Zeichen):")
print(response_long.content)

Ausgabe:

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

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

max_tokens ist eine harte Obergrenze für die Ausgabelänge. Wenn sie zu niedrig eingestellt wird, kann die Antwort des Modells mitten im Satz abrupt abgeschnitten werden. Im Allgemeinen wird empfohlen, sie je nach Szenario zwischen 100-2000 einzustellen. Für Szenarien mit "Ein-Satz-Antwort" sind 30-100 ausreichend; für Szenarien mit "detaillierter Erklärung" werden 500-2000 empfohlen.


timeout und max_retries - Netzwerkzuverlässigkeit

In Produktionsumgebungen können Netzwerkanfragen aus verschiedenen Gründen fehlschlagen. Diese beiden Parameter helfen Ihnen, das Anfrageverhalten zu steuern.

Beispiel

from langchain.chat_models import init_chat_model

# Empfohlene Konfiguration für die Produktionsumgebung
model = init_chat_model(
    "deepseek:deepseek-v4-flash",

    # Höchstens 30 Sekunden auf eine einzelne Anfrage warten
    timeout=30,

    # Nach einem Fehler bis zu 3-mal wiederholen (insgesamt 4 Anfrageversuche)
    max_retries=3,
)

# Einen normalen Aufruf simulieren
try:
    response = model.invoke("Was ist Python Tutorial Python?")
    print(f"Aufruf erfolgreich: {response.content[:50]}...")
except Exception as e:
    print(f"Aufruf fehlgeschlagen: {e}")
ParameterBeschreibungEmpfohlener Wert
timeoutMaximale Wartezeit für eine einzelne Anfrage (Sekunden). None bedeutet keine Begrenzung30~60 (zu kurz kann Zeitüberschreitungen verursachen; zu lang beeinträchtigt die Benutzererfahrung)
max_retriesAnzahl der Wiederholungsversuche nach einem Fehler. 0 bedeutet keine Wiederholung2~3 (ausreichend für die Behandlung gelegentlicher Netzwerkprobleme)

Zeitkostenanalyse für die Einstellung von timeout und max_retries:

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

base_url - Benutzerdefinierte API-Adresse

Der Parameter base_url ist sehr nützlich, wenn Sie über einen Proxy, einen Relay-Dienst oder eine private Bereitstellung auf Modelle zugreifen müssen.

Beispiel

from langchain.chat_models import init_chat_model

# Szenario 1: Zugriff auf OpenAI über einen Proxy
model = init_chat_model(
    "deepseek:deepseek-v4-flash",
    base_url="https://your-proxy-domain.com/v1",  # Proxy-Adresse
)

# Szenario 2: Verwendung eines Drittanbieterdienstes, der mit der OpenAI-API kompatibel ist
# Viele inländische Modelle bieten OpenAI-kompatible Schnittstellen
model = init_chat_model(
    "deepseek:deepseek-v4-flash",           # Anbieter auf openai setzen
    base_url="https://api.third-party.com/v1",  # Aber es zeigt tatsächlich auf einen Drittanbieter
    api_key="your-third-party-key",  # API-Schlüssel von Drittanbietern
)

# Szenario 3: Verbindung mit lokalen Modellen (z. B. vLLM, Ollama)
model = init_chat_model(
    "openai:qwen2.5",               # Name des lokalen Modells
    base_url="http://localhost:8000/v1",  # Adresse des lokalen Dienstes
    api_key="not-needed",           # Lokal wird normalerweise kein Schlüssel benötigt
)

base_url ändert die API-Endpunktadresse, aber der Parameter provider bestimmt den Verhaltensmodus. Zum Beispiel verwendet provider="openai" das Nachrichtenformat von OpenAI, selbst wenn base_url auf einen anderen Dienst zeigt. Stellen Sie sicher, dass der Zieldienst mit dem von Ihnen angegebenen Provider-Format kompatibel ist.


Weitere häufige Parameter

top_p - Nucleus-Sampling

Beispiel

from langchain.chat_models import init_chat_model

# top_p ist eine weitere Möglichkeit, die Zufälligkeit zu steuern
# Das Modell zieht nur Stichproben aus Wörtern, deren kumulierte Wahrscheinlichkeit top_p erreicht
# top_p=0.1 bedeutet, dass nur aus den 10% Wörtern mit der höchsten Wahrscheinlichkeit ausgewählt wird
model = init_chat_model(
    "deepseek:deepseek-v4-flash",
    top_p=0.9,       # Nur Wörter in den obersten 90% der kumulierten Wahrscheinlichkeit berücksichtigen
)

response = model.invoke("Stelle Python Tutorial Python vor")
print(response.content[:100])

Es wird im Allgemeinen empfohlen, nur einen von temperature oder top_p anzupassen, nicht beide gleichzeitig. Wenn beide gesetzt sind, kann das Verhalten des Modells schwer vorherzusagen sein.

stop - Stoppsequenz

Beispiel

from langchain.chat_models import init_chat_model

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

# Der stop-Parameter gibt Stoppsequenzen an; das Modell beendet die Generierung sofort, wenn es auf diese Wörter trifft
response = model.invoke(
    "Nenne fünf Websites zum Programmierenlernen, eine pro Zeile",
    stop=["\n"]  # Beende, wenn ein Zeilenumbruch auftritt, und gib nur den ersten zurück
)
print(f"Begrenzung stop=['\n']: {response.content}"\\n']: {response.content}")

Ausgabe:

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

seed - Reproduzierbarkeit (von einigen Modellen unterstützt)

Beispiel

from langchain.chat_models import init_chat_model

# Einige Modelle unterstützen den seed-Parameter, um deterministische Ausgaben zu erhalten
# Gleicher seed + gleiche Eingabe = gleiche Ausgabe
model = init_chat_model("deepseek:deepseek-v4-flash", seed=42, temperature=0)
resp1 = model.invoke("Stelle Python Tutorial vor")
resp2 = model.invoke("Python-Tutorial vorstellen")
print(f"seed=42, Ergebnisse identisch: {resp1.content == resp2.content}")

Parameter-Kurzreferenztabelle

ParameterTypeStandardwertWann verwenden
temperaturefloatVariiert je nach ModellAuf 0~0.3 setzen, wenn die Aufgabe Stabilität erfordert, und auf 0.7~1.0, wenn Kreativität benötigt wird
max_tokensintModell-ObergrenzeWenn die Ausgabelänge gesteuert werden muss
timeoutint/floatKeineEmpfohlen, in Produktionsumgebungen immer festzulegen
max_retriesintVariiert je nach Modell2~3 empfohlen, wenn das Netzwerk instabil ist
base_urlstrOffizielle AdresseBei Verwendung eines Proxys, Relays oder lokalen Dienstes
top_pfloat1.0Wenn Nucleus-Sampling-Steuerung benötigt wird (als Alternative zur Temperatur)
stoplist[str]KeineWenn eine präzise Kontrolle über das Ende der Ausgabe erforderlich ist
Andere Erweiterungen