Parámetros comunes de LangChain Chat Model

En la sección anterior aprendimosinit_chat_model()el uso básico de.

Esta sección presenta en detalle los parámetros de control comunes al llamar al modelo, para ayudarte a controlar mejor el comportamiento del modelo.


temperature: controla la creatividad y la determinación

temperatureEs el parámetro más utilizado, con un rango de valores de 0 a 2. Controla el grado de aleatoriedad de la salida del modelo.

Ejemplo

from langchain.chat_models import init_chat_model

# Comparación de diferentes valores de temperature para la misma pregunta
question = "Presenta Ejemplo en una frase"

# temperature=0: salida muy determinista, casi idéntica cada vez
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.ª vez: {resp1.content}")
print(f"temperature=0 2.ª vez: {resp2.content}")
print(f"¿Los dos resultados son iguales?: {resp1.content == resp2.content}")
print()

# temperature=1.5: salida diversa, puede variar cada vez
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.ª vez: {resp1.content}")
print(f"temperature=1.5 2.ª vez: {resp2.content}")

Resultado de la ejecución:

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

temperature=1.5 第1次: Ejemplo是一个简单易懂的编程与网络技术入门学习平台。
temperature=1.5 第2次: Ejemplo是深受编程新手喜爱的中文免费在线技术学习平台。
Valor de temperatureEfectoEscenario de aplicación
0 ~ 0.3Salida estable y determinista, resultados casi idénticos cada vezExtracción de datos, clasificación, generación de código, traducción
0.5 ~ 0.7Creatividad moderada, salida natural sin desviarse del temaDiálogo cotidiano, resumen de contenido
0.8 ~ 1.2Salida diversa, con más margen para la creatividadEscritura creativa, lluvia de ideas
1.3 ~ 2.0Salida muy aleatoria, puede aparecer contenido inesperadoGeneración exploratoria (no muy recomendada para producción)

temperature=0 no equivale a "exactamente igual". Debido a diferencias de precisión de punto flotante en los cálculos internos del modelo, puede haber pequeñas diferencias en casos extremos. Si se necesita una determinación absoluta, algunos modelos ofrecen el parámetro seed.


max_tokens: controla la longitud de salida y el costo

max_tokensLimita el número máximo de tokens de la salida del modelo. Un token equivale aproximadamente a 0,75 palabras en inglés o 0,5 caracteres chinos.

Ejemplo

from langchain.chat_models import init_chat_model

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

# max_tokens=30: limita la salida a un máximo de 30 tokens
response_short = model.invoke(
    "Presenta en detalle la plataforma Ejemplo",
    max_tokens=30
)
print(f"Límite de 30 tokens ({len(response_short.content)} caracteres):")
print(response_short.content)
print()

# max_tokens=200: permite una salida más larga
response_long = model.invoke(
    "Presenta en detalle la plataforma Ejemplo",
    max_tokens=200
)
print(f"Límite de 200 tokens ({len(response_long.content)} caracteres):")
print(response_long.content)

Resultado de la ejecución:

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

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

max_tokens es un límite estricto en la longitud de salida. Si se establece demasiado bajo, la respuesta del modelo puede cortarse abruptamente en medio de una frase. En general, se recomienda establecer entre 100 y 2000 según el escenario. Para escenarios de "respuesta en una frase", 30-100 es suficiente; para escenarios de "explicación detallada", se recomienda 500-2000.


timeout y max_retries: confiabilidad de la red

En entornos de producción, las solicitudes de red pueden fallar por diversas razones. Estos dos parámetros te ayudan a controlar el comportamiento de las solicitudes.

Ejemplo

from langchain.chat_models import init_chat_model

# Configuración recomendada para producción
model = init_chat_model(
    "deepseek:deepseek-v4-flash",

    # Tiempo máximo de espera por solicitud: 30 segundos
    timeout=30,

    # Reintentos máximos después de un fallo: 3 (4 oportunidades de solicitud en total)
    max_retries=3,
)

# Simular una llamada normal
try:
    response = model.invoke("¿Qué es Python?")
    print(f"Llamada exitosa: {response.content[:50]}...")
except Exception as e:
    print(f"Error en la llamada: {e}")
ParámetroDescripciónValor recomendado
timeoutTiempo máximo de espera por solicitud (segundos). None significa sin límite30~60 (si es demasiado corto, fácilmente se agota el tiempo; si es demasiado largo, mala experiencia de usuario)
max_retriesNúmero de reintentos después de un fallo. 0 significa no reintentar2~3 (suficiente para manejar problemas de red ocasionales)

