【Agent2Agent】 公式の A2A のデモアプリのお試し： Python・JavaScript のサンプルを混在させてみる

## はじめに

以下の記事を書いた時に扱った Googleさん公式の A2Aデモアプリ関連の話です。

●【Agent2Agent】 公式の A2A のデモアプリを試してみる（3つのエージェントを組み合わせる） - Qiita
　https://qiita.com/youtoy/items/da42061852bf9ad3b79b

### 今回の内容

上記のお試しでは、[デモアプリの公式情報](https://github.com/google/A2A/tree/main/demo)に書いてあった以下 3つのエージェントの組み合わせを試していて、Python で実装されたものを使っていました。今回は、それ以外のエージェントのサンプルで JavaScript で実装されたものを組み合わせてみます。
※ A2Aクライアントと A2Aサーバーの実装で使われている言語が異なっても、間が A2A を介したやりとりになるので普通に混在させられるはずですが、それを実際に確かめてみました

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/50868/0b803626-540f-4922-857c-649d89b8780a.png)


とりあえず構成に関して、以下の赤枠で囲んだ部分は Python で実装されたもの（過去のお試しで使ったもの）を使い、以下の緑で囲んだ部分は JavaScript で実装されたものを使ってみます。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/50868/a8b0acc1-f341-4219-b442-2e05e81a3ce6.png)


いったん、上記の緑の枠にあたる部分は、以下 1つだけを使って試してみることにしました。

●A2A/samples/js/src/agents/coder at main · google/A2A
　https://github.com/google/A2A/tree/main/samples/js/src/agents/coder


## 実際に試してみる

### ホスト・クライアントの準備

今回の内容を試すのにあたり、Python実装のフロントエンド・ホストなどの部分は、冒頭にも掲載していた以下の記事に書いたやり方で準備しました。

●【Agent2Agent】 公式の A2A のデモアプリを試してみる（3つのエージェントを組み合わせる） - Qiita
　https://qiita.com/youtoy/items/da42061852bf9ad3b79b


記事内の以下の部分まで進めれば OK です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/50868/9a43edea-1b10-49c6-8ed0-ade1583ac63a.png)


### エージェントの準備

エージェントの準備については、以下に記載された手順を用いました。

●A2A/samples/js at main · google/A2A
　https://github.com/google/A2A/tree/main/samples/js

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/50868/bf34d3ed-716f-4d9d-9284-e096c4b9e92a.png)


#### エージェントを起動するまで

進めていく手順の最初は、A2A の公式サンプルのルートで、以下のコマンドを実行します。

```zsh
cd samples/js
npm install
```

さらに、以下のコマンドで環境変数の設定して（※ Gemini の APIキーを一時的に使えるようにした形）、その後にエージェントを起動します。

```zsh
export GEMINI_API_KEY=【Gemini の APIキー】
npm run agents:coder
```

以下のような表示が出れば OK です。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/50868/fe1525a7-c2cf-4739-a2da-2adcbd83d7b3.png)


これで、準備が整いました。


### フロントエンドからエージェントとやりとりする

あとは、ブラウザで http://0.0.0.0:12000/agents にアクセスし、エージェントとして「 localhost:41241 」を追加します。その手順は、[冒頭に掲載していた記事内](https://qiita.com/youtoy/items/da42061852bf9ad3b79b)をご参照ください。


以下ｈエージェントを追加する時の画面のキャプチャです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/50868/495f140f-f3ce-4aea-bd33-ed468da19470.png)


エージェントとのやりとりができる状態になったはずなので、左メニューからチャット用のメニューを選び、そこでエージェントとのやりとりを試します。


#### エージェントとのやりとり

試しに「何ができる？」という内容と「タスクを依頼する際の依頼のやり方について、具体例をいくつか教えて」という内容を送ってみました。

その結果について、得られた返答は以下のとおりです。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/50868/f7bffa9e-ab17-41a0-b163-ce417577f98e.png)


さらに例示された中で、以下を試してみます。

- Coder Agent、1から10までの数字を出力するPythonスクリプトを書いてください。
- Coder Agent、'Dog'という名前のクラスを定義するPythonコードを書いてください。'name'と'breed'の属性を持ち、'bark'という名前のメソッドを持っていて、'Woof!'と出力するようにしてください。

その返答として、以下を得ることができました。

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/50868/9e66f4bf-8934-4a1e-ae34-3d894559e523.png)

![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/50868/08c1a7bb-6018-4efb-8507-f6cb82252956.png)


とりあえず、今回試したかった「A2A の Python用・JavaScript用の公式サンプルを混在させて動作させてみる」という内容は、問題なく動作させられました