Bagikan melalui


Jenis agen pada Kerangka Kerja Agen Microsoft

Microsoft Agent Framework menyediakan dukungan untuk beberapa jenis agen untuk mengakomodasi berbagai kasus dan persyaratan penggunaan.

Semua agen berasal dari kelas dasar umum, AIAgent, yang menyediakan antarmuka yang konsisten untuk semua jenis agen. Ini memungkinkan untuk membangun fungsionalitas tingkat tinggi yang umum dan agnostik terhadap agen, seperti orkestrasi multi-agen.

Semua agen berasal dari kelas dasar umum, Agent, yang menyediakan antarmuka yang konsisten untuk semua jenis agen. Ini memungkinkan untuk membangun fungsionalitas tingkat tinggi yang umum dan agnostik terhadap agen, seperti orkestrasi multi-agen.

Model Eksekusi Agen Runtime Default

Semua agen dalam Microsoft Agent Framework dijalankan menggunakan model runtime terstruktur. Model ini mengoordinasikan interaksi pengguna, inferensi model, dan eksekusi alat dalam perulangan deterministik.

Diagram Agen AI

Penting

Jika Anda menggunakan Microsoft Agent Framework untuk membangun aplikasi yang beroperasi dengan server atau agen pihak ketiga, Anda melakukannya dengan risiko Anda sendiri. Sebaiknya tinjau semua data yang dibagikan dengan server atau agen pihak ketiga dan berkognizan dengan praktik pihak ketiga untuk retensi dan lokasi data. Anda bertanggung jawab untuk mengelola apakah data Anda akan mengalir ke luar batas kepatuhan Azure dan batas geografis organisasi Anda, serta implikasi terkait.

Agen sederhana berdasarkan layanan inferensi

Agent Framework memudahkan untuk membuat agen sederhana berdasarkan banyak layanan inferensi yang berbeda. Setiap layanan inferensi yang menyediakan Microsoft.Extensions.AI.IChatClient implementasi dapat digunakan untuk membangun agen ini. Microsoft.Agents.AI.ChatClientAgent adalah kelas agen yang digunakan untuk menyediakan agen untuk implementasi apa punIChatClient.

Agen-agen ini mendukung berbagai fungsionalitas di luar kotak:

  1. Pemanggilan fungsi.
  2. Percakapan multi-giliran dengan manajemen riwayat obrolan lokal atau manajemen riwayat obrolan yang disediakan oleh layanan.
  3. Alat yang disediakan oleh layanan kustom (misalnya, MCP, Eksekusi Kode).
  4. Output terstruktur.

Untuk membuat salah satu agen ini, cukup buat ChatClientAgent menggunakan pilihan implementasi IChatClient Anda.

using Microsoft.Agents.AI;

var agent = new ChatClientAgent(chatClient, instructions: "You are a helpful assistant");

Untuk mempermudah pembuatan agen ini, Agent Framework menyediakan pembantu untuk banyak layanan populer. Untuk informasi selengkapnya, lihat dokumentasi untuk setiap layanan.

Layanan inferensi yang mendasar Deskripsi Penyimpanan riwayat obrolan layanan didukung Penyimpanan riwayat obrolan dalam memori atau kustom didukung
Agen Pendiri Azure AI Agen yang menggunakan Azure AI Foundry Agents Service sebagai backend-nya. Yes Tidak.
Model ChatCompletion Azure AI Foundry Agen yang menggunakan salah satu model yang diterapkan di Azure AI Foundry Service sebagai backend-nya melalui mekanisme ChatCompletion. Tidak. Yes
Model Respons Azure AI Foundry Agen yang menggunakan salah satu model yang diterapkan di Azure AI Foundry Service sebagai backend melalui sistem Responses. Yes Yes
Azure OpenAI ChatCompletion Agen yang menggunakan layanan Azure OpenAI ChatCompletion. Tidak. Yes
Tanggapan Azure OpenAI Agen yang menggunakan layanan Azure OpenAI Responses. Yes Yes
OpenAI ChatCompletion Agen yang menggunakan layanan OpenAI ChatCompletion. Tidak. Yes
Respon OpenAI Agen yang menggunakan layanan Respons OpenAI. Yes Yes
Asisten OpenAI Agen yang menggunakan layanan Asisten OpenAI. Yes Tidak.
Lainnya IChatClient Anda juga dapat menggunakan implementasi lain Microsoft.Extensions.AI.IChatClient untuk membuat agen. Beragam Beragam

