Gambaran Umum Alat

Agent Framework mendukung berbagai jenis alat yang memperluas kemampuan agen. Alat memungkinkan agen berinteraksi dengan sistem eksternal, menjalankan kode, mencari data, dan banyak lagi.

Jenis Alat

Jenis Alat Deskripsi
Alat Fungsi Kode kustom yang dapat dipanggil agen selama percakapan
Penerjemah Kode Menjalankan kode di lingkungan terkotakpasir
Pencarian File Mencari melalui file yang diunggah
Pencarian Web Cari informasi di web
Alat MCP yang Dihosting Server MCP yang dipanggil oleh runtime penyedia
Alat MCP Lokal Server MCP yang berjalan secara lokal atau pada host kustom
Kotak Alat Foundry Bernama, bundel versi konfigurasi alat yang dihosting yang dikelola dalam proyek Foundry
Jenis Alat Deskripsi
Alat Fungsi Kode kustom yang dapat dipanggil agen selama percakapan
Penerjemah Kode Menjalankan kode di lingkungan terkotakpasir
Pencarian File Mencari melalui file yang diunggah
Pencarian Web Cari informasi di web
Alat MCP yang Dihosting Server MCP yang dipanggil oleh runtime penyedia
Alat MCP Lokal Server MCP yang berjalan secara lokal atau pada host kustom
Kotak Alat Foundry Bernama, bundel versi konfigurasi alat yang dihosting yang dikelola dalam proyek Foundry
Pembuatan Gambar Pembuatan gambar yang dihosting pada runtime Respons Foundry / OpenAI
Shell Eksekusi shell yang dihosting pada runtime Respons OpenAI — berbeda dari alat runtime shell/file/URL bawaan CLI GitHub Copilot
Bing Grounding Web grounding melalui Grounding Anda sendiri dengan sumber daya Bing Search — eksperimental
Pencarian Kustom Bing Grounding Bing dibatasi untuk daftar domain yang dikumpulkan — pratinjau
Pencarian Azure AI Mengkueri indeks Pencarian Azure AI melalui koneksi Foundry — eksperimental
SharePoint Jawaban dasar dalam konten SharePoint — pratinjau
Microsoft Fabric Mengkueri agen data Fabric — pratinjau
Pencarian Memori Cari penyimpanan memori yang dikelola Foundry — pratinjau
Penggunaan Komputer Mendorong lingkungan desktop atau browser — pratinjau
Automasi Browser Mengendarai browser melalui Azure Playwright — pratinjau
Alat Agen ke Agen (A2A) Memanggil agen A2A jarak jauh sebagai alat dari agen Foundry — pratinjau

Nota

Alat yang ditandai eksperimental atau pratinjau didokumentasikan di halaman penyedia yang ExperimentalWarning relevan dan memancarkan pertama kalinya mereka digunakan dalam proses.

Jenis Alat Package Deskripsi
Alat Fungsi tool/functool Fungsi Go yang diketik dengan skema JSON yang dapat dipanggil agen
Agen sebagai Alat Fungsi tool/agenttool Membungkus agen sebagai tool.FuncTool sehingga agen lain dapat memanggilnya
Alat MCP Lokal tool/mcptool Menyambungkan ke server MCP dan mengekspos alat mereka sebagai tool.FuncTool nilai
Pencarian Web tool/hostedtool.WebSearch Mendeklarasikan pencarian web sisi penyedia saat layanan pendukung mendukungnya
Pencarian File tool/hostedtool.FileSearch Mendeklarasikan file sisi penyedia atau pencarian penyimpanan vektor
Penerjemah Kode tool/hostedtool.CodeInterpreter Menyatakan eksekusi kode sisi penyedia
Alat MCP yang Dihosting tool/hostedtool.MCPServer Mendeklarasikan server MCP untuk panggilan runtime penyedia
Alat shell lokal tool/shelltool Jalankan perintah shell lokal melalui alat fungsi yang memerlukan persetujuan secara default

Semua alat mengimplementasikan tool.Tool antarmuka:

type Tool interface {
    Name() string
    Description() string
}

Alat fungsi juga mengimplementasikan tool.FuncTool:

import "context"

type FuncTool interface {
    Tool
    Schema() any
    ReturnSchema() any
    Call(ctx context.Context, arguments string) (any, error)
}

Sebagian besar aplikasi membuat alat fungsi dengan functool.New atau functool.MustNew daripada menerapkan secara FuncTool langsung. Kerangka kerja menggunakan tanda tangan fungsi Go atau tag struktur untuk membangun skema yang diekspos ke model.

Teruskan alat ke agen melalui 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, calculatorTool},
    },
})

Atau tambahkan alat per jalankan:

resp, err := a.RunText(ctx, "What's the weather?", agent.WithTool(weatherTool)).Collect()

Persetujuan Alat

