API промежуточного ПО LangChain
Методы-хуки базового класса AgentMiddleware
| Метод | Сигнатура | Частота выполнения | Возвращаемое значение |
|---|---|---|---|
| before_agent | (state, runtime) → dict or None | 1 раз | Обновление состояния или None |
| abefore_agent | (state, runtime) → dict or None | 1 раз | Обновление состояния или None |
| before_model | (state, runtime) → dict or None | За итерацию | Обновление состояния или None |
| abefore_model | (state, runtime) → dict or None | За итерацию | Обновление состояния или None |
| wrap_model_call | (request, handler) → ModelResponse или AIMessage | За итерацию | Результат вызова модели |
| awrap_model_call | (request, handler) → ModelResponse или AIMessage | За итерацию | Результат вызова модели |
| after_model | (state, runtime) → dict or None | За итерацию | Обновление состояния или None |
| aafter_model | (state, runtime) → dict or None | За итерацию | Обновление состояния или None |
| wrap_tool_call | (request, handler) → ToolMessage или Command | На каждый вызов инструмента | Результат выполнения инструмента |
| awrap_tool_call | (request, handler) → ToolMessage или Command | На каждый вызов инструмента | Результат выполнения инструмента |
| after_agent | (state, runtime) → dict or None | 1 раз | Обновление состояния или None |
| aafter_agent | (state, runtime) → dict or None | 1 раз | Обновление состояния или None |
Обзор декораторов
| Декоратор | Parameters | Описание |
|---|---|---|
| @before_agent | state_schema, tools, can_jump_to, name | Выполняется перед запуском агента |
| @after_agent | state_schema, tools, can_jump_to, name | Выполняется после завершения агента |
| @before_model | state_schema, tools, can_jump_to, name | Выполняется перед вызовом модели |
| @after_model | state_schema, tools, can_jump_to, name | Выполняется после вызова модели |
| @wrap_model_call | state_schema, tools, name | Перехват выполнения модели |
| @wrap_tool_call | tools, name | Перехват выполнения инструмента |
| @dynamic_prompt | Отсутствует | Динамически генерировать системный промпт |
Ключевые атрибуты ModelRequest
| Attribute | Type | Описание |
|---|---|---|
| model | BaseChatModel | Текущая модель |
| messages | list[AnyMessage] | Список сообщений (исключая системные сообщения) |
| system_message | SystemMessage или None | Текущее системное сообщение |
| tools | list | Список доступных инструментов |
| tool_choice | Any | Стратегия выбора инструмента |
| response_format | ResponseFormat или None | Формат структурированного вывода |
| state | dict | Текущее состояние агента |
| runtime | Время выполнения | Контекст выполнения |
Метод override() класса ModelRequest используется для создания нового изменённого запроса:
Пример
new_request = request.override(
model=different_model,
system_message=SystemMessage(content="new prompt"),
tools=[new_tool],
)
model=different_model,
system_message=SystemMessage(content="new prompt"),
tools=[new_tool],
)
Структура ModelResponse
| Attribute | Type | Описание |
|---|---|---|
| result | list[BaseMessage] | Список сообщений, возвращаемый моделью |
| structured_response | Any или None | Результат структурированного вывода |
Специальное возвращаемое значение ExtendedModelResponse
| Attribute | Описание |
|---|---|
| model_response | Базовый ModelResponse |
| command | Необязательный объект Command для дополнительных обновлений состояния |