Agen kustom yang kompleks

Anda juga dapat membuat agen yang sepenuhnya kustom yang tidak hanya berfungsi sebagai pembungkus di sekitar IChatClient. Kerangka agen menyediakan AIAgent jenis dasar. Jenis dasar ini adalah abstraksi inti untuk semua agen, yang, ketika disubkelas, memungkinkan kontrol penuh atas perilaku dan kemampuan agen.

Untuk informasi selengkapnya, lihat dokumentasi untuk Agen Kustom.

Proksi untuk agen jarak jauh

Agent Framework menyediakan implementasi siap pakai AIAgent untuk protokol agen layanan umum yang di-host, seperti A2A. Dengan cara ini Anda dapat dengan mudah terhubung ke dan menggunakan agen jarak jauh dari aplikasi Anda.

Lihat dokumentasi untuk setiap jenis agen, untuk informasi selengkapnya:

Protokol Deskripsi
A2A Agen yang berfungsi sebagai proksi ke agen jarak jauh melalui protokol A2A.

Referensi Opsi SDK Azure dan OpenAI

Saat menggunakan layanan Azure AI Foundry, Azure OpenAI, atau OpenAI, Anda memiliki berbagai opsi SDK untuk terhubung ke layanan ini. Dalam beberapa kasus, dimungkinkan untuk menggunakan beberapa SDK untuk terhubung ke layanan yang sama atau menggunakan SDK yang sama untuk terhubung ke layanan yang berbeda. Berikut adalah daftar berbagai opsi yang tersedia dengan url yang harus Anda gunakan saat menghubungkan ke masing-masing. Pastikan untuk mengganti <resource> dan <project> dengan nama sumber daya dan proyek Anda yang sebenarnya.

Layanan AI SDK Nuget URL
Azure AI Foundry Models Azure OpenAI SDK 2 Azure.AI.OpenAI https://ai-foundry-<resource.services.ai.azure.com/>
Azure AI Foundry Models OpenAI SDK 3 OpenAI https://ai-foundry-<resource.services.ai.azure.com/openai/v1/>
Model Azure AI Foundry Azure AI Inference SDK 2 Azure.AI.Inference https://ai-foundry-<resource.services.ai.azure.com/models>
Agen Pembuatan Azure AI Azure AI Persistent Agents SDK Azure.AI.Agents.Persistent https://ai-foundry-<resource.services.ai.azure.com/api/projects/ai-project-project><>
Azure OpenAI1 Azure OpenAI SDK 2 Azure.AI.OpenAI <https:// resource.openai.azure.com/>
Azure OpenAI1 OpenAI SDK OpenAI <https://resource.openai.azure.com/openai/v1/>
OpenAI OpenAI SDK OpenAI Tidak diperlukan url
  1. Memutakhirkan dari Azure OpenAI ke Azure AI Foundry
  2. Sebaiknya gunakan OpenAI SDK.
  3. Meskipun sebaiknya gunakan OpenAI SDK untuk mengakses model Azure AI Foundry, Model Azure AI Foundry mendukung model dari berbagai vendor, bukan hanya OpenAI. Semua model ini didukung melalui OpenAI SDK.

Menggunakan OpenAI SDK

Seperti yang ditunjukkan pada tabel di atas, OpenAI SDK dapat digunakan untuk menyambungkan ke beberapa layanan. Bergantung pada layanan yang Anda sambungkan, Anda mungkin perlu mengatur URL kustom saat membuat OpenAIClient. Anda juga dapat menggunakan mekanisme autentikasi yang berbeda tergantung pada layanan.

Jika URL kustom diperlukan (lihat tabel di atas), Anda dapat mengaturnya melalui OpenAIClientOptions.

var clientOptions = new OpenAIClientOptions() { Endpoint = new Uri(serviceUrl) };

Anda dapat menggunakan kunci API saat membuat klien.

OpenAIClient client = new OpenAIClient(new ApiKeyCredential(apiKey), clientOptions);

