API сообщений LangChain
Все типы сообщений
| Type | role | type | Ключевые атрибуты | Описание |
|---|---|---|---|---|
| HumanMessage | user | human | content | Сообщение пользователя |
| AIMessage | assistant | ai | content, tool_calls, usage_metadata | Ответ ИИ |
| AIMessageChunk | assistant | ai | content (инкрементальный) | Фрагмент токенов потокового вывода |
| SystemMessage | system | system | content | Системная инструкция |
| ToolMessage | tool | tool | content, tool_call_id, name | Результат выполнения инструмента |
| RemoveMessage | - | remove | id | Удалить указанное сообщение |
Типы ContentBlock (мультимодальное содержимое)
| Type | Описание | Сценарии использования |
|---|---|---|
| PlainTextContentBlock | Обычный текст | Обычный текст |
| ImageContentBlock | Изображение (base64 или URL) | Ввод изображения для мультимодальных моделей |
| AudioContentBlock | Аудио | Голосовой ввод |
| VideoContentBlock | Видео | Ввод видео |
| FileContentBlock | Файл | Ввод документа |
| ToolCall | Запрос вызова инструмента | Модель запрашивает вызов инструмента |
| ServerToolCall | Вызов инструмента на стороне сервера | Вызов встроенного/MCP-инструмента |
Общие вспомогательные функции
| Функция | Описание | Сигнатура |
|---|---|---|
| trim_messages() | Обрезать историю сообщений, чтобы уместить в контекстное окно | trim_messages(messages, *, max_tokens, strategy, token_counter, include_system, start_on) |
Общие примеры использования
Примеры
from langchain.messages import (
HumanMessage, AIMessage, SystemMessage, ToolMessage, trim_messages
)
# Создать сообщение
human = HumanMessage(content="Привет")
system = SystemMessage(content="Ты — ассистент")
ai = AIMessage(content="Привет! Чем я могу тебе помочь?")
tool = ToolMessage(content="Результат", tool_call_id="call_1", name="my_tool")
# Сокращение
msg1 = ("user", "Привет") # Кортеж
msg2 = {"role": "user", "content": "Привет"} # Словарь
# Атрибуты сообщения
print(human.type) # human
print(human.content) # Привет
print(ai.tool_calls) # [] или [ToolCall]
# Обрезать сообщения
trimmed = trim_messages(
messages, max_tokens=1000, strategy="last",
token_counter=model, include_system=True,
)
HumanMessage, AIMessage, SystemMessage, ToolMessage, trim_messages
)
# Создать сообщение
human = HumanMessage(content="Привет")
system = SystemMessage(content="Ты — ассистент")
ai = AIMessage(content="Привет! Чем я могу тебе помочь?")
tool = ToolMessage(content="Результат", tool_call_id="call_1", name="my_tool")
# Сокращение
msg1 = ("user", "Привет") # Кортеж
msg2 = {"role": "user", "content": "Привет"} # Словарь
# Атрибуты сообщения
print(human.type) # human
print(human.content) # Привет
print(ai.tool_calls) # [] или [ToolCall]
# Обрезать сообщения
trimmed = trim_messages(
messages, max_tokens=1000, strategy="last",
token_counter=model, include_system=True,
)