Agen Harness

Agent Harness adalah perancah runtime yang mengubah model bahasa menjadi agen yang dapat melakukan pekerjaan. Ini mendorong panggilan model dan alat, mengelola status dan konteks percakapan, menerapkan kebijakan persetujuan, dan dapat menjaga agen tetap maju melalui tugas multi-langkah.

Agent Framework menyediakan Harness yang berpendapat dan disertakan baterai untuk penelitian, pengkodan, analisis data, dan pekerjaan jangka panjang lainnya. Anda menyediakan klien obrolan dan hanya menyesuaikan kemampuan yang dibutuhkan aplikasi Anda.

Architecture

Harness menyusun blok penyusun Kerangka Kerja Agen yang ada daripada menentukan runtime agen terpisah:

  1. Klien obrolan — menghubungkan agen ke model.
  2. Alur obrolan — menambahkan pemanggilan fungsi, injeksi pesan, persistensi riwayat per panggilan layanan, dan pemadatan opsional.
  3. Penyedia agen dan konteks — tambahkan instruksi, alat, memori, status todo, mode operasi, dan kemampuan opsional yang tercakup sesi.
  4. Middleware dan dekorator — tambahkan penanganan persetujuan, pengamatan, dan perulangan terikat opsional.
  5. UX Aplikasi — mengalirkan respons, menampilkan kemajuan, dan mengumpulkan input seperti persetujuan alat.

Objek yang dihasilkan tetap menjadi agen Agent Framework normal: HarnessAgent yang berasal dari AIAgent dalam .NET, atau yang Agent dikembalikan oleh create_harness_agent dalam Python. Sesinya menggunakan sesi dan abstraksi penyedia konteks yang sama dengan agen lain.

Memanfaatkan matriks kemampuan

Capability Perilaku harness Panduan kanonis
Pemanggilan fungsi Diaktifkan dengan batas iterasi per permintaan yang dapat dikonfigurasi. Alat fungsi
Persistensi riwayat per panggilan layanan Mempertahankan riwayat setelah setiap panggilan model dalam eksekusi panggilan alat. Sesi
Pemadatan Diaktifkan saat batas token atau strategi kustom disediakan. Pemadatan
Pelacakan todo Diaktifkan secara default. Perencanaan dan todos
Mode agen Mode rencana dan eksekusi diaktifkan secara default. Perencanaan dan todos
Memori file dan akses file Memori file sesi diaktifkan secara default; akses file bersama adalah keikutsertaan. Penyedia konteks
Persetujuan alat Persetujuan berdiri dan aturan persetujuan otomatis diaktifkan secara default. Persetujuan alat
OpenTelemetry Pengamatan agen diaktifkan secara default. Keterlihatan
Pencarian web Ditambahkan secara default di mana klien obrolan yang dipilih mendukungnya. Pencarian web
Keterampilan Agen Diaktifkan secara default di .NET; ikut serta melalui penyedia atau jalur di Python. Keterampilan Agen
Agen latar belakang Delegasi paralel opsional untuk agen anak bernama. Agen latar belakang
Eksekusi shell Terdiri dari paket shell; pabrik Python dapat menyambungkannya secara otomatis. Alat shell
Perulangan Pemanggilan ulang terikat opsional yang didorong oleh evaluator atau predikat. Perulangan agen

Delegasi agen latar belakang terpisah dari respons latar belakang yang dikelola penyedia. Agen latar belakang menjalankan agen anak pada tugas yang didelegasikan; latar belakang menanggapi polling atau melanjutkan satu permintaan penyedia dengan menggunakan token kelanjutan.

Membuat agen harness

Paket Microsoft.Agents.AI.Harness diekspos HarnessAgent di Microsoft.Agents.AI namespace. Buat dari mana saja IChatClient dengan AsHarnessAgent, atau buat HarnessAgent secara langsung:

using Microsoft.Agents.AI;
using Microsoft.Extensions.AI;

AIAgent agent = chatClient.AsHarnessAgent();

AgentResponse response = await agent.RunAsync("Plan a weekend trip to Seattle.");
Console.WriteLine(response.Text);

Gunakan HarnessAgentOptions untuk mengatur panduan operasi tingkat harness, instruksi khusus agen, dan opsi fitur:

