Integración de LangChain con DeepSeek
Este capítulo explica cómo integrar y usar el modelo de chat de DeepSeek en LangChain.
A través dellangchain-deepseekpaquete de extensión, los desarrolladores pueden acceder rápidamente al servicio de modelo de lenguaje grande proporcionado por DeepSeek.
Los modelos DeepSeek admiten tanto la API oficial alojada como la implementación de inferencia local o de terceros a través de plataformas como Ollama, Fireworks, Together, etc.
Además de la interfaz API oficial, también podemos, a través deCoding Plan/Token Planlos planes, acceder directamente a modelos principales como DeepSeek, Kimi, GLM, Doubao, MiniMax, etc., sin necesidad de comprar cada API por separado.
Introducción a DeepSeek
DeepSeek es una serie de modelos de lenguaje grandes de código abierto que admite capacidades como chat, razonamiento y generación de código.
En LangChain, DeepSeek se invoca principalmente a través de laChatDeepSeekclase para realizar llamadas.
Información de integración:
| Proyecto | Descripción |
|---|---|
| Nombre de la clase | ChatDeepSeek |
| Paquete de instalación | langchain-deepseek |
| Estado | Beta (versión de prueba) |
| Compatible con JavaScript | Sí |
| Compatible con Python | Sí |
Capacidades del modelo compatibles:
| Función | Compatibilidad |
|---|---|
| Llamada a herramientas (Tool Calling) | ✅ Compatible |
| Salida estructurada (Structured Output) | ✅ Compatible |
| Entrada de imágenes | ❌ No compatible |
| Entrada de audio | ❌ No compatible |
| Entrada de video | ❌ No compatible |
| Salida de tokens en streaming | ✅ Compatible |
| Llamada asíncrona nativa | ✅ Compatible |
| Estadísticas de uso de tokens | ✅ Compatible |
| Logprobs | ❌ No compatible |
La API de DeepSeek utiliza un formato de API compatible con OpenAI/Anthropic. Al modificar la configuración, puede usar el SDK de OpenAI/Anthropic para acceder a la API de DeepSeek, o usar software compatible con la API de OpenAI/Anthropic.
| Parámetro | Valor |
|---|---|
| base_url (OpenAI) | https://api.deepseek.com |
| base_url (Anthropic) | https://api.deepseek.com/anthropic |
| api_key | Haga clic en el enlace para solicitarAPI key |
| model* | deepseek-v4-flashdeepseek-v4-prodeepseek-chat(quedará obsoleto el 24/07/2026)deepseek-reasoner(quedará obsoleto el 24/07/2026) |
Instalación de langchain-deepseek
Antes de comenzar a usarlo, primero debe instalar el paquete de integración de LangChain para DeepSeek:
pip install -qU langchain-deepseek
Configuración de la API Key de DeepSeek
Primero debe registrarse en DeepSeek y crear una API Key. Si aún no tiene una, vaya ahttps://platform.deepseek.com/api_keysCrear una API key.
Generalmente se recomienda usarpython-dotenvpara leer en el directorio actual el.envarchivo de configuración.
pip install python-dotenv
En el directorio del proyecto actual, cree un.envarchivo:
Configuración del archivo .env:
OPENAI_API_KEY="sk-xxxxxxxxxxxxxxxx"

