Интеграция LangChain с DeepSeek
В этой главе объясняется, как интегрировать и использовать чат-модель DeepSeek в LangChain.
Через пакет расширенияlangchain-deepseekразработчики могут быстро получить доступ к сервисам больших языковых моделей, предоставляемым DeepSeek.
Модели DeepSeek поддерживают как официальный хостируемый API, так и локальное или стороннее развёртывание инференса через такие платформы, как Ollama, Fireworks и Together.
В дополнение к официальному интерфейсу API мы также можем использовать пакетCoding Plan/Token Planдля прямого доступа к популярным большим моделям, таким как DeepSeek, Kimi, GLM, Doubao, MiniMax и т. д., без отдельной покупки API у каждого поставщика.
Введение в DeepSeek
DeepSeek — это серия больших языковых моделей с открытым исходным кодом, поддерживающая такие возможности, как чат, рассуждение и генерация кода.
В LangChain DeepSeek в основном вызывается через классChatDeepSeek.
Информация об интеграции:
| Item | Описание |
|---|---|
| Имя класса | ChatDeepSeek |
| Пакет | langchain-deepseek |
| Status | Бета (тестовая версия) |
| Поддержка JavaScript | Да |
| Поддержка Python | Да |
Поддержка возможностей модели:
| Характеристика | Поддерживается? |
|---|---|
| Вызов инструментов | ✅ Поддерживается |
| Структурированный вывод | ✅ Поддерживается |
| Ввод изображения | ❌ Не поддерживается |
| Аудиовход | ❌ Не поддерживается |
| Видеовход | ❌ Не поддерживается |
| Потоковый вывод токенов | ✅ Поддерживается |
| Нативный асинхронный вызов | ✅ Поддерживается |
| Статистика использования токенов | ✅ Поддерживается |
| Logprobs | ❌ Не поддерживается |
API DeepSeek использует формат API, совместимый с OpenAI/Anthropic. Изменив конфигурацию, вы можете использовать SDK OpenAI/Anthropic для доступа к API DeepSeek или использовать программное обеспечение, совместимое с API OpenAI/Anthropic.
| Параметр | Значение |
|---|---|
| base_url (OpenAI) | https://api.deepseek.com |
| base_url (Anthropic) | https://api.deepseek.com/anthropic |
| api_key | Нажмите ссылку, чтобы подать заявку наAPI-ключ |
| model* | deepseek-v4-flashdeepseek-v4-prodeepseek-chat(Будет объявлен устаревшим 2026/07/24)deepseek-reasoner(Будет объявлен устаревшим 2026/07/24) |
Установите langchain-deepseek
Перед использованием необходимо установить пакет интеграции DeepSeek для LangChain:
pip install -qU langchain-deepseek
Настройка API-ключа DeepSeek
Сначала вам нужно зарегистрировать аккаунт DeepSeek и создать API Key. Если у вас его ещё нет, необходимо перейти наhttps://platform.deepseek.com/api_keys, чтобы создать API-ключ.
Обычно рекомендуется использоватьpython-dotenvдля чтения файла конфигурации.envв текущем каталоге.
pip install python-dotenv
Создайте файл.envв текущем каталоге проекта:
Конфигурация файла .env:
OPENAI_API_KEY="sk-xxxxxxxxxxxxxxxx"

