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

第二篇:Microsoft Agent Frameworkの主役——Agent

0
Posted at

Azure OpenAI + Microsoft Agentsで“人間のような”AIを作る
最近、Azure OpenAIでAI開発を進める中で、ある現実的な課題に気づきました。

モデル自体は非常に強力なのですが、その都度ゼロから「人間の振る舞い」を教える必要があるのです。

そこでMicrosoft Agent Frameworkの利用を始めました。実際に触ってみて、最も印象的だった感想は次の一言に尽きます:

これは「モデルを呼び出す」ためのものではなく、「AIを育てる」ためのものだ、ということです。


まずは原理の話から

  • 従来、私たちは大規模モデルをどう使っていたか?

現実的なプロンプト例:

"あなたはC#プログラマーです……"
"SOLID原則に従ってください……"
"完全なコードを書いてください……"
"コメントも付けてください……"

こうした一連のプロンプトをモデルに渡していました。


問題点:

  • 毎回「あなたは誰ですか」という説明を大量に書かなければならない
  • マルチターンの会話がすぐに混線しやすい
  • ストリーミング出力をしたい場合、トークンの分割処理を自分で実装しなければならない
  • 業務が複雑になるとプロンプト自体が破綻し始める

本質として――
手作業でとても不安定な「擬似エージェント」を作っている状態なのです。


  • Agent Frameworkは何をしてくれるのか?

Agent Frameworkの役割は、実のところ非常にシンプルです。

以下のような要素を分離し、固定化してくれます:

  1. あなたは誰か(役割)

 例:

 - あなたは経験豊富なC#エンジニア
 - 企業規模のコーディング規範を守る
 - ゴミコードは書かない

 これらは毎回プロンプトで書くものではなく、Agentの「人格設定」として固定されます。

  1. どのように話すか(行動ルール)

 - 中国語で話す
 - 無駄話はしない
 - コードは一度にすべて出力する
 - まず設計方針を示してからコードを書く

 これらは業務規範に近く、「一度限りの指示」という形ではありません。

  1. 過去の会話内容を覚えている

 Agentがコンテキストを管理してくれるため、あなたが:

 - 過去メッセージを自力で繋ぎ合わせたり
 - system / user / assistantの区別を手動で管理したり

 という手間がなくなります。「この人とずっと対話している」感覚で使えます。

  1. ストリーミング出力をデフォルトでサポート

 このため、自身で調査・実装が不要です:

 - トークン管理
 - 部分的レスポンスの制御
 - コールバック処理

 Agentは最初から「生成しながら返す」ことをサポートしています。


  • もっと分かりやすく言うと

公式な定義ではありませんが、例えるなら:

Agentは、すでに研修済みのAI同僚です。

  • モデル=彼の“脳”
  • Instructions=彼の“入社研修+業務マニュアル”
  • Agent=“その人、そのもの”

今後、あなたがするのは「モデルを呼び出す」ことではありません。

「王さん、会員登録モジュール書いてくれる?」と“話しかけるだけ”です。


  • Azure OpenAIはここでどういう役割?

  • Azure OpenAI:エンタープライズグレードの安定したモデルサービスを提供

  • Agent Framework:そのモデルを「どのように使うか」を担当

つまり――
一方が計算リソースとモデルを担い、もう一方が活用方法=“業務のやり方”を担当しています。


コードサンプル

using Azure.AI.OpenAI;
using Microsoft.Agents.AI;
using Microsoft.Extensions.AI;
using System.ClientModel;

class Program
{
    static async Task Main()
    {
        var agent = CreateAzureAgent();
        await foreach (var message in agent.RunStreamingAsync(
            "会員登録用のエンティティクラスを定義して、Serviceも実装してください。"))
        {
            Console.Write(message);
        }
    }

    static AIAgent CreateAzureAgent()
    {
        // ローカルファイルからAzure OpenAIの設定を読み込む
        var lines = File.ReadAllLines("C:/gpt/azure_key.txt");
        var deploymentName = lines[0];
        var endpoint = lines[1];
        var apiKey = lines[2];
        var credential = new ApiKeyCredential(apiKey);

        // ここがAIの「人格設定」部分
        var instructions = """
        あなたは経験豊富なC# / .NETプログラマです。
        - .NETOOPSOLID原則に精通
        - エンタプライズレベルでメンテナンスしやすいコドを書くことができる
        - 命名規則は明確に
        - まず設計方針を述べてから、完全なコドを提示
        - 断片的な出力はしない
        回答は中国語で、コドには必要なコメントを記入
        """;

        var agent =
            new AzureOpenAIClient(new Uri(endpoint), credential)
                .GetChatClient(deploymentName)
                .AsIChatClient()
                .AsAIAgent(
                    instructions: instructions,
                    name: "DotNetProgrammer");
        return agent;
    }
}

全員が確実にMicrosoft Agentを動作できるよう、プロジェクトファイルもあわせて共有します。サードパーティパッケージのバージョンも統一できます。

<Project Sdk="Microsoft.NET.Sdk">
  <PropertyGroup>
    <OutputType>Exe</OutputType>
    <TargetFramework>net10.0</TargetFramework>
    <ImplicitUsings>enable</ImplicitUsings>
    <Nullable>enable</Nullable>
  </PropertyGroup>
  <ItemGroup>
    <PackageReference Include="Azure.AI.OpenAI" Version="2.8.0-beta.1" />
    <PackageReference Include="Azure.Identity" Version="1.18.0-beta.2" />
    <PackageReference Include="Microsoft.Agents.AI" Version="1.0.0-preview.260121.1" />
    <PackageReference Include="Microsoft.Agents.AI.AzureAI" Version="1.0.0-preview.260121.1" />
    <PackageReference Include="Microsoft.Agents.AI.OpenAI" Version="1.0.0-preview.260121.1" />
  </ItemGroup>
</Project>

動作結果:

画像

(Translated by GPT)

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

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