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 merangkai komponen penyusun kerangka kerja agen yang sudah ada, alih-alih mendefinisikan runtime agen yang terpisah:

  1. Klien chat — menghubungkan agen dengan 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, observabilitas, dan perulangan terbatas 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 alat uji Panduan kanonis
Pemanggilan fungsi Diaktifkan dengan batas iterasi per permintaan yang dapat dikonfigurasi. Alat fungsi
Persistensi riwayat per panggilan layanan Menyimpan riwayat setelah setiap panggilan model dalam proses pemanggilan alat. Sesi
Pemadatan Diaktifkan saat batas token atau strategi kustom disediakan. Pemadatan
Pelacakan tugas Diaktifkan secara default. Perencanaan dan daftar tugas
Mode agen Mode rencana dan eksekusi diaktifkan secara default. Perencanaan dan daftar tugas
Memori file dan akses file Memori file sesi diaktifkan secara bawaan; akses file yang dibagikan bersifat opsional. Penyedia konteks
Persetujuan alat Persetujuan permanen dan aturan persetujuan otomatis aktif secara default. Persetujuan alat
OpenTelemetry Observabilitas agen diaktifkan secara bawaan. Keterlihatan
Pencarian web Ditambahkan secara default di mana klien obrolan yang dipilih mendukungnya. Pencarian web
Keterampilan Agen Diaktifkan secara bawaan di .NET; diaktifkan secara opsional 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. Peralatan shell
Perulangan Pemanggilan ulang dengan batasan berdasarkan evaluator atau predikat, bersifat opsional. Perulangan agen

Pendelegasian agen latar belakang terpisah dari respons latar belakang yang dikelola oleh penyedia. Agen latar belakang menjalankan agen anak untuk tugas yang didelegasikan; respons latar belakang memeriksa status secara berkala atau melanjutkan satu permintaan ke penyedia dengan menggunakan token kelanjutan.

Buat agen harness

Paket Microsoft.Agents.AI.Harness mengekspos HarnessAgent dalam ruang nama Microsoft.Agents.AI. Buat satu dari IChatClient apa pun dengan AsHarnessAgent, atau buat HarnessAgent 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 bawaan. 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. Aktifkan akses file dengan FileAccessStore, delegasi latar belakang dengan BackgroundAgents, dan pengulangan dengan LoopEvaluators.

Buat agen harness

create_harness_agent factory mengembalikan Agent yang telah dikonfigurasi sepenuhnya:

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 bawaan. 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. Kemampuan bersifat opsional melalui skills_provider atau skills_paths; akses file, agen latar belakang, alat shell, dan perulangan juga bersifat opsional.

Nota

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

Nota

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

Contoh UX terminal

Harness tidak meresepkan antarmuka aplikasi. Repositori ini mencakup contoh aplikasi terminal yang menayangkan output secara streaming, menampilkan daftar tugas dan mode saat ini, menampilkan prompt persetujuan alat, serta menyediakan perintah seperti /todos, /mode, dan /exit.

Penting

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 contoh .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 contoh Python Harness.

Repositori ini saat ini tidak menyertakan sampel terminal Go Harness dalam bentuk paket.

Langkah berikutnya

Mempelajari secara lebih mendalam