عامل Harness

تسخير العامل هو دعم وقت التشغيل الذي يحول نموذج اللغة إلى عامل يمكنه أداء العمل. فهو يقود استدعاءات النموذج والأدوات، ويدير حالة المحادثة والسياق، ويطبق نهج الموافقة، ويمكنه الحفاظ على تقدم العامل من خلال مهمة متعددة الخطوات.

يوفر إطار عمل العامل Harness متضمنا للرأي والبطاريات للبحث والترميز وتحليل البيانات وغيرها من الأعمال طويلة الأمد. يمكنك توفير عميل دردشة وتخصيص القدرات التي يحتاجها تطبيقك فقط.

Architecture

يؤلف Harness كتل إنشاء إطار عمل العامل الموجودة بدلا من تحديد وقت تشغيل وكيل منفصل:

  1. عميل الدردشة — يربط العامل بنموذج.
  2. مسار الدردشة — يضيف استدعاء الدالة، وحقن الرسائل، واستمرار محفوظات استدعاء كل خدمة، والضغط الاختياري.
  3. موفرو الوكيل والسياق — أضف إرشادات وأدوات وذاكرة وحالة المهام وأوضاع التشغيل والقدرات الاختيارية في نطاق الجلسة.
  4. البرامج الوسيطة والمزخرفات — أضف معالجة الموافقة وإمكانية الملاحظة والتكرارات الحلقية الاختيارية المحددة.
  5. تجربة المستخدم للتطبيق — يبث الاستجابات ويعرض التقدم ويجمع الإدخال مثل موافقات الأدوات.

يبقى الكائن الناتج عامل إطار عمل عامل عادي: HarnessAgent مشتق من AIAgent في .NET، أو Agent تم إرجاعه بواسطة create_harness_agent في Python. تستخدم جلسات العمل الخاصة به نفس تجريدات جلسة العملوموفر السياق مثل العوامل الأخرى.

مصفوفة قدرة Harness

Capability سلوك Harness إرشادات متعارف عليه
استدعاء الدالة ممكن بحد تكرار قابل للتكوين لكل طلب. أدوات الدوال
استمرار محفوظات المكالمة لكل خدمة تستمر المحفوظات بعد كل استدعاء نموذج في تشغيل استدعاء الأدوات. جلسات العمل
الضغط يتم تمكينه عند توفير حدود الرمز المميز أو استراتيجية مخصصة. الضغط
تعقب المهام ممكَّن بشكل افتراضي. التخطيط و todos
أوضاع العامل يتم تمكين أوضاع التخطيط والتنفيذ بشكل افتراضي. التخطيط و todos
ذاكرة الملف والوصول إلى الملفات يتم تمكين ذاكرة ملف جلسة العمل بشكل افتراضي؛ الوصول إلى الملفات المشتركة هو الاشتراك. موفرو السياق
الموافقة على الأداة يتم تمكين الموافقات الدائمة وقواعد الموافقة التلقائية بشكل افتراضي. الموافقة على الأداة
التتبع المفتوح يتم تمكين إمكانية مراقبة العامل بشكل افتراضي. إمكانية المراقبة
البحث على الويب تمت إضافته بشكل افتراضي حيث يدعمه عميل الدردشة المحدد. البحث على الويب
مهارات الوكيل ممكن افتراضيا في .NET؛ الاشتراك من خلال موفر أو مسارات في Python. مهارات العامل
وكلاء الخلفية تفويض متوازي اختياري إلى عوامل تابعة مسماة. وكلاء الخلفية
تنفيذ Shell مكون من حزمة shell؛ يمكن لمصنع Python توصيله تلقائيا. أدوات Shell
التكرار الحلقي إعادة استدعاء محددة اختيارية مدفوعة من قبل المقيمين أو المسندات. التكرار الحلقي للعامل

تفويض وكيل الخلفية منفصل عن استجابات الخلفية التي يديرها الموفر. يقوم وكلاء الخلفية بتشغيل وكلاء تابعين على المهام المفوضة؛ استطلاع استجابات الخلفية أو استئناف طلب موفر واحد باستخدام رمز مميز للمتابعة.

