1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

AI Agentを作るAI Agentを🐤エンジニアが作ってみる

Posted at

目次

  • 結論
  • どれくらい🐤なのか
  • なぜこの検証をしたのか
  • 基本要件
  • 生成結果
  • 生成したAI Agentの動作確認
  • まとめ

結論

🐤レベルでは自然言語で雑に作りたいAI Agentを言うだけでは、

そのまま業務で使える品質のAI Agentを自動生成することはできませんでした

ただ、人が少し手直しすればすぐ動く開発標準に準拠したAI Agentであれば、自動生成はできました。

どれくらい🐤なのか

  • 学士新卒2年目24歳(エンジニア歴は2カ月)
  • クラウドエンジニア(🐤)
  • AWS SAA SOA CLF AIF所持

アイコン.jpg

なぜこの検証をしたのか

私は最近、AWSを中心としたクラウドアーキテクチャを検討するチームに配属されました。
業務上、AI Agentを開発している別チームと連携する機会があり、皆さんがA2Aや開発標準を理解するのに結構苦戦されているのを見て

(AI Agentを自然言語で作れるAI Agentがあったら面白いのでは?)

と前から思っていました。
冬休みが始まり暇だった時間が取れたので、試しに作ってみることにしました。

基本要件

今回はA2Aプロトコルを使った実際に社内の開発標準に合わせて自動生成させたかったため、プロンプトはかなり細かく設定しています。ここに記載しても大丈夫そうなものを一部抜粋して記載します。

長いので折りたたみ

基本要件(構成・アーキテクチャ)

  • a2a-sdk を使用すること
    • HTTP Server に準拠した **Python 製 A2A エージェント(サーバ)**を生成
  • 生成するファイルは明示的に指定
    • 例:__main__.pyagent_executor.py

実装・仕様要件(コードの中身)

※ あくまで今回の検証用の制約です。

起動・基本構成
  • サーバ起動は uvicorn + A2AStarletteApplication を使用
  • ポートは 9999 固定
  • streaming は使用しない(単発応答のみ)
A2Aコンポーネント構成
  • AgentCard / AgentCapabilities / AgentSkill を正しく設定
  • RequestHandlerDefaultRequestHandler
  • TaskStoreInMemoryTaskStore
通信仕様
  • 起動後、GET /.well-known/agent-card.json200 で返ること
  • JSON-RPC で
    POST /method=message/send を投げると応答が返ること
コード生成ルール
  • agent_executor.py指定した import とクラスシグネチャのみ使用
  • execute メソッドの形式を明示的に指定
  • 余計な説明文は出力しない
    • コードとファイル内容のみ出力
  • __main__.py の処理手順を細かく指定
クラス設計ルール
  • agent_executor.py には Executor クラスを1つだけ定義
  • クラス名は必ず具体名にする
    • 例:IrohaNoUtaExecutor(※サンプル)
  • __main__.py では、そのクラスを import して使用
  • YourAgentExecutor などの抽象名・仮名は禁止

細かめに指定しておかないと作る物がバラバラになり安定性に欠けてしていました。
なお、プロンプトは Markdown で記述していましたが、自分が要件を上手く纏めれず、
要件整理が甘く、結果として冗長になってしまいました。
今回上手くいかなかった原因の一つだと思っています。


少しややこしいので、以降は以下の呼び方で統一します。

  • 僕が作ったAI Agent:エージェント
  • エージェントが生成する成果物:AI Agent

生成結果

上記要件をすべてプロンプトに含め、エージェントを実行してみます。
構成は以下の通りです。

  • モデル:Claude 4.5 Sonnet(モデルの賢さにかなり助けられました)

image.png

① エージェントを起動

まず __main__.py を実行し、A2Aサーバーを起動します。

image.png

② AI Agentの生成を依頼

test_agent.py から、
「どんなAI Agentを作ってほしいか」を自然言語で指示します。

今回は雑に、

「いろは歌を歌うA2Aエージェントを作って」

と依頼しました。

image.png

③ AI Agentの生成完了

test_agent.py を実行すると、A2Aサーバーにアクセスし、
エージェントがAI Agentを生成してくれます。

今回は非常にシンプルなAI Agentなので、30秒程度で生成完了しました。
制約をかなり入れているため、要件を減らせばもう少し高速化できそうです。

生成後は、期限付きURLが返却され、
中身は Zip形式でまとめられたAI Agent になっています。

(URLは期限付きですけど一応モザイク)
image.png

ZipファイルはS3バケット内に保存されています。

image.png

生成したAI Agentの動作確認

最後に、エージェントが作成したAI Agentが正しく動くかを確認します。

  • 生成された main.py でサーバーを起動
  • test_agent.py からリクエストを送信

結果としては、エラーが発生しました。

image.png

エラー内容は「必須パラメータが不足している」というもので、
🐤エンジニアでも数秒で修正できるレベルだったため、そこだけ手動で修正しました。

修正後

問題箇所を修正すると、正常に動作するようになりました

image.png

まとめ

何度かプロンプトを変えて試しましたが、
🐤レベルではAI Agentの完全自動生成は現時点では難しいという結論になりました。

ただし、

  • A2Aプロトコル周りの初期実装
  • 定型的で面倒なボイラープレートコード
  • 開発標準に沿った開発

自動で正解一歩手前くらいまで作ってくれるのでそこはいいなと思いました。

開発標準をA2Aに設定した時、AI Agent開発をしているエンジニアは
A2Aプロトコルの扱いや開発標準に少し苦戦している様子が見られました。
そこを自動化できるのであれば、
人が考えるべき部分に集中できる環境作りとしては使える?レベルかな感じました。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?