LangChain Messages API


すべてのメッセージタイプ

タイプroletype主要プロパティ説明
HumanMessageuserhumancontentユーザーメッセージ
AIMessageassistantaicontent, tool_calls, usage_metadataAI 応答
AIMessageChunkassistantaicontent(増分)ストリーミング出力のトークン断片
SystemMessagesystemsystemcontentシステム指示
ToolMessagetooltoolcontent, tool_call_id, nameツール実行結果
RemoveMessage-removeid指定メッセージの削除

ContentBlock タイプ(マルチモーダルコンテンツ)

タイプ説明使用シーン
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,
)
その他の拡張