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 mendukung inferensi model langsung dari titik akhir proyek Microsoft Foundry saat aplikasi Anda memiliki definisi, alat, dan orkestrasi agen.
Untuk Prompt yang dikelola layanan dan Agen yang Dihosting, lihat Microsoft Foundry Agent Service.
Getting Started
Tambahkan paket NuGet yang diperlukan ke proyek Anda.
dotnet add package Azure.Identity
dotnet add package Microsoft.Agents.AI.Foundry --prerelease
Dua pola integrasi
Integrasi Microsoft Foundry mengekspos dua pola penggunaan yang berbeda:
| Pattern | Jenis yang diproduksi | Description | Gunakan ketika diperlukan |
|---|---|---|---|
| Agen Tanggapan | ChatClientAgent |
Aplikasi Anda secara terprogram menyediakan model, instruksi, dan alat saat runtime melalui AIProjectClient.AsAIAgent(...). Tidak ada sumber daya agen sisi server yang dibuat. |
Anda memiliki definisi agen dan menginginkan penyiapan yang sederhana dan fleksibel. Ini adalah pola yang digunakan di sebagian besar sampel. |
| Agen Foundry (Prompt atau Hosted) | FoundryAgent |
Dikelola server — Agen Prompt diberi nama dan definisi versi; Agen yang Dihosting adalah aplikasi yang disebarkan yang dicapai melalui titik akhir khusus agen. | Foundry memiliki definisi agen atau runtime yang dihosting. Lihat Microsoft Foundry Agent Service. |
Agen Respon (inferensi langsung)
Gunakan AsAIAgent pada AIProjectClient langsung dengan model dan instruksi. Ini adalah titik awal yang direkomendasikan untuk sebagian besar skenario.
using Azure.AI.Projects;
using Azure.Identity;
using Microsoft.Agents.AI;
AIAgent agent = new AIProjectClient(
new Uri("<your-foundry-project-endpoint>"),
new DefaultAzureCredential())
.AsAIAgent(
model: "gpt-4o-mini",
name: "Joker",
instructions: "You are good at telling jokes.");
Console.WriteLine(await agent.RunAsync("Tell me a joke about a pirate."));
Warning
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.
Jalur ini bersifat code-first dan tidak membuat sumber daya agen yang dikelola oleh server.
Menggunakan agen
Agen Respons adalah standar AIAgent dan mendukung sesi, alat, middleware, dan streaming.
AgentSession session = await agent.CreateSessionAsync();
Console.WriteLine(await agent.RunAsync("Tell me a joke.", session));
Console.WriteLine(await agent.RunAsync("Now make it funnier.", session));
Untuk informasi selengkapnya tentang cara menjalankan dan berinteraksi dengan agen, lihat tutorial Memulai Agen.
Tools
Agen Respons Foundry yang dibuat dari AIProjectClient.AsAIAgent(...) mendukung permukaan alat Kerangka Kerja Agen standar. Lihat Gambaran umum Alat untuk matriks fitur lengkap.
| Alat | Notes |
|---|---|
| Peralatan Fungsional | Supported. |
| Persetujuan Alat | Supported. Disediakan oleh klien obrolan yang memanggil fungsi kerangka kerja. |
| Penerjemah Kode | Supported. |
| Pencarian File | Supported. |
| Alat MCP yang Dihosting | Supported. |
| Alat MCP Lokal | Supported. |
| Kotak Alat Microsoft Foundry | Supported. |
Foundry pada Python
Di Python, semua klien khusus Foundry sekarang tinggal di bawah agent_framework.foundry.
-
agent-framework-foundrymenyediakan konektor Cloud Foundry:FoundryChatClient,FoundryAgent,FoundryEmbeddingClient, danFoundryMemoryProvider. -
agent-framework-foundry-localmenyediakanFoundryLocalClientuntuk eksekusi model lokal.
Important
Halaman ini mencakup Microsoft titik akhir proyek dan model Foundry. Untuk Foundry Agent Service, lihat Microsoft Foundry Agent Service. Jika Anda memiliki titik akhir sumber daya Azure OpenAI mandiri (https://<your-resource>.openai.azure.com), gunakan panduan Python di halaman penyedia OpenAI. Jika Anda ingin menjalankan model yang didukung secara lokal, lihat halaman Penyedia lokal Foundry.
Pola percakapan dan pola agen pada Foundry di Python
| Skenario | Bentuk dalam Python | Gunakan ketika diperlukan |
|---|---|---|
| Inferensi biasa dengan titik akhir Respons Foundry | Agent(client=FoundryChatClient(...)) |
Aplikasi Anda memiliki definisi agen, alat, dan perulangan percakapan, dan Anda ingin model disebarkan dalam proyek Foundry. |
| Agen yang dikelola layanan di Foundry Agent Service | FoundryAgent(...) |
Anda ingin menyambungkan ke PromptAgent atau HostedAgent yang dibuat dan dikonfigurasi di portal Foundry atau melalui API layanan. |
Penginstalan
pip install agent-framework-foundry
Paket yang sama agent-framework-foundry juga termasuk FoundryEmbeddingClient untuk penyematan titik akhir model Foundry.
Configuration
FoundryChatClient
FOUNDRY_PROJECT_ENDPOINT="https://<your-project>.services.ai.azure.com"
FOUNDRY_MODEL="gpt-4o-mini"
FoundryEmbeddingClient
FOUNDRY_MODELS_ENDPOINT="https://<apim-instance>.azure-api.net/<foundry-instance>/models"
FOUNDRY_MODELS_API_KEY="<api-key>"
FOUNDRY_EMBEDDING_MODEL="text-embedding-3-small"
FOUNDRY_IMAGE_EMBEDDING_MODEL="Cohere-embed-v3-english" # optional
FoundryChatClient menggunakan titik akhir proyek.
FoundryEmbeddingClient menggunakan titik akhir model terpisah.
Pilih klien Python yang tepat
| Skenario | Klien pilihan | Notes |
|---|---|---|
| Sumber daya Azure OpenAI | OpenAIChatCompletionClient / OpenAIChatClient |
Gunakan halaman penyedia OpenAI. |
| inferensi proyek Microsoft Foundry | Agent(client=FoundryChatClient(...)) |
Menggunakan titik akhir Respons Foundry. |
| Agen yang dikelola oleh layanan Microsoft Foundry | FoundryAgent |
Direkomendasikan untuk Prompt Agents dan HostedAgents. |
| Penyematan titik akhir model Microsoft Foundry | FoundryEmbeddingClient |
Menggunakan FOUNDRY_MODELS_ENDPOINT ditambah FOUNDRY_EMBEDDING_MODEL / FOUNDRY_IMAGE_EMBEDDING_MODEL. |
| Runtime Foundry Lokal | Agent(client=FoundryLocalClient(...)) |
Lihat Foundry Local. |
Membuat agen dengan FoundryChatClient
FoundryChatClient menyambungkan ke model yang diterapkan dalam proyek Foundry dan menggunakan endpoint respon. Pasangkan dengan standar Agent ketika aplikasi Anda harus memiliki instruksi, alat, dan penanganan sesi.
from agent_framework import Agent
from agent_framework.foundry import FoundryChatClient
from azure.identity import AzureCliCredential
agent = Agent(
client=FoundryChatClient(
project_endpoint="https://your-project.services.ai.azure.com",
model="gpt-4o-mini",
credential=AzureCliCredential(),
),
name="FoundryWeatherAgent",
instructions="You are a helpful assistant.",
)
FoundryChatClient adalah jalur Python Foundry-first untuk inferensi langsung dan mendukung alat, output terstruktur, dan streaming.
Tools
FoundryChatClient menyediakan metode pabrik statis untuk setiap alat Foundry yang dihosting. Metode factory mengembalikan objek alat SDK yang Anda teruskan ke tools= pada Agent atau langsung ke client.get_response(..., tools=[...]). Untuk alat agen yang dikelola layanan, lihat Microsoft Foundry Agent Service.
Metode pabrik merupakan metode kelas, jadi Anda tidak memerlukan instance untuk membuat tool:
from agent_framework import Agent
from agent_framework.foundry import FoundryChatClient
from azure.identity import AzureCliCredential
agent = Agent(
client=FoundryChatClient(credential=AzureCliCredential()),
instructions="You can search the web and run code.",
tools=[
FoundryChatClient.get_web_search_tool(),
FoundryChatClient.get_code_interpreter_tool(),
],
)
Dukungan alat
Tabel di bawah ini mencantumkan setiap alat yang diekspos Python FoundryChatClient hari ini.
| Alat | Pabrik aktif FoundryChatClient |
Status | Detil |
|---|---|---|---|
| Peralatan Fungsional | n/a — teruskan objek Python apa pun yang dapat dipanggil atau @ai_function |
GA | Dipanggil secara lokal dalam proses Python Anda. |
| Persetujuan Alat | n/a — membungkus alat yang ada | GA | Bekerja dengan MCP yang dihosting dan alat fungsi. |
| Penerjemah Kode | get_code_interpreter_tool |
GA | Eksekusi kode dalam sandbox di Foundry. |
| Pencarian File | get_file_search_tool |
GA | Cari file yang diunggah melalui penyimpanan vektor Foundry. |
| Pencarian Web | get_web_search_tool |
GA | Landasan web berbasis Bing yang dikelola oleh Microsoft. Hanya model Azure OpenAI. |
| Pembuatan Gambar | get_image_generation_tool |
GA | Pembuatan gambar yang dihosting di Foundry. |
| MCP yang di-host | get_mcp_tool |
GA | Server MCP jarak jauh yang dipanggil oleh Foundry. |
| MCP lokal | n/a — gunakan MCPStreamableHTTPTool / MCPStdioTool |
GA | Berjalan di dalam proses Anda; kompatibel dengan klien apa pun. |
| Kotak Alat Microsoft Foundry |
MCPStreamableHTTPTool atau FoundryToolbox |
Beta | Dikonsumsi melalui MCP dari FoundryChatClient; sisi server terlampir pada FoundryAgent. |
| Bing Grounding | get_bing_grounding_tool |
Experimental | Bawa Grounding Anda sendiri dengan sumber daya Bing Search. |
| Pencarian Kustom Bing | get_bing_custom_search_tool |
Preview | Grounding Bing dibatasi untuk daftar domain yang dikumpulkan. |
| Pencarian Azure AI | get_azure_ai_search_tool |
Experimental | Cari indeks Pencarian Azure AI melalui koneksi Foundry. |
| SharePoint | get_sharepoint_tool |
Preview | Jawaban dasar dalam konten SharePoint. |
| Microsoft Fabric | get_fabric_tool |
Preview | Ajukan kueri ke agen data Fabric. |
| Pencarian Memori | get_memory_search_tool |
Preview | Cari penyimpanan memori yang dikelola Foundry. |
| Penggunaan Komputer | get_computer_use_tool |
Preview | Biarkan agen mendorong lingkungan desktop atau browser. |
| Automasi Browser | get_browser_automation_tool |
Preview | Mengendalikan browser melalui koneksi Azure Playwright. |
| Agen-ke-Agen (A2A) | get_a2a_tool |
Preview | Gunakan agen A2A lain sebagai alat. |
Nota
Pabrik eksperimental membungkus jenis GA Foundry SDK tetapi pembungkus itu sendiri dapat berubah sebelum GA.
Factory pratinjau membungkus tipe SDK Foundry yang kapabilitas dasarnya masih dalam tahap pratinjau dan dapat berubah atau dihapus. Keduanya menghasilkan ExperimentalWarning saat pertama kali digunakan dalam suatu proses.
Varian pencarian web
Foundry menyediakan tiga opsi grounding yang didukung oleh Bing. Pilih salah satu yang cocok dengan skenario Anda:
-
get_web_search_tool(GA) — default tanpa penyiapan; sumber daya Bing dikelola oleh Microsoft. Hanya model Azure OpenAI. Terbatas padauser_locationdansearch_context_size. -
get_bing_grounding_tool(eksperimental) — bawa Grounding Anda sendiri dengan sumber daya Bing Search Azure. Mendukungcount,freshness,market,set_lang, dan model non-OpenAI Foundry. -
get_bing_custom_search_tool(pratinjau) — gunakan instans Bing Custom Search milik Anda sendiri untuk membatasi dasar respons ke kumpulan domain yang telah dikurasi.
Ketiganya mengirim data pencarian di luar batas kepatuhan Azure. Lihat gambaran umum grounding web untuk perbandingan lengkap.
client = FoundryChatClient(credential=AzureCliCredential())
# Default (GA): minimal configuration
web_search = client.get_web_search_tool(
user_location={"city": "Amsterdam", "country": "NL"},
search_context_size="medium",
)
Pembuatan gambar
get_image_generation_tool mengonfigurasi alat pembuatan gambar terhosting milik Foundry. Model menghasilkan konten gambar dalam respons - tidak ada file tambahan untuk dikelola.
image_gen = FoundryChatClient.get_image_generation_tool(
model="gpt-image-1",
size="1024x1024",
output_format="png",
quality="high",
)
Grounding dengan Bing
get_bing_grounding_tool membungkus Grounding dengan alat Bing Search Foundry. Anda membuat sumber daya Grounding dengan Bing Search sendiri dan menambahkannya sebagai koneksi proyek Foundry, lalu meneruskan ID koneksi.
bing = FoundryChatClient.get_bing_grounding_tool(
connection_id="/subscriptions/.../connections/my-bing",
market="en-US",
freshness="Day",
count=10,
)
Pencarian kustom Bing
get_bing_custom_search_tool membatasi landasan ke daftar izin yang ditentukan pada sumber daya Pencarian Kustom Bing.
bing_custom = FoundryChatClient.get_bing_custom_search_tool(
connection_id="/subscriptions/.../connections/my-bing-custom",
instance_name="docs-only",
market="en-US",
)
Pencarian Azure AI
get_azure_ai_search_tool memungkinkan agen mengkueri indeks Pencarian Azure AI melalui koneksi proyek Foundry.
ai_search = FoundryChatClient.get_azure_ai_search_tool(
index_connection_id="/subscriptions/.../connections/my-search",
index_name="product-docs",
query_type="vector_semantic_hybrid",
top_k=5,
)
Sharepoint
get_sharepoint_tool mendasarkan jawaban pada konten SharePoint yang dapat diakses melalui koneksi Foundry SharePoint.
sharepoint = FoundryChatClient.get_sharepoint_tool(
connection_id="/subscriptions/.../connections/my-sharepoint",
)
Microsoft Fabric
get_fabric_tool menghubungkan agen ke agen data Microsoft Fabric melalui koneksi Foundry sehingga agen dapat menjawab pertanyaan atas data Fabric Anda.
fabric = FoundryChatClient.get_fabric_tool(
connection_id="/subscriptions/.../connections/my-fabric",
)
Pencarian memori
get_memory_search_tool memungkinkan agen menelusuri penyimpanan memori yang dikelola Foundry, dengan cakupan opsional untuk pengguna atau tenant.
memory = FoundryChatClient.get_memory_search_tool(
memory_store_name="user-preferences",
scope="{{$userId}}",
)
Penggunaan komputer
get_computer_use_tool mengonfigurasi alat pratinjau Computer Use — model ini dapat mengendalikan lingkungan desktop atau browser dengan memberikan perintah pointer dan keyboard.
computer = FoundryChatClient.get_computer_use_tool(
environment="browser",
display_width=1280,
display_height=800,
)
Automasi browser
get_browser_automation_tool menghubungkan agen ke sumber daya Pengujian Azure Playwright melalui koneksi Foundry. Agen dapat mengendalikan browser sungguhan dengan Playwright.
browser = FoundryChatClient.get_browser_automation_tool(
connection_id="/subscriptions/.../connections/my-playwright",
)
Agen-ke-Agen (A2A)
get_a2a_tool mengekspos agen A2A jarak jauh sebagai alat agar agen Foundry dapat memanggilnya. Sediakan base_url (dan secara opsional agent_card_path) atau project_connection_id untuk koneksi A2A yang tersimpan.
a2a = FoundryChatClient.get_a2a_tool(
base_url="https://remote-agent.example.com",
agent_card_path="/.well-known/agent-card.json",
)
Untuk penemuan, sesi, dan panduan streaming A2A umum, lihat layanan agen A2A.
Buat penyematan dengan FoundryEmbeddingClient
Gunakan FoundryEmbeddingClient saat Anda menginginkan penyematan teks atau gambar dari titik akhir model Foundry.
from agent_framework.foundry import FoundryEmbeddingClient
async with FoundryEmbeddingClient() as client:
result = await client.get_embeddings(["hello from Agent Framework"])
print(result[0].dimensions)
Menggunakan agen
FoundryChatClientterintegrasi dengan pengalaman Python Agent standar, termasuk panggilan alat, sesi, dan respons streaming. Untuk runtime lokal, gunakan halaman penyedia Foundry Local terpisah.
Untuk bundel konfigurasi alat yang dihosting dengan versi bernama, lihat Microsoft Foundry Toolbox.
Foundry in Go
Go SDK menyediakan agen Microsoft Foundry melalui github.com/microsoft/agent-framework-go/provider/foundryprovider.
Lihat sampel Foundry Go untuk inferensi langsung, alat fungsi, alat yang dihosting, MCP, dan contoh agen server.
Paket ini mendukung dua target agen:
| Target | Buka Bentuk | Gunakan ketika diperlukan |
|---|---|---|
| Penerapan model yang didukung proyek | foundryprovider.ModelDeployment("gpt-4o-mini") |
Aplikasi Anda memiliki instruksi, alat, dan alur percakapan. |
| Agen Foundry di sisi server yang ada | foundryprovider.ServerAgent("my-agent") |
Definisi agen sudah dikonfigurasi di Foundry. |
Configuration
Atur titik akhir proyek Foundry dan penyebaran model Anda:
FOUNDRY_PROJECT_ENDPOINT="https://<your-project>.services.ai.azure.com/api/projects/<project-id>"
FOUNDRY_MODEL="gpt-4o-mini"
Agen Foundry yang didukung oleh proyek
Gunakan ModelDeployment saat Anda ingin membuat agen Agent Framework dalam kode dan meneruskan instruksi, alat, middleware, dan penyedia konteks dari aplikasi Go Anda.
import (
"context"
"os"
"github.com/Azure/azure-sdk-for-go/sdk/azidentity"
"github.com/microsoft/agent-framework-go/agent"
"github.com/microsoft/agent-framework-go/provider/foundryprovider"
)
endpoint := os.Getenv("FOUNDRY_PROJECT_ENDPOINT")
model := os.Getenv("FOUNDRY_MODEL")
token, err := azidentity.NewDefaultAzureCredential(nil)
if err != nil {
panic(err)
}
a := foundryprovider.NewAgent(
endpoint,
token,
foundryprovider.ModelDeployment(model),
foundryprovider.AgentConfig{
Instructions: "You are good at telling jokes.",
Config: agent.Config{
Name: "Joker",
},
},
)
resp, err := a.RunText(context.Background(), "Tell me a joke about a pirate.").Collect()
Agen Foundry di sisi server yang ada
Gunakan ServerAgent saat Anda ingin memanggil agen yang sudah dikonfigurasi di Foundry. Agen sisi server memiliki instruksi dan alatnya, sehingga AgentConfig.Instructions diabaikan untuk target ini.
a := foundryprovider.NewAgent(
endpoint,
token,
foundryprovider.ServerAgent("my-agent"),
foundryprovider.AgentConfig{
Config: agent.Config{
Name: "my-agent",
},
},
)
resp, err := a.RunText(ctx, "Summarize the current project status.").Collect()
Tools
Agen Foundry yang didukung proyek mendukung antarmuka alat standar Go Agent Framework untuk alat lokal dan deklarasi alat terhosting yang didukung.
| Alat | Status | Notes |
|---|---|---|
| Peralatan Fungsional | Dukungan | Fungsi berjalan di dalam proses Go Anda. |
| Persetujuan Alat | Dukungan | Bekerja dengan alat fungsi lokal melalui perulangan panggilan otomatis alat. |
| Penerjemah Kode | Dukungan | Gunakan &hostedtool.CodeInterpreter{}. |
| Pencarian Web | Dukungan | Gunakan &hostedtool.WebSearch{}. |
| Alat MCP Lokal | Dukungan | Gunakan tool/mcptool untuk menyambungkan ke server MCP dan mengekspos alatnya secara lokal. |
| Alat MCP yang Dihosting | Saat ini belum didokumentasikan untuk Go Foundry | Gunakan alat MCP lokal saat Anda memerlukan server MCP dengan agen Go Foundry. |
| Kotak Alat Microsoft Foundry | Saat ini tidak terekspos melalui pembantu Go. |
Untuk alat fungsi lokal, tambahkan nilai tool.Tool hingga agent.Config.Tools:
a := foundryprovider.NewAgent(
endpoint,
token,
foundryprovider.ModelDeployment(model),
foundryprovider.AgentConfig{
Instructions: "You are a helpful assistant.",
Config: agent.Config{
Tools: []tool.Tool{weatherTool},
},
},
)
Untuk eksekusi kode yang dihosting, berikan deklarasi alat yang dihosting:
a := foundryprovider.NewAgent(
endpoint,
token,
foundryprovider.ModelDeployment(model),
foundryprovider.AgentConfig{
Instructions: "You solve problems with code.",
Config: agent.Config{
Tools: []tool.Tool{&hostedtool.CodeInterpreter{}},
},
},
)
Header klien dan model yang dilayani
Foundry menerima header x-client-* dalam setiap eksekusi. Tambahkan dengan foundryprovider.WithClientHeader atau foundryprovider.WithClientHeaders:
resp, err := a.RunText(
ctx,
"Hello!",
foundryprovider.WithClientHeader("x-client-scenario", "docs"),
).Collect()
Saat Foundry mengembalikan header respons x-ms-served-model, penyedia Go menambahkannya ke properti tambahan respons/pembaruan sebagai ServedModel.
if servedModel, ok := resp.AdditionalProperties["ServedModel"].(string); ok {
fmt.Println(servedModel)
}
Penyedia memori untuk foundry
Gunakan foundryprovider.NewMemoryProvider saat Anda ingin agen Agent Framework mengambil data dari dan memperbarui penyimpanan memori yang dikelola Foundry pada setiap eksekusi.
import (
"log/slog"
"github.com/microsoft/agent-framework-go/agent"
"github.com/microsoft/agent-framework-go/provider/foundryprovider"
)
memoryProvider := foundryprovider.NewMemoryProvider(
endpoint,
tokenCredential,
"memory-store-sample",
func(*agent.Session) string { return "user-123" },
foundryprovider.MemoryProviderConfig{
Logger: slog.Default(),
},
)
a := foundryprovider.NewAgent(
endpoint,
tokenCredential,
foundryprovider.ModelDeployment(model),
foundryprovider.AgentConfig{
Instructions: "Use known memories about the user when responding.",
Config: agent.Config{
Name: "FoundryMemoryAgent",
ContextProviders: []agent.ContextProvider{memoryProvider},
},
},
)
Titik akhir harus berupa titik akhir Microsoft Foundry yang dilingkup proyek, dan penyimpanan memori harus sudah ada dalam proyek tersebut. Panggilan balik cakupan harus mengembalikan kunci partisi pengguna, penyewa, atau percakapan yang stabil.
Tip
Lihat sampel Foundry memory Go untuk contoh lengkap yang dapat dijalankan.
Kekurangan Go Saat Ini
Dukungan Go saat ini tidak menyertakan API penyebaran/siklus hidup/admin yang dihosting Foundry, klien penyematan, atau pembantu khusus Go untuk Microsoft Foundry Toolbox. Gunakan portal Foundry atau SDK layanan untuk operasi tersebut.