🤖
Azure AI Foundry のエージェント機能を使ってウェブ検索を行う(TypeScript)
概要
Azure AI Foundry のエージェント機能を使うためには、@azure/ai-projects
というパッケージを利用する。
Github で言うと、以下のディレクトリに該当する。
公式ドキュメントを見ようとしたものの、ドキュメントの量が膨大でよく分からなかったため、コードを書きながら利用方法を探ってみた。
リファレンス
読んでおくとよさそうな情報。
まずは以下のURLで表示される README の内容をさらっと見るのが良さそう。
それから、こちらのディレクトリにサンプルが格納されている。
エージェントの基本的な使い方はこちら。
注意事項
この記事を執筆している時点では、エージェント機能はまだプレビュー版であることに注意。
利用方法
以下、コードを書きながら @azure/ai-projects
の使い方を探っていく。
ここでは、ちょっとしたウェブ検索をどう実装するかを調査。
AzureDefaultCredentials 認証
まずは認証を通す必要がある。
import { AIProjectClient } from '@azure/ai-projects';
import { DefaultAzureCredential } from '@azure/identity';
const client = new AIProjectClient(
"ここにエンドポイント",
new DefaultAzureCredential(),
);
未認証状態だと AIProjectClient
のインスタンス化に失敗する。
自分の場合、Azure CLI を使って認証状態を作った。(適切な権限を持った Microsoft アカウントが必要)
他にも、環境変数による認証などもサポートされている。
エージェント操作
エージェントの作成・取得・削除。
// 生成
const agent = await client.agents.createAgent('モデル名');
// 取得
const agent = await client.agents.getAgent(agent.id);
// 削除
client.agents.deleteAgent(agent.id)
公式のサンプルコードを見る限り、処理を終えるたびにエージェントは削除するべき?
スレッド操作
スレッドの作成・取得・削除
// 作成
const thread = await client.agents.threads.create();
// 一覧取得
const threads = client.threads.list();
// 削除
await client.agents.threads.delete(thread.id);
スレッド作成時にIDを指定したい気もする…。
メッセージ作成と実行
メッセージを作成し、チャットを開始。
// メッセージ作成
const message = await client.agents.messages.create(
thread.id
'user',
'明日の東京の天気は?',
);
// 実行!
const run = await client.agents.runs.createAndPoll(thread.id, agent.id, {
pollingOptions: {
intervalInMs: 2000,
},
onResponse: (response) => {
console.log({ response });
},
});
実行に成功すると、エージェントからの返答が JSON で返ってくる。
Discussion