LLM Agent パターン (Tool 呼び出しループ)
LLM を中心に据え、外部 tool・記憶・検索と往復しながらタスクを遂行させる構成の総称。本 wiki の llm-agent クラスタ全体の背骨。
基本ループ
観測 → LLM が推論 → tool_call を発行 → tool 実行 → 結果を観測 を回答が妥当になるまで繰り返す。tool 呼び出しの標準化が model-context-protocol、その実装フレームワークが langchain-langgraph や pydantic-ai。
ワークフロー型 (固定パイプライン) の例
agent の自律ループまで使わず、プロンプト連鎖で十分なケースも多い。
- zenncast / dify clone: Zenn のトレンド記事を fetch → 各記事を
SUMMARY_PROMPTで要約 → 全要約をSCRIPT_PROMPTでラジオ台本化。3000 文字程度なら分割せず 1 回の生成で出せる。プロンプトの「構成」一つ一つが section に対応。 - 旅程プランナー: ①観光地選定(検索)→ ②スケジュール作成(場所=node・移動=edge のグラフ+営業時間/時刻表の制約から巡回ルート生成)。
プロンプト設計の論点
- キャラクター/ペルソナ設定: 物語生成 (ai-novelist = AIのべりすと) では姓名・口癖・行動原理・トラウマ等の詳細設定をプロンプトに与える。llm-agent-pattern のスキーマ駆動コンテキストと地続き。
- 構造化出力: ゲーム (“LLM に厨房スタッフを動かす overcook”) では LLM に
(move <場所>)のような命令を発行させる。自然言語ではなくパース可能な action 表現を返させるのが要点。 - ChatGPT のプロンプトを Lisp で書く等、形式的記法でプロンプトを構造化する試みもある。
関連
LLM Agent の長期記憶 (Entity Memory)
stateless な LLM に会話をまたいだ記憶を持たせる仕組み。langchain-langgraph の LangGraph を題材にした実装パターン。
Checkpointer と Store
LangGraph は 2 種類の永続化機構を分ける。
- Checkpointer (
BaseCheckpointSaver): グラフ状態の snapshot を会話スレッド単位 (thread_id) で保存。短期記憶=会話の継続。 - Store (
BaseStore): スレッドをまたいだ KVS。namespace / key / value 構造で、batch(Iterable[Op])(GetOp | SearchOp | PutOp | ListNamespacesOp)で操作。embedding index を張ればstore.search(ns, query=...)で意味検索も可能。
旧 langchain.memory.entity.ConversationEntityMemory (v0.2 系) は deprecated で、long-term memory agent tutorial 方式に移行。
Knowledge Triple 抽出
agent が会話から情報を knowledge triple (subject, predicate, object) の形で抽出し、tool (save_recall_memory) 経由で vector store に永続化する。検索時は会話履歴を embed して search_recall_memories で類似記憶を引き、システムプロンプトの <recall_memory> に詰めて agent に渡す。
例: “My friend John likes Pizza” →
{subject: Alice, predicate: has a friend, object_: John},
{subject: John, predicate: likes, object_: Pizza}。
次の会話で “What food should I bring to John’s party?” に対し記憶を読み出して回答。
グラフ構成は load_memories → agent → (tool_calls あれば) tools → agent のループ(llm-agent-pattern の典型形)。
スキーマ駆動コンテキスト (GAI as a Service)
厳密なオントロジー/知識グラフを作るのが目的ではなく、あくまで LLM に適切なコンテキストを渡すための仕組みという立場。スキーマ(スキーマ名+JSON schema 属性)とデータ(名前+スキーマに沿った属性)を持ち、生成コンテンツの一貫性を保つ。
関連
- llm-agent-pattern(記憶検索も embedding ベース)
- model-context-protocol
- _moc-ai-robotics
RAG / Agentic RAG
LLM の弱点である知識の固定性・hallucination を、外部文書を検索してプロンプトに注入することで補う手法。
素朴な RAG
2 フェーズで構成される。
- 蓄積: 文書群を embed して vector store に保存。
- 検索 (推論時): クエリを embed → vector store で類似検索 → 関連 docs をプロンプトに含めて回答生成。
固定的な「embed → similarity search → stuff into prompt → answer」の一方向パイプライン。
Agentic RAG
検索ステップを LLM agent に委ね、ループで回す発展形。
- クエリを改善して embed し agent に投げる。
- agent が判断: 詳細化が必要なら
tool_callで補足情報を取得しプロンプトを生成、不要ならそのままプロンプト生成。 - 回答が妥当になるまでループ。
素朴な RAG が静的検索なのに対し、Agentic RAG は検索の要否・追加 tool 呼び出し・再検索を llm-agent-pattern のループ内で動的に決める点が違い。実装には langchain-langgraph のようなフレームワークが使われる。
関連
- llm-agent-pattern(長期記憶も embedding 検索ベース)
- nlp-fundamentals
- _moc-ai-robotics