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ámetroValor
base_url (OpenAI)https://api.deepseek.com
base_url (Anthropic)https://api.deepseek.com/anthropic
api_keyHaga clic en el enlace para solicitarAPI key
model*deepseek-v4-flash
deepseek-v4-pro
deepseek-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:

DEEPSEEK_API_KEY="sk-xxxxxxxxxxxxxxxx"
OPENAI_API_KEY="sk-xxxxxxxxxxxxxxxx"

Python lee el archivo .env:

Ejemplo completo

import os

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

from dotenv import load_dotenv

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_TRACING"] = "true"

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

import os

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

import os

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

from langchain_deepseek import ChatDeepSeek

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_deepseek import ChatDeepSeek
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_deepseek import ChatDeepSeek
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_deepseek import ChatDeepSeek
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

project/
│
├── app.py
├── requirements.txt
├── .env
├── prompts/
├── data/
└── vector_db/

Ejemplo de requirements.txt

Ejemplo

langchain
langchain-deepseek
python-dotenv

Documentación de referencia

Otras extensiones