إنشاء عامل تسخير

تعرض Microsoft.Agents.AI.Harness الحزمة HarnessAgent في Microsoft.Agents.AI مساحة الاسم. إنشاء واحد من أي IChatClient باستخدام AsHarnessAgent، أو إنشاء HarnessAgent مباشرة:

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);

يستخدم HarnessAgentOptions لتعيين إرشادات التشغيل على مستوى التسخير والتعليمات الخاصة بالوكيل وخيارات الميزات:

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 يوفر إرشادات التسخير الافتراضية. HarnessInstructions يظهر قبل ChatOptions.Instructions.

تخصيص التكوين

تحتوي القدرات الافتراضية على خيارات مستهدفة، بما في ذلك DisableTodoProviderDisableAgentModeProviderDisableFileMemoryو و DisableAgentSkillsProviderو.DisableCompactionDisableWebSearchDisableToolAutoApprovalDisableOpenTelemetry

إضافة موفري سياق مخصصين باستخدام AIContextProviders. اشترك في الوصول إلى الملفات باستخدام FileAccessStore، وتفويض الخلفية مع BackgroundAgents، والتكرار الحلقي باستخدام LoopEvaluators.

إنشاء عامل تسخير

يقوم create_harness_agent المصنع بإرجاع مكون Agentبالكامل :

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)

تعيين التعليمات الخاصة بمستوى التسخير والعامل بشكل منفصل:

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 يوفر إرشادات التسخير الافتراضية. harness_instructions يظهر قبل agent_instructions.

تخصيص التكوين

تعطيل الإعدادات الافتراضية بخيارات مثل disable_todoو disable_modedisable_file_memoryوdisable_tool_auto_approvaldisable_web_search.disable_compaction

استبدل الموفرين المضمنين ب todo_provider أو mode_provider، وأضف موفرين ب context_providers. المهارات هي الاشتراك من خلال skills_provider أو skills_paths؛ الوصول إلى الملفات، وكلاء الخلفية، أدوات shell، والتكرار الحلقي هي أيضا الاشتراك.

Note

create_harness_agent تم إصداره. يظل وكلاء الخلفية والوصول إلى الملفات والتكرارات الحلقية تجريبية، وتأتي أدوات shell من حزمة ما قبل الإصدار agent-framework-tools .

Note

لا تتوفر حاليا حزمة Go Harness. قم بإنشاء عامل Go المقابل وموفر السياق والضغط وحزم البرامج الوسيطة مباشرة. راجع مستودع Agent Framework Go للحصول على الدعم الحالي.

نموذج UX الطرفي

لا يصف Harness واجهة تطبيق. يتضمن المستودع نماذج من التطبيقات الطرفية التي تقوم ببث الإخراج وعرض المهام ووضعها الحالي ومطالبات الموافقة على أداة surface وتوفير أوامر مثل /todosو /modeو /exit.

Important

مشاريع وحدة التحكم هذه هي عينات، وليس مكونات إطار العمل المشحونة. استخدمها كأمثلة قابلة للتشغيل أو كنقطة بداية لتجربة المحطة الطرفية الخاصة بك.

نقطة إدخال عينة .NET هي HarnessConsole.RunAgentAsync:

using Harness.Shared.Console;

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

تخصيص العينة مع المراقبين ومنسقات الأدوات ومعالجات الأوامر و HarnessConsoleOptions. راجع عينات .NET Harness.

يستخدم نموذج Python الحزمة المستندة إلى console Textual بجانب عينات Harness:

from console import run_agent_async

await run_agent_async(agent)

تخصيص العينة مع المراقبين والمنسقين والأوامر ومكونات واجهة المستخدم. راجع عينات Python Harness.

لا يتضمن المستودع حاليا نموذج محطة Go Harness الطرفية المحزمة.

الخطوات التالية

التعمق أكثر