patterns について
patternsは、Langroidでエージェントやタスクを構築する開発者向けの設計パターン索引です。ツール処理、タスク制御、バッチ処理、MCP連携、出力管理などの実装例を含む文書を参照できます。
主な機能
- 01エージェントとタスクのパターン
- 02状態管理・検証付きツールハンドラー
- 03タスク終了の制御
- 04並行バッチ処理
- 05MCPツール連携
- 06出力の抑制モード
活用シーン
- 01エージェントタスクから構造化結果を返す
- 02ツール出力を検証してエラー時に再試行
- 03複数の入力を並行処理
- 04LangroidエージェントをMCPツールに接続
MCP 対応
Langroidエージェントを外部MCPサーバーに接続し、すべてまたは選択したMCPツールを使うパターンを説明します。LLMに渡す前にツール結果を加工する方法も扱います。
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ pchalasani/ claude-code-tools --skill patternsインストール後、Claude Code で/patternsを入力して読み込まれたか確認します。
同梱ファイル
SKILL.md と一緒にインストールされる参考資料やスクリプト。
agent-handler-validation-with-state.mdagent-tool-handler-with-state.mddone-sequences-specific-tool.mdmcp-tool-integration.mdquiet-mode.mdrun-batch-tasks.mdtask-return-tool.md詳細
Langroid のパターン
手順
以下は、カテゴリ別にまとめた設計パターンのインデックスです。各項目では、実装したい内容と、完全なコード例を含むドキュメントへのリファレンスを示しています。
このインデックスを確認して必要なパターンを見つけ、該当するドキュメントを参照してください。
エージェントとタスクの基本
-
タスクからツールを直接返す
単一のツール(ToolMessage)を備えた Langroid エージェントを作成し、タスクでラップして、タスクの実行時にその ToolMessage が直接返されるようにします。構造化された応答を返すシンプルな LLM エージェントが必要な場合に、このパターンを使用します。
- リファレンス:
./task-return-tool.md
- リファレンス:
ツールハンドラー
-
エージェント上のステートフルなハンドラー
ステートフルなツールハンドラーを、ToolMessage 内ではなく、エージェントのメソッドとして定義します。次の場合に、このパターンを使用します:(a)ツールハンドラーが外部操作(API 呼び出し、データベースクエリ、ファイル I/O)を実行する必要がある場合、(b)再試行の間で状態(例:失敗回数)を追跡する必要がある場合、(c)ハンドラーがエージェントレベルのリソース(接続、設定)にアクセスする必要がある場合、または(d)Langroid によってエラーを LLM に自動的に戻し、自己修正させたい場合です。メソッド名は ToolMessage の
requestフィールドと一致させる必要があります。エラーの場合は文字列(LLM に伝わり、再試行できます)を返し、正常終了の場合は DoneTool(content=result) を返して終了します。- リファレンス:
./agent-tool-handler-with-state.md
- リファレンス:
-
検証を行うハンドラー
エージェントの状態と照合してツールの出力を検証してから、受け入れます。次の場合に、このパターンを使用します:(a)LLM のツール出力で、入力に含まれる特定の内容(例:プレースホルダー、必須フィールド)を保持する必要がある場合、(b)検証に失敗した場合に自動で再試行させたい場合、(c)ツールの出力を、LLM が受け取ったコンテキストと比較する必要がある場合です。入力コンテキストを状態として保持し、ツールの出力を検証するカスタムエージェントクラスにハンドラーメソッドを定義します。再試行する場合はエラー文字列を、成功した場合は AgentDoneTool を返します(注:DoneTool ではなく AgentDoneTool を使用してください)。ハンドラーがタスク終了前に実行されるように、
done_sequences=["T[ToolName], A"]を使用します。- リファレンス:
./agent-handler-validation-with-state.md
- リファレンス:
タスク制御
-
特定のツールで終了する
特定のツールが呼び出された場合にのみ、タスクを終了します。ツールが出力された時点ですぐに終了するには
TaskConfig(done_sequences=["T[ToolName]"])を使用し、ツールが出力され、エージェントによって処理された後に終了するにはTaskConfig(done_sequences=["T[ToolName], A"])を使用します。エージェントに複数のツールがあるものの、特定のツールだけでタスクを終了させたい場合に、このパターンを使用します。- リファレンス:
./done-sequences-specific-tool.md
- リファレンス:
-
バッチ処理
run_batch_tasks()を使用して、同じタスクを複数の入力に対して並行して実行します。次の場合に、このパターンを使用します:(a)同じエージェント/タスクのロジックで多数の項目を処理する必要がある場合、(b)asyncio やスレッドを手動で扱わずに並列処理したい場合、(c)項目間の状態を分離する必要がある場合(各項目には、新しいメッセージ履歴を持つクローン化されたエージェントが割り当てられます)、(d)エージェントを手動で作成しすぎて接続を使い果たすのを避けたい場合です。各項目にはクローン化されたタスクとエージェントが割り当てられ、それぞれ独立して実行されます。結果は順番どおりに収集されます。並行処理を制限する batch_size をサポートしています。- リファレンス:
./run-batch-tasks.md
- リファレンス:
統合と出力
-
MCP ツールの統合
Langroid エージェントで、Claude Code のような外部 MCP サーバーの MCP(Model Context Protocol)ツールを使用できるようにします。次の場合にこのパターンを使用します:(a)Claude Code のファイル編集ツール(Read、Edit、Write)をエージェントで使用したい場合、(b)stdio トランスポートを介して任意の MCP サーバーに接続する必要がある場合、(c)MCP サーバーのすべてのツール、または特定のツールだけを選択して有効にしたい場合、(d)LLM に返す前に MCP ツールの結果をカスタマイズ/後処理したい場合。特定のツールには
@mcp_toolデコレーターを、すべてのツールにはget_tools_async()を使用します。- 参照:
./mcp-tool-integration.md
- 参照:
-
静音モード
独自のカスタム進捗メッセージを表示しながら、Langroid エージェントの冗長な出力(ストリーミング、ツールの JSON、中間メッセージ)を抑制します。次の場合にこのパターンを使用します:(a)マイルストーンのイベントのみを表示する、すっきりした CLI 出力にしたい場合、(b)複数ステップのワークフローを実行し、エージェントの出力を抑えながら進捗を表示したい場合、(c)スレッドセーフな出力制御が必要な場合。
quiet_mode()コンテキストマネージャーでエージェントのtask.run()呼び出しを囲み、そのコンテキストの外で独自のメッセージを表示します。- 参照:
./quiet-mode.md
- 参照: