Классы конфигурации и ошибок LangChain
Параметры конфигурации RunnableConfig
| Поле | Type | Описание |
|---|---|---|
| configurable | dict | Конфигурация времени выполнения. Наиболее часто используется: thread_id для Checkpointer |
| recursion_limit | int | Максимальная глубина рекурсии (по умолчанию 9999) |
| metadata | dict | Дополнительные метаданные |
| tags | list[str] | Список тегов для фильтрации и группировки трассировок |
| callbacks | list[BaseCallbackHandler] | Обработчики обратных вызовов |
Пример
config = {
"configurable": {"thread_id": "user-001"},
"metadata": {"source": "web"},
"tags": ["production", "chat"],
}
result = agent.invoke(inputs, config=config)
"configurable": {"thread_id": "user-001"},
"metadata": {"source": "web"},
"tags": ["production", "chat"],
}
result = agent.invoke(inputs, config=config)
Классы реализации Checkpointer
| Класс | Путь импорта | Персистентность |
|---|---|---|
| InMemorySaver | langgraph.checkpoint.memory | нет |
| SqliteSaver | langgraph.checkpoint.sqlite | Да |
| PostgresSaver | langgraph.checkpoint.postgres | Да |
Пример
# Память
from langgraph.checkpoint.memory import InMemorySaver
checkpointer = InMemorySaver()
# SQLite
from langgraph.checkpoint.sqlite import SqliteSaver
checkpointer = SqliteSaver.from_conn_string("checkpoints.db")
# PostgreSQL
# from langgraph.checkpoint.postgres import PostgresSaver
# checkpointer = PostgresSaver.from_conn_string("postgresql://...")
from langgraph.checkpoint.memory import InMemorySaver
checkpointer = InMemorySaver()
# SQLite
from langgraph.checkpoint.sqlite import SqliteSaver
checkpointer = SqliteSaver.from_conn_string("checkpoints.db")
# PostgreSQL
# from langgraph.checkpoint.postgres import PostgresSaver
# checkpointer = PostgresSaver.from_conn_string("postgresql://...")
Классы реализации Store
| Класс | Путь импорта | Персистентность |
|---|---|---|
| InMemoryStore | langgraph.store.memory | нет |
| PostgresStore | langgraph.store.postgres | Да |
Пример
from langgraph.store.memory import InMemoryStore
store = InMemoryStore()
store.put(("namespace",), "key", {"data": "value"})
item = store.get(("namespace",), "key")
items = store.search(("namespace",))
store.delete(("namespace",), "key")
store = InMemoryStore()
store.put(("namespace",), "key", {"data": "value"})
item = store.get(("namespace",), "key")
items = store.search(("namespace",))
store.delete(("namespace",), "key")
Общие классы исключений
| Исключение | Source | Описание |
|---|---|---|
| ToolException | langchain.tools | Исключение внутри инструмента. Агент может перехватить его и принять решение заново |
| ImportError | Встроенный в Python | Отсутствует пакет зависимостей. Сообщение об ошибке предложит команду установки |
| ValueError | Встроенный в Python | Ошибка проверки параметров или ошибка конфигурации |
| NotImplementedError | Встроенный в Python | Метод middleware не реализован (например, определён только синхронный, но вызван асинхронно) |
| StructuredOutputError | langchain.agents.structured_output | Ошибки, связанные со структурированным выводом (несоответствие формата, несколько выводов и т. д.) |
| StructuredOutputValidationError | langchain.agents.structured_output | Сбой валидации структурированного вывода |
| MultipleStructuredOutputsError | langchain.agents.structured_output | Модель вернула несколько структурированных выходных данных |
| TimeoutError | Встроенные средства Python / различные SDK | Тайм-аут запроса |
Контрольный список конфигурации LaunchDarkly
| Пункт проверки | Команда/метод |
|---|---|
| Версия Python | python --version (требуется 3.10+) |
| Версия langchain | python -c "import langchain; print(langchain.__version__)" |
| Установка зависимостей | pip list | grep langchain |
| Настройка API-ключа | python -c "import os; from dotenv import load_dotenv; load_dotenv(); print(os.getenv('DEEPSEEK_API_KEY', 'NOT SET')[:10])" |
| Подключение модели | Используйте init_chat_model() для отправки простого запроса для тестирования |
Другие расширенияСправочник по API в этом руководстве основан на LangChain v1.3.0. Поскольку LangChain всё ещё быстро развивается, рекомендуется обращаться к последней официальной документации для получения самой актуальной информации об API.