Python lee el archivo .env:
Ejemplo completo
from dotenv import load_dotenv
# Cargar el archivo .env del directorio actual
load_dotenv()
# Obtener la API Key
api_key = os.getenv("DEEPSEEK_API_KEY")
print(api_key)
Especificar la ruta del archivo .env:Si el archivo .env no está en el directorio actual, puede especificar la ruta manualmente:
Ejemplo
load_dotenv(dotenv_path="./config/.env")
Configurar LangSmith (opcional)
Si necesita habilitar el rastreo y la depuración de la cadena de llamadas de LangChain, puede configurar la API Key de LangSmith:
Ejemplo
os.environ["LANGSMITH_API_KEY"] = getpass.getpass(
"Enter your LangSmith API key: "
)
Crear el modelo ChatDeepSeek
Una vez completada la instalación, puede usarChatDeepSeekpara inicializar el modelo:
Ejemplo
from dotenv import load_dotenv
from langchain_deepseek import ChatDeepSeek
# Cargar .env
load_dotenv()
# Obtener la API KEY
api_key = os.getenv("DEEPSEEK_API_KEY")
# Crear el modelo
llm = ChatDeepSeek(
api_key=api_key,
model="deepseek-v4-flash",
temperature=0,
max_tokens=None,
timeout=None,
max_retries=2
)
# Llamar al modelo
response = llm.invoke("Hola, por favor presenta LangChain")
print(response.content)
Descripción de parámetros:
| Parámetro | Descripción |
|---|---|
| api_key | Establece tu API key solicitada, por ejemplo "sk-xxx" |
| model | Especifica el nombre del modelo, por ejemplo deepseek-v4-flash |
| temperature | Controla la aleatoriedad; cuanto más bajo, más estable es el resultado |
| max_tokens | Limita el número máximo de tokens generados |
| timeout | Tiempo de espera de la solicitud |
| max_retries | Número máximo de reintentos tras un fallo |
También se puede usar lainit_chat_model()función para llamar:
Ejemplo
from dotenv import load_dotenv
# Cargar el archivo .env del directorio actual
load_dotenv()
from langchain.chat_models import init_chat_model
# Se especificó el model, devuelve un modelo fijo
model = init_chat_model("deepseek:deepseek-v4-flash", temperature=0.7)
response = model.invoke("Presenta Ejemplo, el tutorial para novatos")
print(response.content)
Llamar al modelo DeepSeek
El siguiente ejemplo demuestra cómo enviar mensajes de chat al modelo DeepSeek:
Nota: en esta prueba, puse la API Key en el archivo de prueba:
llm = ChatDeepSeek( api_key="sk-xxx", # 设置你的 DeepSeek API Key model="deepseek-v4-flash" )En el entorno de producción real, por favor configúrela en el.envarchivo.
Ejemplo
llm = ChatDeepSeek(
api_key="sk-xxx", # Establece tu API Key de DeepSeek
model="deepseek-v4-flash",
temperature=0,
max_tokens=None,
timeout=None,
max_retries=2
)
messages = [
(
"system",
"You are a helpful assistant that translates English to Chinese."
),
(
"human",
"I love programming."
),
]
ai_msg = llm.invoke(messages)
print(ai_msg.content)
El código anterior traduce del inglés al chino. Después de ejecutarlo, el modelo devolverá el resultado traducido:
Me gusta programar.
Modelos DeepSeek compatibles:
| Modelo | Uso | Características |
|---|---|---|
| deepseek-v4-flash | Modelo de chat general | Compatible con Tool Calling y salida estructurada |
| deepseek-v4-pro | Modelo de razonamiento (deepseek-v4-pro) | Mayor capacidad de razonamiento, pero no compatible con Tool Calling |
Ejemplo completo de prueba de LangChain + DeepSeek
A continuación se muestra un ejemplo completo y ejecutable de LangChain + DeepSeek.
Crear archivo de prueba
Cree el archivo test.py:
Ejemplo completo
from langchain_core.messages import HumanMessage, SystemMessage
# =========================
# Configurar la API Key de DeepSeek
# =========================
apiKey = "sk-xxx" # Establece tu API Key de DeepSeek
# =========================
# Crear el modelo DeepSeek
# =========================
llm = ChatDeepSeek(
api_key=apiKey,
model="deepseek-v4-flash",
temperature=0.7,
max_tokens=1024,
timeout=60,
max_retries=3
)
# =========================
# Construir los mensajes de chat
# =========================
messages = [
SystemMessage(
content="Eres un profesor profesional de Python."
),
HumanMessage(
content="Por favor, explica qué es LangChain y proporciona un ejemplo sencillo."
)
]
# =========================
# Llamar al modelo
# =========================
response = llm.invoke(messages)
# =========================
# Mostrar el resultado
# =========================
print("Respuesta de IA:")
print(response.content)
Ejecute en la terminal:
python test.py
La salida es la siguiente:

Explicación del código:
| Código | Función |
|---|---|
| ChatDeepSeek | Clase de modelo de chat DeepSeek de LangChain |
| SystemMessage | Mensaje del sistema, utilizado para establecer la identidad de la IA |
| HumanMessage | Mensaje de entrada del usuario |
| llm.invoke() | Llamar al modelo DeepSeek |
| response.content | Obtener el contenido devuelto por la IA |
Usar el modelo de razonamiento deepseek-v4-pro
LangChain admite la salida en streaming de DeepSeek, se necesita usar el modelo de razonamiento deepseek-v4-pro:
Ejemplo
from langchain_core.messages import HumanMessage, SystemMessage
# =========================
# Configurar la API Key de DeepSeek
# =========================
apiKey = "sk-xxx" # Establece tu API Key de DeepSeek
# =========================
# Crear el modelo DeepSeek
# =========================
llm = ChatDeepSeek(
api_key=apiKey,
model="deepseek-v4-pro",
temperature=0.7,
max_tokens=1024,
timeout=60,
max_retries=3
)
for chunk in llm.stream("Presenta Python"):
print(chunk.content, end="", flush=True)
Usar PromptTemplate
Generar Prompt dinámicamente con PromptTemplate:
Ejemplo
from langchain_core.prompts import ChatPromptTemplate
# =========================
# Configurar la API Key de DeepSeek
# =========================
apiKey = "sk-xxx" # Establece tu API Key de DeepSeek
# =========================
# Crear el modelo DeepSeek
# =========================
llm = ChatDeepSeek(
api_key=apiKey,
model="deepseek-v4-pro",
temperature=0.7,
max_tokens=1024,
timeout=60,
max_retries=3
)
prompt = ChatPromptTemplate.from_template(
"Explica en detalle: {topic}"
)
chain = prompt | llm
response = chain.invoke({
"topic": "Transformer"
})
print(response.content)
Errores comunes
| Error | Causa | Solución |
|---|---|---|
| 401 Unauthorized | API Key incorrecta | Verifica DEEPSEEK_API_KEY |
| ModuleNotFoundError | Dependencias no instaladas | Vuelve a hacer pip install |
| Rate Limit | Frecuencia de solicitudes demasiado alta | Reduce la frecuencia de solicitudes |
| Timeout Error | Tiempo de espera agotado (timeout) | Aumenta el parámetro timeout |
Estructura de proyecto recomendada
Estructura del proyecto
│
├── app.py
├── requirements.txt
├── .env
├── prompts/
├── data/
└── vector_db/
Ejemplo de requirements.txt
Ejemplo
langchain-deepseek
python-dotenv
Documentación de referencia
- Documentación de LangChain DeepSeek: https://python.langchain.com/docs/integrations/chat/deepseek/
- Sitio oficial de DeepSeek: https://www.deepseek.com/
- Sitio oficial de LangChain: https://www.langchain.com/
- LangSmith: https://smith.langchain.com/