aws-samples / aws-samples/generative-ai-use-cases

fix(agent-builder): システムプロンプトの AI 生成で組み込みツールが提案対象に含まれない

Open
#1,675 0 comments 0 reactions 0 assignees View on GitHub
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

Open the contributing 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.