Persetujuan Alat adalah fitur kerangka kerja yang memungkinkan Anda memicu pemanggilan alat melalui keputusan human-in-the-loop sebelum model menerima hasilnya. Ini bekerja dengan penyedia yang kliennya memanggil alat secara lokal; alat yang dihosting sisi layanan mengikuti perilaku persetujuan penyedia sendiri. Lihat halaman Persetujuan Alat untuk pola lengkap, termasuk bagaimana persetujuan berinteraksi dengan sesi, streaming, dan middleware.

Untuk Go, tandai alat yang dapat dipanggil dengan tool.ApprovalRequiredFunc atau gunakan alat yang sudah mengimplementasikan tool.ApprovalRequiredTool, seperti alat shell lokal. Permintaan persetujuan dan respons mengalir melalui middleware panggilan otomatis alat, sehingga mereka bekerja dengan penyedia yang mengembalikan panggilan fungsi lokal.

Matriks Dukungan Penyedia

Penyedia OpenAI dan Azure OpenAI masing-masing menawarkan dua jenis klien - Respons dan Penyelesaian Obrolan - dengan kemampuan alat yang berbeda. Klien Azure OpenAI mencerminkan setara OpenAI mereka. Copilot Studio dan A2A berjalan pada layanan jarak jauh sehingga kemampuannya dikonfigurasi pada agen jarak jauh daripada melalui klien Agent Framework — mereka tidak tercantum dalam matriks.

Jenis Alat Responses to Penyelesaian Obrolan Pengecoran Anthropic Ollama GitHub Copilot
Alat Fungsi
Penerjemah Kode
Pencarian File
Pencarian Web
Alat MCP yang Dihosting
Alat MCP Lokal

Nota

Kolom Responses dan Chat Completion berlaku untuk OpenAI dan Azure OpenAI — varian Azure mencerminkan dukungan alat yang sama dengan mitra OpenAI mereka. OpenAI Assistants API yang tidak digunakan lagi; untuk panduan migrasi lihat panduan migrasi Kernel Semantik.

Matriks Dukungan Penyedia

Penyedia OpenAI dan Azure OpenAI masing-masing menawarkan beberapa jenis klien dengan kemampuan alat yang berbeda. Klien Azure OpenAI mencerminkan setara OpenAI mereka. Kolom Foundry berlaku untuk FoundryChatClient — untuk FoundryAgent, alat dikonfigurasi pada definisi agen Foundry (lihat Apa yang berfungsi dan apa yang tidak dengan FoundryAgent). Copilot Studio dan A2A berjalan pada layanan jarak jauh sehingga kemampuannya dikonfigurasi pada agen jarak jauh daripada melalui klien Agent Framework — mereka tidak tercantum dalam matriks.

Jenis Alat Responses to Penyelesaian Obrolan Pengecoran Anthropic Ollama Foundry Local GitHub Copilot
Alat Fungsi ⚠️¹ ⚠️¹
Penerjemah Kode
Pencarian File
Pencarian Web
Pembuatan Gambar
Hosted Shell (get_shell_tool)
Shell bawaan / sistem file / pengambilan URL ✅²
Alat MCP yang Dihosting
Alat MCP Lokal
Kotak Alat Foundry
Bing Grounding (eksperimental)
Pencarian Kustom Bing (pratinjau)
Pencarian Azure AI (eksperimental)
SharePoint (pratinjau)
Microsoft Fabric (pratinjau)
Pencarian Memori (pratinjau)
Penggunaan Komputer (pratinjau)
Automasi Browser (pratinjau)
Alat Agen-ke-Agen (A2A) (pratinjau)

¹ Tergantung pada panggilan fungsi pendukung model lokal yang dipilih. ² Dibangun ke dalam runtime CLI GitHub Copilot, dijaga oleh penangan izin. Permukaan yang berbeda dari OpenAI get_shell_tool.

Nota

Kolom Responses dan Chat Completion berlaku untuk OpenAI dan Azure OpenAI — varian Azure mencerminkan dukungan alat yang sama dengan mitra OpenAI mereka. Alat MCP lokal berfungsi dengan penyedia apa pun yang mendukung alat fungsi.

Matriks Dukungan Penyedia

Go SDK mengekspos Microsoft Foundry melalui foundryprovider dan OpenAI/Azure OpenAI melalui openaiprovider. Alat yang dihosting adalah deklarasi: Go SDK mengirimkannya ke penyedia, dan penyedia memutuskan apakah kemampuan yang dihosting tool/hostedtool tersedia.

Jenis Alat Pengecoran Responses to Penyelesaian Percakapan Anthropic
Alat Fungsi
Agen sebagai Alat Fungsi
Alat MCP Lokal
Pencarian Web
Pencarian File
Penerjemah Kode
Alat MCP yang Dihosting
Alat shell lokal

Nota