Saat menggunakan Azure Service, Anda juga dapat menggunakan kredensial Azure alih-alih kunci API.

OpenAIClient client = new OpenAIClient(new BearerTokenPolicy(new DefaultAzureCredential(), "https://ai.azure.com/.default"), clientOptions)

Peringatan

DefaultAzureCredential nyaman untuk pengembangan tetapi membutuhkan pertimbangan yang cermat dalam produksi. Dalam produksi, pertimbangkan untuk menggunakan kredensial tertentu (misalnya, ManagedIdentityCredential) untuk menghindari masalah latensi, pemeriksaan kredensial yang tidak diinginkan, dan potensi risiko keamanan dari mekanisme fallback.

Setelah membuat OpenAIClient, Anda bisa mendapatkan sub klien untuk layanan tertentu yang ingin Anda gunakan lalu membuat AIAgent dari itu.

AIAgent agent = client
    .GetChatClient(model)
    .AsAIAgent(instructions: "You are good at telling jokes.", name: "Joker");

Menggunakan Azure OpenAI SDK

SDK ini dapat digunakan untuk menyambungkan ke layanan Azure OpenAI dan Azure AI Foundry Models. Bagaimanapun, Anda harus menyediakan URL layanan yang benar saat membuat AzureOpenAIClient. Lihat tabel di atas untuk URL yang benar untuk digunakan.

AIAgent agent = new AzureOpenAIClient(
    new Uri(serviceUrl),
    new DefaultAzureCredential())
     .GetChatClient(deploymentName)
     .AsAIAgent(instructions: "You are good at telling jokes.", name: "Joker");

Menggunakan Azure AI Persistent Agents SDK

SDK ini hanya didukung dengan layanan Azure AI Foundry Agents. Lihat tabel di atas untuk URL yang benar untuk digunakan.

var persistentAgentsClient = new PersistentAgentsClient(serviceUrl, new DefaultAzureCredential());
AIAgent agent = await persistentAgentsClient.CreateAIAgentAsync(
    model: deploymentName,
    name: "Joker",
    instructions: "You are good at telling jokes.");

Agen sederhana berdasarkan layanan inferensi

Agent Framework memudahkan untuk membuat agen sederhana berdasarkan banyak layanan inferensi yang berbeda. Setiap layanan inferensi yang menyediakan implementasi klien obrolan dapat digunakan untuk membangun agen ini. Ini dapat dilakukan menggunakan SupportsChatGetResponse, yang mendefinisikan standar untuk metode yang perlu didukung klien untuk digunakan dengan kelas standar Agent .

Agen-agen ini mendukung berbagai fungsionalitas di luar kotak:

  1. Panggilan fungsi
  2. Percakapan multi-giliran dengan pengelolaan riwayat obrolan lokal atau pengelolaan riwayat obrolan yang disediakan oleh layanan.
  3. Alat yang disediakan layanan kustom (misalnya, MCP, Eksekusi Kode)
  4. Output terstruktur
  5. Respons streaming

Untuk membuat salah satu agen ini, cukup buat Agent menggunakan implementasi klien obrolan pilihan Anda.

import os
from agent_framework import Agent
from agent_framework.azure import AzureOpenAIResponsesClient
from azure.identity.aio import DefaultAzureCredential

Agent(
    client=AzureOpenAIResponsesClient(credential=DefaultAzureCredential(), project_endpoint=os.getenv("AZURE_AI_PROJECT_ENDPOINT"), deployment_name=os.getenv("AZURE_OPENAI_RESPONSES_DEPLOYMENT_NAME")),
    instructions="You are a helpful assistant"
) as agent
response = await agent.run("Hello!")

Atau, Anda dapat menggunakan metode kenyamanan pada klien obrolan:

from agent_framework.azure import AzureOpenAIResponsesClient
from azure.identity.aio import DefaultAzureCredential

agent = AzureOpenAIResponsesClient(async_credential=DefaultAzureCredential(), project_endpoint=os.getenv("AZURE_AI_PROJECT_ENDPOINT"), deployment_name=os.getenv("AZURE_OPENAI_RESPONSES_DEPLOYMENT_NAME")).as_agent(
    instructions="You are a helpful assistant"
)