AIAgent agent = chatClient.AsHarnessAgent(new HarnessAgentOptions
{
    Name = "research-agent",
    HarnessInstructions = "Use tools deliberately and report verified results.",
    ChatOptions = new ChatOptions
    {
        Instructions = "You are a research assistant focused on academic sources.",
    },
    MaxContextWindowTokens = 128_000,
    MaxOutputTokens = 16_384,
});

HarnessAgent.DefaultInstructions menyediakan panduan harness default. HarnessInstructions muncul sebelum ChatOptions.Instructions.

Menyesuaikan komposisi

Kemampuan default memiliki opsi yang ditargetkan, termasuk DisableTodoProvider, , DisableAgentModeProvider, DisableFileMemoryDisableAgentSkillsProvider, DisableWebSearch, DisableToolAutoApproval, DisableOpenTelemetry, dan DisableCompaction.

Tambahkan penyedia konteks kustom dengan AIContextProviders. Ikut serta dalam akses file dengan FileAccessStoredelegasi latar belakang dengan BackgroundAgents, dan perulangan dengan LoopEvaluators.

Membuat agen harness

create_harness_agent Pabrik mengembalikan yang dikonfigurasi Agentsepenuhnya :

from agent_framework import create_harness_agent
from agent_framework.openai import OpenAIChatClient

agent = create_harness_agent(
    client=OpenAIChatClient(model="gpt-4o"),
)

session = agent.create_session()
response = await agent.run("Plan a weekend trip to Seattle.", session=session)
print(response.text)

Atur instruksi tingkat harness dan khusus agen secara terpisah:

agent = create_harness_agent(
    client=client,
    name="research-agent",
    harness_instructions="Use tools deliberately and report verified results.",
    agent_instructions="You are a research assistant focused on academic sources.",
    max_context_window_tokens=128_000,
    max_output_tokens=16_384,
)

DEFAULT_HARNESS_INSTRUCTIONS menyediakan panduan harness default. harness_instructions muncul sebelum agent_instructions.

Menyesuaikan komposisi

Nonaktifkan default dengan opsi seperti disable_todo, , disable_mode, disable_file_memory, disable_web_searchdisable_tool_auto_approval, dan disable_compaction.

Ganti penyedia bawaan dengan todo_provider atau mode_provider, dan tambahkan penyedia dengan context_providers. Keterampilan ikut serta melalui skills_provider atau skills_paths; akses file, agen latar belakang, alat shell, dan perulangan juga ikut serta.

Nota

create_harness_agent dirilis. Agen latar belakang, akses file, dan perulangan tetap eksperimental, dan alat shell berasal dari paket pra-rilis agent-framework-tools .

Nota

Go Harness paket saat ini tidak tersedia. Buat agen Go, penyedia konteks, pemadatan, dan paket middleware yang sesuai secara langsung. Lihat repositori Agent Framework Go untuk dukungan saat ini.

UX terminal sampel

Harness tidak meresepkan antarmuka aplikasi. Repositori mencakup aplikasi terminal sampel yang mengalirkan output, menampilkan todos dan mode saat ini, perintah persetujuan alat permukaan, dan menyediakan perintah seperti /todos, , /modedan /exit.

Important

Proyek konsol ini adalah sampel, bukan komponen kerangka kerja yang dikirim. Gunakan sebagai contoh yang dapat dijalankan atau sebagai titik awal untuk pengalaman terminal Anda sendiri.

Titik masuk sampel .NET adalah HarnessConsole.RunAgentAsync:

using Harness.Shared.Console;

await HarnessConsole.RunAgentAsync(
    agent,
    userPrompt: "Ask me anything to get started.");

Sesuaikan sampel dengan pengamat, pemformat alat, penangan perintah, dan HarnessConsoleOptions. Lihat sampel .NET Harness.

Sampel Python menggunakan paket berbasis console Tekstual di samping sampel Harness:

from console import run_agent_async

await run_agent_async(agent)

Sesuaikan sampel dengan pengamat, pemformat, perintah, dan komponen UI. Lihat sampel Python Harness.

Repositori saat ini tidak menyertakan sampel terminal Go Harness paket.

Langkah berikutnya

Mempelajari secara lebih mendalam