Análisis del costo de tiempo de configurar timeout y max_retries:

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

base_url: dirección de API personalizada

El parámetro base_url es muy útil cuando necesitas acceder al modelo a través de un proxy, un servicio intermediario o un despliegue privado.

Ejemplo

from langchain.chat_models import init_chat_model

# Escenario 1: acceso a OpenAI mediante proxy
model = init_chat_model(
    "deepseek:deepseek-v4-flash",
    base_url="https://your-proxy-domain.com/v1",  # Dirección del proxy
)

# Escenario 2: usar un servicio de terceros compatible con la interfaz de OpenAI
# Muchos modelos nacionales proporcionan interfaces compatibles con OpenAI
model = init_chat_model(
    "deepseek:deepseek-v4-flash",           # El provider se establece como openai
    base_url="https://api.third-party.com/v1",  # Pero en realidad apunta a un tercero
    api_key="your-third-party-key",  # Clave de API de terceros
)

# Escenario 3: conexión a un modelo local (como vLLM, Ollama)
model = init_chat_model(
    "openai:qwen2.5",               # Nombre del modelo local
    base_url="http://localhost:8000/v1",  # Dirección del servicio local
    api_key="not-needed",           # Localmente normalmente no se necesita clave
)

base_url cambia la dirección del endpoint de la API, pero el parámetro provider determina el modo de comportamiento. Por ejemplo, provider="openai" usará el formato de mensajes de OpenAI, incluso si base_url apunta a otro servicio. Asegúrate de que el servicio de destino sea compatible con el formato del provider que especifiques.


Otros parámetros comunes

top_p: muestreo nuclear (nucleus sampling)

Ejemplo

from langchain.chat_models import init_chat_model

# top_p es otra forma de controlar la aleatoriedad
# El modelo solo muestrea entre las palabras cuya probabilidad acumulada alcanza top_p
# top_p=0.1 significa que solo se elige entre el 10% de las palabras con mayor probabilidad
model = init_chat_model(
    "deepseek:deepseek-v4-flash",
    top_p=0.9,       # Solo se consideran las palabras dentro del 90% de probabilidad acumulada
)

response = model.invoke("Presenta Ejemplo")
print(response.content[:100])

Generalmente se recomienda ajustar solo uno de temperature o top_p, no ambos al mismo tiempo. Si se configuran juntos, el comportamiento del modelo puede ser difícil de predecir.

stop: secuencia de detención

Ejemplo

from langchain.chat_models import init_chat_model

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

# El parámetro stop especifica secuencias de detención; el modelo deja de generar inmediatamente cuando encuentra estas palabras
response = model.invoke(
    "Enumera cinco sitios web para aprender programación, uno por línea",
    stop=["\n"]  # Se detiene al encontrar un salto de línea, solo devuelve el primero
)
print(f"Limitar stop=['"\\n']: {response.content}")

Resultado de la ejecución:

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

seed: reproducibilidad (compatible con algunos modelos)

Ejemplo

from langchain.chat_models import init_chat_model

# Algunos modelos admiten el parámetro seed para obtener una salida determinista
# Mismo seed + misma entrada = misma salida
model = init_chat_model("deepseek:deepseek-v4-flash", seed=42, temperature=0)
resp1 = model.invoke("Presenta Ejemplo")
resp2 = model.invoke("Presenta Ejemplo")
print(f"seed=42, resultados idénticos: {resp1.content == resp2.content}")

Tabla de referencia rápida de parámetros

ParámetroTipoValor predeterminadoCuándo usar
temperaturefloatDepende del modeloEstablecer en 0~0.3 cuando la tarea requiera estabilidad, y en 0.7~1.0 cuando se requiera creatividad
max_tokensintLímite del modeloCuando sea necesario controlar la longitud de salida
timeoutint/floatNoneEn producción se recomienda configurarlo siempre
max_retriesintDepende del modeloSe recomienda 2~3 cuando la red sea inestable
base_urlstrDirección oficialCuando se use un proxy, servicio intermediario o servicio local
top_pfloat1.0Cuando se necesite control mediante muestreo nuclear (alternativa a temperature)
stoplist[str]NingunoCuando se necesita controlar con precisión el final de la salida
Otras extensiones