Nota

Contoh ini menunjukkan penggunaan AzureOpenAIResponsesClient, tetapi pola yang sama berlaku untuk klien obrolan apa pun yang menerapkan SupportsChatGetResponse, lihat gambaran umum penyedia untuk detail selengkapnya tentang klien lain.

Untuk contoh terperinci, lihat bagian dokumentasi khusus agen di bawah ini.

Penyedia Obrolan yang Didukung

Layanan Inferensi Yang Mendasar Deskripsi Penyimpanan Riwayat Obrolan Layanan didukung
Agen Pendiri Azure AI Agen yang menggunakan Azure AI Agents Service sebagai backend-nya. Yes
Penyelesaian Obrolan Azure OpenAI Agen yang menggunakan layanan Penyelesaian Obrolan Azure OpenAI. Tidak.
Tanggapan Azure OpenAI Agen yang menggunakan layanan Azure OpenAI Responses. Yes
Asisten Azure OpenAI Agen yang menggunakan layanan Asisten Azure OpenAI. Yes
Penyelesaian Chat OpenAI Agen yang menggunakan layanan OpenAI Chat Completion. Tidak.
Respon OpenAI Agen yang menggunakan layanan Respons OpenAI. Yes
Asisten OpenAI Agen yang menggunakan layanan Asisten OpenAI. Yes
Anthropic Claude Agen yang menggunakan model Anthropic Claude. Tidak.
Amazon Bedrock Agen yang menggunakan model Amazon Bedrock melalui klien obrolan Agent Framework Bedrock. Tidak.
GitHub Copilot Agen yang menggunakan backend GitHub Copilot SDK. Tidak.
Ollama (kompatibel dengan OpenAI) Agen yang menggunakan model Ollama yang dihosting secara lokal melalui API yang kompatibel dengan OpenAI. Tidak.
ChatClient lainnya Anda juga dapat menggunakan implementasi SupportsChatGetResponse lain untuk membuat agen. Beragam

Penyimpanan riwayat obrolan kustom didukung setiap kali status percakapan berbasis sesi didukung.

Respons yang Mengalir

Agen mendukung respons reguler dan streaming:

# Regular response (wait for complete result)
response = await agent.run("What's the weather like in Seattle?")
print(response.text)

# Streaming response (get results as they are generated)
async for chunk in agent.run("What's the weather like in Portland?", stream=True):
    if chunk.text:
        print(chunk.text, end="", flush=True)

Untuk contoh streaming, lihat:

Untuk pola pemanggilan lainnya, lihat Mengoperasikan Agen.

Perangkat Fungsional

Anda dapat menyediakan alat fungsi kepada agen untuk kemampuan yang ditingkatkan:

import os
from typing import Annotated
from azure.identity.aio import DefaultAzureCredential
from agent_framework.azure import AzureOpenAIResponsesClient

def get_weather(location: Annotated[str, "The location to get the weather for."]) -> str:
    """Get the weather for a given location."""
    return f"The weather in {location} is sunny with a high of 25°C."

async with DefaultAzureCredential() as credential:
    agent = AzureOpenAIResponsesClient(
        async_credential=credential,
        project_endpoint=os.getenv("AZURE_AI_PROJECT_ENDPOINT"),
        deployment_name=os.getenv("AZURE_OPENAI_RESPONSES_DEPLOYMENT_NAME"),
    ).as_agent(
        instructions="You are a helpful weather assistant.",
        tools=get_weather,
    )
    response = await agent.run("What's the weather in Seattle?")

Untuk alat dan pola alat, lihat Gambaran umum alat.

Agen kustom

Untuk implementasi yang sepenuhnya kustom (misalnya agen deterministik atau agen yang didukung API), lihat Agen Kustom. Halaman tersebut mencakup penerapan SupportsAgentRun atau perluasan BaseAgent, termasuk pembaruan streaming dengan AgentResponseUpdate.

Jenis agen lainnya

Agent Framework juga mencakup agen yang didukung protokol, seperti:

Jenis Agen Deskripsi
A2A Agen proksi yang terhubung ke dan memanggil agen yang mematuhi A2A jarak jauh.

Langkah selanjutnya