Ügynökhám

Az ügynök-keretrendszer az a futtatásidejű keret, amely a nyelvi modellt olyan ügynökké alakítja, amely képes feladatokat végrehajtani. Irányítja a modellek és eszközök hívását, kezeli a beszélgetés állapotát és kontextusát, jóváhagyási szabályokat alkalmaz, és képes biztosítani, hogy az ügynök egy többlépéses feladaton keresztül is folyamatosan haladjon előre.

Az Agent Framework a kutatáshoz, kódoláshoz, adatelemzéshez és egyéb hosszú ideig tartó munkához nyújt véleményezett, akkumulátorokkal rendelkező hámot. Ön megad egy csevegőügyfélt, és csak az alkalmazás által igényelt képességeket szabja testre.

Architecture

A Harness a meglévő ügynökkeretrendszer építőelemeiből áll össze, ahelyett hogy külön ügynök-futtatókörnyezetet határozna meg:

  1. Csevegőügyfél – az ügynököt egy modellhez csatlakoztatja.
  2. Csevegési folyamat – függvényhívást, üzenetinjektálást, szolgáltatásonkénti híváselőzmények megőrzését és opcionális tömörítést ad hozzá.
  3. Ügynök- és környezetszolgáltatók – munkamenet-hatókörű utasítások, eszközök, memória, teendőállapot, üzemeltetési módok és választható képességek hozzáadása.
  4. Köztes szoftver és dekorátorok — jóváhagyáskezelés, megfigyelhetőség és opcionális, korlátozott ciklusok hozzáadása.
  5. Alkalmazás-UX – streameli a válaszokat, megjeleníti az előrehaladást, és összegyűjti a bemeneteket, például az eszközjóváhagyásokat.

Az eredményül kapott objektum továbbra is egy normál Agent Framework-ügynök marad: a .NET-ben egy HarnessAgent, amely a(z) AIAgent osztályból származik, vagy Pythonban egy Agent, amelyet a(z) create_harness_agent ad vissza. A munkamenetek ugyanazokat a munkamenet- és környezetszolgáltatói absztrakciókat használják, mint más ügynökök.

Kihasználtsági képesség mátrixa

Capability A tesztkörnyezet viselkedése Kanonikus útmutató
Függvényhívás A kérelemenkénti iterációs korlát konfigurálható. Funkcióeszközök
Szolgáltatásonkénti híváselőzmények megőrzése Minden modellhívás után megőrzi az előzményeket egy eszközhívási futtatás során. Sessions
Tömörítés Engedélyezve, ha tokenkorlátok vagy egyéni stratégia van megadva. Tömörítés
Teendők nyomon követése Alapértelmezés szerint engedélyezve van. Tervezés és teendők
Ügynök üzemmódok A terv- és végrehajtási módok alapértelmezés szerint engedélyezve vannak. Tervezés és teendők
Fájlmemória és fájlhozzáférés A munkamenetfájl memóriája alapértelmezés szerint engedélyezve van; a megosztott fájlhozzáférés engedélyezése engedélyezve van. Kontextusszolgáltatók
Eszköz jóváhagyása Az állandó jóváhagyások és az automatikus jóváhagyási szabályok alapértelmezés szerint engedélyezve vannak. Eszköz jóváhagyása
OpenTelemetry Az ügynök megfigyelhetősége alapértelmezés szerint engedélyezve van. Megfigyelhetőség
Webes keresés Alapértelmezés szerint ott van hozzáadva, ahol a kiválasztott csevegőügyfél támogatja azt. Webes keresés
Ügynöki készségek A .NET-ben alapértelmezés szerint engedélyezve van; Pythonban szolgáltatón vagy elérési utakon keresztül külön bekapcsolható. Ügynöki készségek
Háttérügynökök Választható párhuzamos delegálás nevesített gyermekügynökökhöz. Háttérügynökök
Rendszerhéj végrehajtása A shell csomagból épül fel; a Python-gyártófüggvény automatikusan összekapcsolhatja. Shell-eszközök
Ismétlés Opcionális, értékelők vagy predikátumok által vezérelt, korlátozott újbóli meghívás. Ügynökhurkolás

A háttérügynök delegálása eltér a szolgáltató által felügyelt háttérválaszoktól. Háttérügynökök gyermekügynököket futtatnak delegált feladatok végrehajtására; a háttérválaszok egy szolgáltatói kérés állapotát kérdezik le, vagy folytatják azt egy folytatási token használatával.