Python читает файл .env:
Полный пример
from dotenv import load_dotenv
# Загрузить файл .env в текущем каталоге
load_dotenv()
# Получить API-ключ
api_key = os.getenv("DEEPSEEK_API_KEY")
print(api_key)
Укажите путь к файлу .env:Если файл .env не находится в текущем каталоге, вы можете указать путь вручную:
Пример
load_dotenv(dotenv_path="./config/.env")
Настройка LangSmith (необязательно)
Если вам нужно включить трассировку и отладку цепочки вызовов LangChain, вы можете настроить API-ключ LangSmith:
Пример
os.environ["LANGSMITH_API_KEY"] = getpass.getpass(
"Введите ваш API-ключ LangSmith: "
)
Создание модели ChatDeepSeek
После установки вы можете использоватьChatDeepSeekдля инициализации модели:
Пример
from dotenv import load_dotenv
from langchain_deepseek import ChatDeepSeek
# Загрузить .env
load_dotenv()
# Получить API-ключ
api_key = os.getenv("DEEPSEEK_API_KEY")
# Создание модели
llm = ChatDeepSeek(
api_key=api_key,
model="deepseek-v4-flash",
temperature=0,
max_tokens=None,
timeout=None,
max_retries=2
)
# Вызвать модель
response = llm.invoke("Привет, расскажи о LangChain")
print(response.content)
Описание параметров:
| Параметр | Описание |
|---|---|
| api_key | Укажите ваш API-ключ, полученный по заявке, например, "sk-xxx" |
| model | Укажите название модели, например, deepseek-v4-flash |
| temperature | Управляет случайностью; чем ниже значение, тем стабильнее результат |
| max_tokens | Ограничивает максимальное количество генерируемых токенов |
| timeout | Тайм-аут запроса |
| max_retries | Максимальное количество повторных попыток после сбоя |
Вы также можете использовать функциюinit_chat_model()для вызова:
Пример
from dotenv import load_dotenv
# Загрузить файл .env в текущем каталоге
load_dotenv()
from langchain.chat_models import init_chat_model
# Указанная модель, возвращает фиксированную модель
model = init_chat_model("deepseek:deepseek-v4-flash", temperature=0.7)
response = model.invoke("Представь учебник по Python")
print(response.content)
Вызов модели DeepSeek
В следующем примере показано, как отправлять чат-сообщения модели DeepSeek:
Примечание: В моём тесте здесь я записал API-ключ в тестовом файле:
llm = ChatDeepSeek( api_key="sk-xxx", # 设置你的 DeepSeek API Key model="deepseek-v4-flash" )В реальных производственных средах, пожалуйста, задайте его в.envфайле.
Пример
llm = ChatDeepSeek(
api_key="sk-xxx", # Укажите ваш API-ключ DeepSeek
model="deepseek-v4-flash",
temperature=0,
max_tokens=None,
timeout=None,
max_retries=2
)
messages = [
(
"system",
"Ты полезный ассистент, который переводит с английского на китайский."
),
(
"human",
"Я люблю программирование."
),
]
ai_msg = llm.invoke(messages)
print(ai_msg.content)
Приведённый выше код переводит английский на китайский. После запуска модель вернёт переведённый результат:
I like programming.
Поддерживаемые модели DeepSeek:
| Модель | Назначение | Особенности |
|---|---|---|
| deepseek-v4-flash | Чат-модель общего назначения | Поддерживает вызов инструментов и структурированный вывод |
| deepseek-v4-pro | Модель рассуждений (deepseek-v4-pro) | Более мощные возможности рассуждений, но не поддерживает вызов инструментов |
Полный пример тестирования LangChain + DeepSeek
Ниже демонстрируется полный рабочий пример LangChain + DeepSeek.
Создание тестового файла
Создайте файл test.py:
Полный пример
from langchain_core.messages import HumanMessage, SystemMessage
# =========================
# Настройте ключ API DeepSeek
# =========================
apiKey = "sk-xxx" # Установите свой ключ API DeepSeek
# =========================
# Создайте модель DeepSeek
# =========================
llm = ChatDeepSeek(
api_key=apiKey,
model="deepseek-v4-flash",
temperature=0.7,
max_tokens=1024,
timeout=60,
max_retries=3
)
# =========================
# Сформируйте сообщения чата
# =========================
messages = [
SystemMessage(
content="Вы профессиональный преподаватель Python."
),
HumanMessage(
content="Пожалуйста, объясните, что такое LangChain, и приведите простой пример."
)
]
# =========================
# Вызвать модель
# =========================
response = llm.invoke(messages)
# =========================
# Выведите результат
# =========================
print("Ответ ИИ:")
print(response.content)
Выполните в терминале:
python test.py
Вывод следующий:

Пояснение кода:
| Code | Назначение |
|---|---|
| ChatDeepSeek | Класс чат-модели DeepSeek в LangChain |
| SystemMessage | Системный промпт, используемый для задания личности ИИ |
| HumanMessage | Входное сообщение пользователя |
| llm.invoke() | Вызов модели DeepSeek |
| response.content | Получить содержимое, возвращённое ИИ |
Использовать модель рассуждений deepseek-v4-pro
LangChain поддерживает потоковый вывод DeepSeek, для чего требуется модель инференса deepseek-v4-pro:
Пример
from langchain_core.messages import HumanMessage, SystemMessage
# =========================
# Настройте ключ API DeepSeek
# =========================
apiKey = "sk-xxx" # Установите свой ключ API DeepSeek
# =========================
# Создайте модель 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("Пожалуйста, расскажи о Python"):
print(chunk.content, end="", flush=True)
Использование PromptTemplate
Динамическая генерация Prompt с помощью PromptTemplate:
Пример
from langchain_core.prompts import ChatPromptTemplate
# =========================
# Настройте ключ API DeepSeek
# =========================
apiKey = "sk-xxx" # Установите свой ключ API DeepSeek
# =========================
# Создайте модель 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(
"Пожалуйста, объясните подробно: {topic}"
)
chain = prompt | llm
response = chain.invoke({
"topic": "Transformer"
})
print(response.content)
Типичные ошибки
| Ошибка | Причина | Решение |
|---|---|---|
| 401 Unauthorized | Ошибка ключа API | Проверьте DEEPSEEK_API_KEY |
| ModuleNotFoundError | Зависимости не установлены | Повторно запустите pip install |
| Лимит запросов | Слишком высокая частота запросов | Уменьшите частоту запросов |
| Ошибка тайм-аута | Тайм-аут запроса | Увеличьте параметр тайм-аута |
Рекомендуемая структура проекта
Структура проекта
│
├── app.py
├── requirements.txt
├── .env
├── prompts/
├── data/
└── vector_db/
requirements.txt Пример
Пример
langchain-deepseek
python-dotenv
Справочная документация
- Документация LangChain DeepSeek: https://python.langchain.com/docs/integrations/chat/deepseek/
- Официальный сайт DeepSeek: https://www.deepseek.com/
- Официальный сайт LangChain: https://www.langchain.com/
- LangSmith: https://smith.langchain.com/