Интеграция 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-flash
deepseek-v4-pro
deepseek-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:

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

Python читает файл .env:

Полный пример

import os

from dotenv import load_dotenv

# Загрузить файл .env в текущем каталоге
load_dotenv()

# Получить API-ключ
api_key = os.getenv("DEEPSEEK_API_KEY")

print(api_key)

Укажите путь к файлу .env:Если файл .env не находится в текущем каталоге, вы можете указать путь вручную:

Пример

from dotenv import load_dotenv

load_dotenv(dotenv_path="./config/.env")

Настройка LangSmith (необязательно)

Если вам нужно включить трассировку и отладку цепочки вызовов LangChain, вы можете настроить API-ключ LangSmith:

Пример

os.environ["LANGSMITH_TRACING"] = "true"

os.environ["LANGSMITH_API_KEY"] = getpass.getpass(
    "Введите ваш API-ключ LangSmith: "
)

Создание модели ChatDeepSeek

После установки вы можете использоватьChatDeepSeekдля инициализации модели:

Пример

import os

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()для вызова:

Пример

import os

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файле.

Пример

from langchain_deepseek import ChatDeepSeek

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_deepseek import ChatDeepSeek
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_deepseek import ChatDeepSeek
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_deepseek import ChatDeepSeek
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
Лимит запросов Слишком высокая частота запросов Уменьшите частоту запросов
Ошибка тайм-аута Тайм-аут запроса Увеличьте параметр тайм-аута

Рекомендуемая структура проекта

Структура проекта

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

requirements.txt Пример

Пример

langchain
langchain-deepseek
python-dotenv

Справочная документация

Другие расширения