Alat MCP lokal dan alat shell lokal adalah alat fungsi dari sudut pandang penyedia, sehingga mereka mengikuti dukungan alat fungsi. Alat yang dihosting seperti hostedtool.FileSearch, hostedtool.CodeInterpreter, dan hostedtool.MCPServer dijalankan oleh layanan AI, bukan oleh proses Go.

Menggunakan Agen sebagai Alat Fungsi

Anda dapat menggunakan agen sebagai alat fungsi untuk agen lain, mengaktifkan komposisi agen dan alur kerja yang lebih canggih. Agen dalam dikonversi ke alat fungsi dan disediakan ke agen luar, yang kemudian dapat memanggilnya sesuai kebutuhan.

.AsAIFunction() Panggil AIAgent untuk mengonversinya ke alat fungsi yang dapat disediakan ke agen lain:

// Create the inner agent with its own tools
AIAgent weatherAgent = new AIProjectClient(
    new Uri("<your-foundry-project-endpoint>"),
    new DefaultAzureCredential())
     .AsAIAgent(
        model: "gpt-4o-mini",
        instructions: "You answer questions about the weather.",
        name: "WeatherAgent",
        description: "An agent that answers questions about the weather.",
        tools: [AIFunctionFactory.Create(GetWeather)]);

// Create the main agent and provide the inner agent as a function tool
AIAgent agent = new AIProjectClient(
    new Uri("<your-foundry-project-endpoint>"),
    new DefaultAzureCredential())
     .AsAIAgent(
        model: "gpt-4o-mini",
        instructions: "You are a helpful assistant.",
        tools: [weatherAgent.AsAIFunction()]);

// The main agent can now call the weather agent as a tool
Console.WriteLine(await agent.RunAsync("What is the weather like in Amsterdam?"));

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.

Panggil .as_tool() agen untuk mengonversinya ke alat fungsi yang dapat disediakan ke agen lain:

import os
from agent_framework.openai import OpenAIChatCompletionClient
from azure.identity import AzureCliCredential

# Create the inner agent with its own tools
weather_agent = OpenAIChatCompletionClient(
    model=os.environ["AZURE_OPENAI_CHAT_COMPLETION_MODEL"],
    azure_endpoint=os.environ["AZURE_OPENAI_ENDPOINT"],
    api_version=os.getenv("AZURE_OPENAI_API_VERSION"),
    credential=AzureCliCredential(),
).as_agent(
    name="WeatherAgent",
    description="An agent that answers questions about the weather.",
    instructions="You answer questions about the weather.",
    tools=get_weather
)

# Create the main agent and provide the inner agent as a function tool
main_agent = OpenAIChatCompletionClient(
    model=os.environ["AZURE_OPENAI_CHAT_COMPLETION_MODEL"],
    azure_endpoint=os.environ["AZURE_OPENAI_ENDPOINT"],
    api_version=os.getenv("AZURE_OPENAI_API_VERSION"),
    credential=AzureCliCredential(),
).as_agent(
    instructions="You are a helpful assistant.",
    tools=weather_agent.as_tool()
)

# The main agent can now call the weather agent as a tool
result = await main_agent.run("What is the weather like in Amsterdam?")
print(result.text)

Anda juga dapat menyesuaikan nama alat, deskripsi, dan nama argumen:

weather_tool = weather_agent.as_tool(
    name="WeatherLookup",
    description="Look up weather information for any location",
    arg_name="query",
    arg_description="The weather query or location"
)

Bungkus agen dengan agenttool.New untuk membuatnya tersedia sebagai tool.FuncTool untuk agen lain:

import (
    "github.com/microsoft/agent-framework-go/agent"
    "github.com/microsoft/agent-framework-go/provider/foundryprovider"
    "github.com/microsoft/agent-framework-go/tool"
    "github.com/microsoft/agent-framework-go/tool/agenttool"
)

weatherAgent := foundryprovider.NewAgent(endpoint, token, foundryprovider.ModelDeployment(model), foundryprovider.AgentConfig{
    Instructions: "You answer questions about the weather.",
    Config: agent.Config{
        Name:        "WeatherAgent",
        Description: "An agent that answers weather questions.",
        Tools:       []tool.Tool{weatherTool},
    },
})

mainAgent := foundryprovider.NewAgent(endpoint, token, foundryprovider.ModelDeployment(model), foundryprovider.AgentConfig{
    Instructions: "You are a helpful assistant.",
    Config: agent.Config{
        Tools: []tool.Tool{agenttool.New(weatherAgent, agenttool.Config{})},
    },
})

resp, err := mainAgent.RunText(ctx, "Should I bring an umbrella to Amsterdam?").Collect()

Anda juga dapat mengekspos agen yang dibungkus yang sama melalui MCP dengan mcptool.AddTool, karena agenttool.New mengembalikan alat fungsi.

Tip

Lihat agen sebagai sampel alat fungsi dan agen sebagai sampel alat MCP untuk contoh lengkap yang dapat dijalankan.

Langkah selanjutnya