Jenis agen Microsoft Agent Framework

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 Kerangka Kerja Agen Microsoft 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 pihak ketiga, agen, kode, atau model langsung non-Azure ("Sistem Pihak Ketiga"), Anda melakukannya dengan risiko Anda sendiri. Sistem Pihak Ketiga adalah Produk Non-Microsoft berdasarkan Ketentuan Produk Microsoft dan diatur oleh ketentuan lisensi pihak ketiga mereka sendiri. Anda bertanggung jawab atas penggunaan apa pun dan biaya terkait.

Sebaiknya tinjau semua data yang dibagikan dengan dan diterima dari Sistem Pihak Ketiga dan mengenali praktik pihak ketiga untuk penanganan, berbagi, retensi, dan lokasi data. Anda bertanggung jawab untuk mengelola keputusan mengenai apakah data Anda akan melintasi batas kepatuhan dan geografis Azure organisasi Anda serta implikasi terkait, serta memastikan bahwa izin, batas, dan persetujuan yang sesuai telah dialokasikan.

Anda bertanggung jawab untuk meninjau dan menguji aplikasi yang Anda buat dengan cermat menggunakan Microsoft Agent Framework dalam konteks kasus penggunaan spesifik Anda, dan membuat semua keputusan dan penyesuaian yang sesuai. Ini termasuk menerapkan mitigasi AI Anda sendiri yang bertanggung jawab seperti metaprompt, filter konten, atau sistem keamanan lainnya, dan memastikan aplikasi Anda memenuhi standar kualitas, keandalan, keamanan, dan kepercayaan yang sesuai. Lihat juga: Tanya Jawab Umum Transparansi

Agen sederhana berdasarkan layanan inferensi

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

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
Microsoft Foundry Agent Agen yang menggunakan Foundry Agent Service sebagai backend-nya. Yes Tidak.
Foundry Models ChatCompletion Agen yang menggunakan salah satu model yang diimplementasikan di Foundry Service sebagai backend melalui ChatCompletion. Tidak. Yes
Respons Model Foundry Agen yang menggunakan salah satu model yang dideploy di Foundry Service sebagai sistem backend-nya melalui Responses. Yes Yes
Foundry Anthropic Agen yang menggunakan model Claude melalui layanan Foundry Anthropic sebagai sistem backend-nya. Tidak. Yes
Azure OpenAI ChatCompletion Agen yang menggunakan layanan Azure OpenAI ChatCompletion. Tidak. Yes
Azure Respons OpenAI Agen yang menggunakan layanan Azure OpenAI Responses. Yes Yes
Anthropic Agen yang menggunakan model Claude melalui Anthropic Service sebagai backend-nya. Tidak. Yes
OpenAI ChatCompletion Agen yang menggunakan layanan OpenAI ChatCompletion. Tidak. Yes
Respon OpenAI Agen yang menggunakan layanan Respons OpenAI. Yes Yes
Lainnya IChatClient Anda juga dapat menggunakan implementasi Microsoft.Extensions.AI.IChatClient lainnya 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 Foundry, layanan Azure OpenAI, layanan OpenAI, atau layanan Anthropic, 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
Model Foundry Azure OpenAI SDK 2 Azure. AI. OpenAI https://ai-foundry-<resource.services.ai.azure.com/>
Model Foundry OpenAI SDK 3 OpenAI https://ai-foundry-<resource.services.ai.azure.com/openai/v1/>
Model Foundry Azure AI Inference SDK 2 Azure.AI.Inference https://ai-foundry-<resource.services.ai.azure.com/models>
Agen Foundry Azure AI Projects SDK + Microsoft Agents AI Foundry Azure. AI. Projects / Microsoft. Agents.AI.Foundry 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
Microsoft Foundry Anthropic SDK Anthropic Foundry Anthropic.Foundry Nama sumber daya diperlukan
Antropik SDK Antropis Anthropic Tidak diperlukan url atau nama sumber daya
  1. Mutakhirkan dari Azure OpenAI ke Foundry
  2. Sebaiknya gunakan OpenAI SDK.
  3. Meskipun sebaiknya gunakan OpenAI SDK untuk mengakses model Foundry, Model 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 Layanan Azure, 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
    .AsAIAgent(model: model, instructions: "You are good at telling jokes.", name: "Joker");

Menggunakan Azure AI Projects SDK

SDK ini dapat digunakan untuk menyambungkan ke layanan Foundry. Anda harus menyediakan URL titik akhir proyek yang benar saat membuat AIProjectClient. Lihat tabel di atas untuk URL yang benar untuk digunakan.

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

Menggunakan Azure AI Projects SDK dengan Foundry Agents

SDK ini digunakan untuk agen berbasis API Respons dan Agen Foundry versi. Lihat tabel di atas untuk URL yang benar untuk digunakan.

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

Menggunakan Foundry Anthropic SDK

Sumber daya adalah nama subdomain / nama depan yang muncul sebelum '.services.ai.azure.com' di URI titik akhir.

Misalnya: https://(resource name).services.ai.azure.com/anthropic/v1/chat/completions

var client = new AnthropicFoundryClient(new AnthropicFoundryApiKeyCredentials(apiKey, resource));
AIAgent agent = client.AsAIAgent(
    model: deploymentName,
    instructions: "Joker",
    name: "You are good at telling jokes.");

Menggunakan SDK Anthropic

var client = new AnthropicClient() { ApiKey = apiKey };
AIAgent agent = client.AsAIAgent(
    model: deploymentName,
    instructions: "Joker",
    name: "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 protokol, 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.foundry import FoundryChatClient
from azure.identity.aio import DefaultAzureCredential

agent = Agent(
    client=FoundryChatClient(
        credential=DefaultAzureCredential(),
        project_endpoint=os.getenv("FOUNDRY_PROJECT_ENDPOINT"),
        model=os.getenv("FOUNDRY_MODEL"),
    ),
    instructions="You are a helpful assistant",
)
response = await agent.run("Hello!")

Atau, Anda dapat menggunakan metode kenyamanan pada klien obrolan:

from agent_framework.foundry import FoundryChatClient
from azure.identity.aio import DefaultAzureCredential

agent = FoundryChatClient(
    credential=DefaultAzureCredential(),
    project_endpoint=os.getenv("FOUNDRY_PROJECT_ENDPOINT"),
    model=os.getenv("FOUNDRY_MODEL"),
).as_agent(
    instructions="You are a helpful assistant"
)

Nota

Contoh ini menunjukkan penggunaan FoundryChatClient, 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 Foundry Agen yang memanfaatkan Layanan Agen sebagai backend-nya. Yes
Azure OpenAI Chat Completion Agen yang menggunakan layanan Azure OpenAI Chat Completion. Tidak.
Azure Respons OpenAI Agen yang menggunakan layanan Azure OpenAI Responses. Yes
Penyelesaian Chat OpenAI Agen yang menggunakan layanan OpenAI Chat Completion. Tidak.
Respon OpenAI Agen yang menggunakan layanan Respons 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 SDK GitHub Copilot. 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.foundry import FoundryChatClient

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 = FoundryChatClient(
        credential=credential,
        project_endpoint=os.getenv("FOUNDRY_PROJECT_ENDPOINT"),
        model=os.getenv("FOUNDRY_MODEL"),
    ).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