aws-samples / aws-samples/generative-ai-use-cases
fix(agent-builder): システムプロンプトの AI 生成で組み込みツールが提案対象に含まれない
- Dominant language
- TypeScript
- Stars
- 1.4k
- Forks
- 433
- Avg merge
- 2h 35m
- Merged PRs (30d)
- 1
Description
### 概要
エージェントビルダーの「AI により生成する」は、Agent の名前と説明から**システムプロンプトと MCP サーバーの組み合わせ**を提案します。しかし提案の対象が MCP サーバーに限られており、**ツール設定の組み込みツール (コード実行など) が考慮されません**。
このため、組み込みツールを使いたい意図を説明に書いても、AI は MCP サーバーの中から代替を選んでしまいます。
### 再現手順
1. エージェントビルダーで新規 Agent を作成する
2. 名前と説明に、組み込みツールを使う意図を書く
- 名前: `google検索エージェント`
- 説明: `ブラウザツールでGoogleの検索を代行してくれるエージェント`
3. 「AI により生成する」を実行する
**実際の結果**: MCP サーバーの `tavily-search` が選択される。ツール設定のチェックボックスは変化しない。
**期待する結果**: 説明の意図に沿った組み込みツールが提案され、対応するチェックボックスが有効になる。
### 原因
`packages/web/src/prompts/agentSystemPromptGenerator.ts` の `AgentPromptParams` が受け取るのは名前・説明・利用可能な MCP サーバーのみで、組み込みツールの情報が含まれていません。
```ts
export interface AgentPromptParams {
name: string;
description: string;
availableMCPServers?: MCPServerForPrompt[];
}
```
生成されたプロンプトにも MCP サーバーの一覧しか記載されないため、AI は組み込みツールの存在を知りません。
また `packages/web/src/components/agentBuilder/AgentForm.tsx` では、提案結果が MCP サーバー欄にのみ反映されます。
```ts
useEffect(() => {
if (suggestedMCPServers.length > 0) {
setFormData((prev) => ({ ...prev, mcpServers: suggestedMCPServers }));
}
}, [suggestedMCPServers]);
```
### 提案する修正
既存の MCP サーバー提案と同じマーカー方式を踏襲し、組み込みツールも提案対象に含めます。
1. `AgentPromptParams` に利用可能な組み込みツールを追加する
```ts
export interface BuiltInToolForPrompt {
id: string; // 例: codeExecution
name: string; // 表示名
description: string; // どのような場合に使うか
}
```
2. 生成プロンプトに組み込みツールの一覧を記載し、`` のようなマーカーで選択結果を出力させる (既存の `` と同じ形式)
3. `usePromptGeneration` で選択結果を解析し、`suggestedBuiltInTools` として返す
4. `AgentForm` で対応するチェックボックスを有効化する
利用可能な組み込みツールの一覧は `AgentForm` 側から渡す形にし、**デプロイ設定で有効になっているものだけを列挙**します。これにより、組織のポリシーで無効にしているツールが提案されることを防げます。
### 補足
本機能は #1358 (Auto-generate System Prompts in Agent Builder) で追加されたものです。追加時点ではツール設定の組み込みツールが少なかったため、MCP サーバーのみを対象とする設計で十分だったと理解しています。
組み込みツールの選択肢が増えるほど、この不整合の影響は大きくなります。関連する提案として以下があります。
- #1670 / #1673 Web Search ツールの追加
- #1674 Browser ツールの追加
いずれも組み込みツールをツール設定に追加するもので、マージされた場合は本 Issue の対応対象に含めることになります。本 Issue はそれらとは独立した仕組みの改善として扱えるため、別途起票しました。
### ご相談したい点
1. **提案結果の反映方法**
MCP サーバーは現在、提案結果でフォームの値を上書きしています。組み込みツールも同様に上書きする想定でよいでしょうか (利用者が手動でオフにした直後に上書きされない配慮が必要か)。
2. **既存のマーカーとの互換性**
`` を追加する形を想定していますが、出力フォーマットの変更方針についてご意見があればご指示ください。
方針についてご意見をいただけますと幸いです。合意が得られ次第、PR を作成します。
Contributor guide
Research direction
Start with packages/web/src/prompts/agentSystemPromptGenerator.ts and its AgentPromptParams, then trace usePromptGeneration and the AgentForm.tsx useEffect that applies suggested MCP servers. Follow the existing marker parsing and form-update flow to include only deployment-enabled built-in tools. Done means matching built-in tools are proposed and their checkboxes are reflected without breaking existing MCP server suggestions.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- typescript
- Domain
- ai, frontend
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Active
- Clarity
- Mostly clear
- Newbie friendliness
- 48/100