概要
https://tech.iimon.co.jp/entry/2025/12/09
詳細内容
## AIコーディングエージェントの理解を深めるために自作してみた
https://tech.iimon.co.jp/entry/2025/12/09
AIコーディングエージェントの内部動作を理解するため、Go言語とGemini APIを用いてファイル読み書き機能を持つ最小限のコマンドラインエージェント「CCA」を自作する実践的なプロセスと、そこから得られた知見を解説します。
**Content Type**: 📖 Tutorial & Guide
**Language**: ja
**Scores**: Signal:4/5 | Depth:4/5 | Unique:3/5 | Practical:4/5 | Anti-Hype:5/5
**Main Journal**: 78/100 | **Annex Potential**: 76/100 | **Overall**: 80/100
**Topics**: [[AIコーディングエージェント, Function Calling, Go言語, Gemini API, プロンプトエンジニアリング]]
iimonのCTOであるもりご氏が、AIコーディングエージェントの内部構造を理解するため、Go言語とGemini APIを用いてファイル読み書き機能を持つコマンドラインエージェント「CCA」を自作しました。既存のAIツールをより効果的に使うには、その仕組みを知ることが重要だという考えに基づいています。
記事では、エージェントの中核技術である「Function Calling」を解説します。これは、LLMが外部ツールを呼び出す意図を構造化された形式で出力し、プログラムがツールを実行してその結果をLLMにフィードバックする連携メカニズムです。CCAの処理フローは、要件を受けたLLMがFunction Callingでツールを指定し、プログラムが実行、結果をメッセージ履歴に追加してLLMとの対話を繰り返すというものです。テキストレスポンスが返るまで(または最大5回のループまで)このプロセスを続けます。
実装は3段階で進められました。まずGemini APIとの連携を確認し、次にファイル読み込み機能(`read_file`)を持つツールを追加。これにより、LLMは指定されたファイルを読み込み、内容を要約できるようになります。`calc.go`ファイルの要約例を通じて、Function Callingによるツール利用とLLMの応答が実演されます。
続いて、ファイル書き込み機能(`write_file`)を持つツールを追加。セキュリティのため、書き込み対象を現在のディレクトリ以下のファイルに制限するパス検証機能が組み込まれています。プロンプトを調整し、LLMが確認なしで`write_file`ツールを使用するように指示することで、`calc.go`に掛け算関数を追加するタスクをシームレスに実行できることを示します。LLMは`read_file`で既存コードを把握後、`write_file`でコードを追記するという思考プロセスを経てタスクを完了しました。
自作を通じて著者が得た知見は多岐にわたります。エージェントの動作が「頑張り」ではなく、ツールの選択、実行、結果フィードバックという試行錯誤の繰り返しであると理解できたと述べています。特に、適切なツール群と、LLMが迷わないよう工夫されたプロンプト設計が、エージェントの挙動を大きく左右することを実感したと強調。ツールの説明は詳細かつ明確であるほどLLMが正確に利用できるとし、具体的な記述の重要性を示唆しています。また、ユーザー側は曖昧な指示を避け、最初から具体的なファイルパスや目的を指定することで、エージェントがより効率的に機能すると推奨しています。この実践的な検証は、AIコーディングエージェントの設計と利用の両面で深い洞察を提供します。