Harness-ügynök létrehozása

A Microsoft.Agents.AI.Harness csomag a(z) Microsoft.Agents.AI névtérben teszi elérhetővé a(z) HarnessAgent elemet. Hozzon létre egyet bármely IChatClient elemből AsHarnessAgent használatával, vagy hozza létre közvetlenül a(z) HarnessAgent elemet:

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

A HarnessAgentOptions használatával beállíthatja a keretrendszerszintű működési útmutatást, az ügynökspecifikus utasításokat és a funkcióbeállításokat:

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 az alapértelmezett biztonsági övre vonatkozó útmutatást biztosítja. HarnessInstructions a(z) ChatOptions.Instructions előtt jelenik meg.

A kompozíció testreszabása

Az alapértelmezett képességek célzott lehetőségeket tartalmaznak, beleértve a következőket: DisableTodoProvider, DisableAgentModeProvider, DisableFileMemory, DisableAgentSkillsProvider, DisableWebSearch, DisableToolAutoApproval, DisableOpenTelemetry és DisableCompaction.

Egyéni kontextusszolgáltatók hozzáadása a AIContextProviders használatával. Jelentkezzen be a fájlhozzáféréshez a(z) FileAccessStore, a háttérdelegáláshoz a(z) BackgroundAgents és az ismétléshez a(z) LoopEvaluators használatával.

Harness-ügynök létrehozása

A create_harness_agent egy teljesen konfigurált Agent objektumot ad vissza:

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)

A hámszint és az ügynökspecifikus utasítások külön-külön állíthatók be:

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 az alapértelmezett biztonsági övre vonatkozó útmutatást biztosítja. harness_instructions agent_instructions előtt jelenik meg.

A kompozíció testreszabása

Tiltsa le az alapértelmezett értékeket olyan beállításokkal, mint a disable_todo, disable_mode, disable_file_memory, disable_web_search, disable_tool_auto_approvalés disable_compaction.

Cserélje le a beépített szolgáltatókat a(z) todo_provider vagy mode_provider használatával, és adjon hozzá szolgáltatókat a(z) context_providers használatával. A funkciók külön engedélyezhetők a(z) skills_provider vagy skills_paths használatával; a fájlhozzáférés, a háttérügynökök, a parancsértelmező-eszközök és az ismétlődő futtatás szintén külön engedélyezhetők.

Megjegyzés:

create_harness_agent kiadásra kerül. A háttérügynökök, a fájlhozzáférés és az ismétlődő végrehajtás továbbra is kísérleti jellegű, míg a shelleszközök a agent-framework-tools kiadás előtti csomagból származnak.

Megjegyzés:

A csomagolt Go Harness jelenleg nem érhető el. Közvetlenül készítse el a megfelelő Go-ügynök-, kontextusszolgáltató-, kompaktálási és middleware-csomagokat. A jelenlegi támogatásért tekintse meg az Agent Framework Go-adattárat .

Terminálminta felhasználói élménye

A Harness nem határoz meg alkalmazásinterfészt. A tároló olyan mintaterminál-alkalmazásokat tartalmaz, amelyek folyamatosan közvetítik a kimenetet, megjelenítik a teendőket és az aktuális módot, megjelenítik az eszközjóváhagyási kéréseket, valamint olyan parancsokat biztosítanak, mint a /todos, /mode és /exit.

Important

Ezek a konzolprojektek minták, nem szállított keretrendszerösszetevők. Használhatja őket futtatható példaként vagy a saját terminálélmény kiindulópontjaként.

A .NET mintakód belépési pontja ez: HarnessConsole.RunAgentAsync

using Harness.Shared.Console;

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

Testre szabhatja a mintát megfigyelőkkel, eszközformálókkal, parancskezelőkkel és HarnessConsoleOptions. Tekintse meg a .NET Harness mintákat.

A Python-minta a Harness minták mellett a Textual-alapú console csomagot használja:

from console import run_agent_async

await run_agent_async(agent)

Testre szabhatja a mintát megfigyelőkkel, formázókkal, parancsokkal és felhasználói felületi összetevőkkel. Tekintse meg a Python Harness mintákat.

Az adattár jelenleg nem tartalmaz csomagolt Go Harness-terminálmintát.

Következő lépések

Mélyebbre ásás