Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
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.
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 di luar batas kepatuhan dan geografis Azure organisasi Anda dan 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:
- Pemanggilan fungsi.
- Percakapan multi-giliran dengan manajemen riwayat obrolan lokal atau manajemen riwayat obrolan yang disediakan oleh layanan.
- Alat yang disediakan oleh layanan kustom (misalnya, MCP, Eksekusi Kode).
- 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 | Description | 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 | Description |
|---|---|
| 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 |
|---|---|---|---|
| Modul Azure AI Foundry | Azure OpenAI SDK 2 | Azure.AI.OpenAI | https://ai-foundry-<resource.services.ai.azure.com/> |
| Modul Azure AI Foundry | OpenAI SDK 3 | OpenAI | https://ai-foundry-<resource.services.ai.azure.com/openai/v1/> |
| Modul Azure AI Foundry | Azure AI Inference SDK 2 | Azure.AI.Inference | https://ai-foundry-<resource.services.ai.azure.com/models> |
| Agen AI Azure Foundry | 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 |
- Memutakhirkan dari Azure OpenAI ke Azure AI Foundry
- Sebaiknya gunakan OpenAI SDK.
- 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 AzureCliCredential(), "https://ai.azure.com/.default"), clientOptions)
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 AzureCliCredential())
.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 AzureCliCredential());
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.
Agen-agen ini mendukung berbagai fungsionalitas di luar kotak:
- Panggilan fungsi
- Percakapan multi-giliran dengan pengelolaan riwayat obrolan lokal atau pengelolaan riwayat obrolan yang disediakan oleh layanan.
- Alat yang disediakan layanan kustom (misalnya, MCP, Eksekusi Kode)
- Output terstruktur
- Respons streaming
Untuk membuat salah satu agen ini, cukup buat ChatAgent menggunakan implementasi klien obrolan pilihan Anda.
from agent_framework import ChatAgent
from agent_framework.azure import AzureAIAgentClient
from azure.identity.aio import DefaultAzureCredential
async with (
DefaultAzureCredential() as credential,
ChatAgent(
chat_client=AzureAIAgentClient(async_credential=credential),
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 AzureAIAgentClient
from azure.identity.aio import DefaultAzureCredential
async with DefaultAzureCredential() as credential:
agent = AzureAIAgentClient(async_credential=credential).as_agent(
instructions="You are a helpful assistant"
)
Untuk contoh terperinci, lihat bagian dokumentasi khusus agen di bawah ini.
Jenis Agen yang Didukung
| Layanan Inferensi Yang Mendasar | Description | Penyimpanan Riwayat Obrolan Layanan didukung | Penyimpanan Khusus Riwayat Obrolan didukung |
|---|---|---|---|
| Agen Azure AI | Agen yang menggunakan Azure AI Agents Service sebagai backend-nya. | Yes | Tidak. |
| Penyelesaian Obrolan Azure OpenAI | Agen yang menggunakan layanan Penyelesaian Obrolan Azure OpenAI. | Tidak. | Yes |
| Tanggapan Azure OpenAI | Agen yang menggunakan layanan Azure OpenAI Responses. | Yes | Yes |
| Penyelesaian Chat OpenAI | Agen yang menggunakan layanan OpenAI Chat Completion. | Tidak. | Yes |
| Respon OpenAI | Agen yang menggunakan layanan Respons OpenAI. | Yes | Yes |
| Asisten OpenAI | Agen yang menggunakan layanan Asisten OpenAI. | Yes | Tidak. |
| ChatClient lainnya | Anda juga dapat menggunakan implementasi klien obrolan lainnya untuk membuat agen. | Beragam | Beragam |
Perangkat Fungsional
Anda dapat menyediakan alat fungsi kepada agen untuk kemampuan yang ditingkatkan:
from typing import Annotated
from pydantic import Field
from azure.identity.aio import DefaultAzureCredential
from agent_framework.azure import AzureAIAgentClient
def get_weather(location: Annotated[str, Field(description="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,
AzureAIAgentClient(async_credential=credential).as_agent(
instructions="You are a helpful weather assistant.",
tools=get_weather
) as agent
):
response = await agent.run("What's the weather in Seattle?")
Untuk contoh lengkap dengan alat fungsi, lihat:
Respons Streaming
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_stream("What's the weather like in Portland?"):
if chunk.text:
print(chunk.text, end="", flush=True)
Untuk contoh streaming, lihat:
Alat Penerjemah Kode
Agen Azure AI mendukung alat penerjemah kode yang dihosting untuk mengeksekusi kode Python:
from agent_framework import ChatAgent, HostedCodeInterpreterTool
from agent_framework.azure import AzureAIAgentClient
from azure.identity.aio import DefaultAzureCredential
async with (
DefaultAzureCredential() as credential,
ChatAgent(
chat_client=AzureAIAgentClient(async_credential=credential),
instructions="You are a helpful assistant that can execute Python code.",
tools=HostedCodeInterpreterTool()
) as agent
):
response = await agent.run("Calculate the factorial of 100 using Python")
Untuk contoh penerjemah kode, lihat:
- Azure AI dengan penerjemah kode
- Asisten Azure OpenAI dengan penerjemah kode
- Asisten OpenAI dengan penerjemah kode
Agen kustom
Dimungkinkan juga untuk membuat agen sepenuhnya kustom yang tidak hanya sekadar bungkus untuk klien obrolan.
Agent Framework menyediakan AgentProtocol protokol dan BaseAgent kelas dasar, yang ketika diimplementasikan/disubkelas memungkinkan kontrol penuh atas perilaku dan kemampuan agen.
from agent_framework import BaseAgent, AgentResponse, AgentResponseUpdate, AgentThread, ChatMessage
from collections.abc import AsyncIterable
class CustomAgent(BaseAgent):
async def run(
self,
messages: str | ChatMessage | list[str] | list[ChatMessage] | None = None,
*,
thread: AgentThread | None = None,
**kwargs: Any,
) -> AgentResponse:
# Custom agent implementation
pass
def run_stream(
self,
messages: str | ChatMessage | list[str] | list[ChatMessage] | None = None,
*,
thread: AgentThread | None = None,
**kwargs: Any,
) -> AsyncIterable[AgentResponseUpdate]:
# Custom streaming implementation
pass