0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

FoundryにおけるHarnessモジュール:Workflow

0
Posted at

もしこれまで Foundry で単一のエージェントしか触ったことがないなら、この記事では少しだけ先へ進んでみましょう。2つのエージェントを1本のパイプラインにつなぎます。やることはとてもシンプルです。1つ目のエージェントがネットで資料を検索し、2つ目のエージェントが検索結果を自然な文章に要約します。最後に、このワークフローを外部から呼び出すためのコードも紹介します。

全体の流れで1行もオーケストレーション用のコードを書く必要はなく、画面上をクリックしていくだけで完了します。では始めましょう。

ステップ1:まず2つのエージェントを準備する

ワークフローを組む前に、まず「出演者」を用意する必要があります。ワークフロー自体は「誰を先に、誰を後に動かすか」を決めるだけで、実際に作業するのはエージェントです。

1. WebSearchAgent(検索エージェント)を作成する

Foundry ポータルに入り、Agents(エージェント)タブを見つけて、新しいエージェントを作成します。

  • 名前:WebSearchAgent(名前は一度決めると変更できないので、よく考えて入力してください)
  • モデル:デプロイ済みのモデルなら何でも構いません。例えば GPT 系列など
  • Instructions:役割を明確にします。たとえば「あなたはWeb検索アシスタントです。ユーザーの質問に基づいてネット上で資料を検索し、見つけた関連情報をそのまま持ち帰ってください」
  • Tools:Web Search(Web検索)ツールを追加します。これが重要で、これがないとネット検索はできません

設定したら保存します。

2. SummaryAgent(要約エージェント)を作成する

同じ方法でもう1つ作成します。

  • 名前:SummaryAgent
  • モデル:何か1つ選べばOKです
  • Instructions:「あなたは要約アシスタントです。受け取った内容を、簡潔で分かりやすい要点にまとめてください」
  • Tools:検索ツールは不要です。文字を加工するだけの役割です

これで、2つのエージェントが揃いました。

ステップ2:Workflowタブでパイプラインを組む

次に Workflows(ワークフロー)タブへ移動し、Create new workflow(新しいワークフローを作成)をクリックします。すると編成モードを選ぶ画面が表示され、3つの選択肢があります。

3つのモードは何をするのか?

順番に実行(Sequential / 順序編成) ← 今回これを選ぶ

いわばリレー方式です。A が終わったら結果を B に渡し、B が終わったら C に渡す……というように、一直線に最後まで進みます。誰が先で誰が後かは最初に固定され、エージェント側に選択の余地はありません。手順が明確で、前のステップが次のステップの土台になる場面に向いています。今回の「先に検索して、あとで要約する」は典型的な順序型の処理です。

Human-in-the-loop / 人が介在する編成

名前の通り、処理の途中に「人」が入ります。エージェントはある段階で止まり、あなたの判断を待ちます。たとえば承認、確認、追加情報の入力などです。あなたが承認して初めて次へ進みます。承認フロー、案件処理、コンプライアンス審査のような、人による確認が必要な高リスクな場面に適しています。要するに、AI に完全に任せない方式です。

Group chat / グループチャット編成

こちらは賑やかです。複数のエージェントを1つの「グループ」に入れて、同じテーマについて一緒に議論させます。発言し合い、補足し合い、ときには議論もしながら、最終的に結果をまとめます。固定的な順番処理ではなく協調型です。複数の役割が異なる視点からぶつかり合う必要があるタスク、たとえば企画レビューやブレインストーミングに向いています。

今回は「検索してから要約する」だけなので、順番に実行(Sequential) を選ぶのが最適です。

ステップ3:ノードをつなぐ

順序モードを選ぶと、キャンバスが表示され、最上部に Start(開始)ノードがあります。ここからは接続作業です。

  1. Start ノードの下にあるプラス(+)をクリックする

    メニューが表示され、いくつかのノード種類が出ます。Agent(エージェント) を選びます。

  2. 一番下の「次のノード」で対象を選ぶ

    既存のエージェントを検索するよう求められるので、WebSearchAgent を入力して選択します。これで最初の役割は検索エージェントに渡されます。

  3. 2つ目のエージェントを設定する

    WebSearchAgent を追加すると、2つ目のエージェント用の編集欄が表示されます。ここで SummaryAgent を選び、検索結果を受け取って要約させます。

  4. 仕上げ

    SummaryAgent の「次のノード」では、今度はエージェントではなく End(終了) を選びます。これでパイプライン全体が閉じます。

    Start ──▶ WebSearchAgent ──▶ SummaryAgent ──▶ End
    

保存を忘れないでください。Foundry は自動保存されないので、変更のたびに手動で Save を押す必要があります。押し忘れると、作業が無駄になります。

ステップ4:まずは画面上で試してみる

保存したら Run Workflow(ワークフローを実行) をクリックし、右側のチャット欄で適当に質問してみましょう。たとえば「最近のAIニュースを調べて」と入力します。すると WebSearchAgent が先に動いて検索し、そのあと SummaryAgent が結果を要約してくれるはずです。各ステップが順に点灯して進めば、パイプラインは正常に動いています。

最後に:外部からコードでこのワークフローを呼び出す

画面上で動かせるようになっただけでは第一歩です。実際に使うには、自分のプログラムから呼び出せる必要があります。

using Azure.AI.Projects;
using Azure.AI.Projects.OpenAI;
using Azure.Identity;
using OpenAI;
using OpenAI.Responses;
#pragma warning disable
var arr = File.ReadAllLines("C:/gpt/FoundryAgentWebSearch.txt");
var tenantId = arr[0];
var clientId = arr[1];
var clientSecret = arr[2];
var endpoint = arr[3];
var credential = new ClientSecretCredential(
    tenantId: tenantId,
    clientId: clientId,
    clientSecret: clientSecret);
const string agentName = "SummaryWorkflow";
const string userMessage = "AgentHarness是什么";
var projectClient = new AIProjectClient(endpoint: new Uri(endpoint), tokenProvider: credential);
var conversation = projectClient.ProjectOpenAIClient.GetProjectConversationsClient().CreateProjectConversation();
var agentReference = new Azure.AI.Extensions.OpenAI.AgentReference(name: agentName);
var responseClient = projectClient.ProjectOpenAIClient.GetProjectResponsesClientForAgent(agentReference, conversation.Value.Id);
ResponseResult response = responseClient.CreateResponse(userMessage);
Console.WriteLine(response.GetOutputText());

(Translated by GPT)

元のリンク:https://mp.weixin.qq.com/s/Qdkc6uZzJ_y98jO8GeEoDw?token=639931501&lang=zh_CN&wt.mc_id=MVP_325642

0
0
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
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?