Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A Hyperlight a CodeAct jelenleg dokumentált háttérrendszere az Agent Frameworkben. Egy elkülönített tesztkörnyezeti futtatókörnyezet által támogatott eszközt tesz elérhetővéexecute_code, és meghívhatja a szolgáltató tulajdonában lévő gazdagépeszközöket.call_tool(...)
Ez az integráció a CodeAct-mintát használja: a szolgáltató egy kódvégrehajtási eszközhöz járul hozzá, és minden futtatás körül kezeli a végrehajtási környezetet.
A mintaszintű áttekintésért lásd: CodeAct.
Miért a Hyperlight CodeAct?
A modern ügynököket gyakran inkább az eszközhívási többletterhelés korlátozza, mint maga a modell. Az adatokat beolvasó, könnyű számításokat végző és az eredményt összeállító feladatok könnyen modellláncmá alakíthatók –> eszköz –> modell –> eszköz interakcióivá, még akkor is, ha minden egyes lépés egyszerű.
A Hyperlight által támogatott CodeAct kiküszöböli ezt a hurkot. A modell egy rövid Python-programot ír, a tesztkörnyezet egyszer hajtja végre, és a szolgáltató tulajdonában lévő eszközök a tesztkörnyezeten call_tool(...)belülről érhetők el. Képviselő eszközigényes munkafolyamatokban a váltás nagyjából a felére csökkentheti a késleltetést és több mint 60%-kal a tokenhasználatot, miközben a végrehajtás elkülönítetten és naplózhatóan tartható.
A csomag telepítése
dotnet add package Microsoft.Agents.AI.Hyperlight --prerelease
Microsoft.Agents.AI.Hyperlight az alapvető absztrakcióktól külön kerül szállításra, így a sandbox futtatókörnyezetet csak akkor kell használnia, amikor valóban szüksége van rá.
Important
A .NET csomag előzetes verzióban érhető el. A(z) Hyperlight.HyperlightSandbox.Api NuGet-csomagtól függ, amely a(z) hyperlight-dev/hyperlight-sandbox forrásból származik; amíg ezt a függőséget nem teszik közzé a nuget.org-on, a projekt visszaállítása nem fog sikerülni. Nyomon követheti a felsőbb rétegbeli tesztkörnyezet-adattárat a rendelkezésre állás érdekében.
Megjegyzés:
A Hyperlight működéséhez hardvervirtualizálás szükséges a gazdagépen: Linuxon a KVM, Windowson pedig a Windows Hypervisor Platform (WHP). A Wasm háttérrendszer emellett egy Hyperlight Python vendégmodult is igényel — futtatás előtt állítsa a HYPERLIGHT_PYTHON_GUEST_PATH értékét annak abszolút elérési útjára.
Használja a HyperlightCodeActProvider-t
HyperlightCodeActProvider az ajánlott belépési pont, ha minden futtatáshoz automatikusan hozzá szeretné adni a CodeAct-et. Ez egy olyan AIContextProvider, amely a futtatáshoz kötött CodeAct-utasításokat, valamint a(z) execute_code eszközt injektálja, miközben a szolgáltatóhoz tartozó eszközöket távol tartja az ügynök közvetlen eszközfelületéről. A szolgáltató futtatásonként pillanatkép-visszaállítást alkalmaz, így a vendég minden egyes futtatáskor egy ismert, tiszta állapotból indul.
A HyperlightCodeActProviderOptions.CreateForWasm(modulePath) gyárral célba veheti a mintákban használt, Wasm-alapú Python vendégkörnyezetet; a JavaScript-háttérhez a CreateForJavaScript() is elérhető.
using Azure.AI.OpenAI;
using Azure.Identity;
using Microsoft.Agents.AI;
using Microsoft.Agents.AI.Hyperlight;
using OpenAI.Chat;
var endpoint = Environment.GetEnvironmentVariable("AZURE_OPENAI_ENDPOINT")
?? throw new InvalidOperationException("AZURE_OPENAI_ENDPOINT is not set.");
var deploymentName = Environment.GetEnvironmentVariable("AZURE_OPENAI_DEPLOYMENT_NAME") ?? "gpt-5.4-mini";
var guestPath = Environment.GetEnvironmentVariable("HYPERLIGHT_PYTHON_GUEST_PATH")
?? throw new InvalidOperationException("HYPERLIGHT_PYTHON_GUEST_PATH is not set.");
using var codeAct = new HyperlightCodeActProvider(
HyperlightCodeActProviderOptions.CreateForWasm(guestPath));
AIAgent agent = new AzureOpenAIClient(new Uri(endpoint), new DefaultAzureCredential())
.GetChatClient(deploymentName)
.AsAIAgent(new ChatClientAgentOptions()
{
ChatOptions = new()
{
Instructions = "You are a helpful assistant. When the user asks something quantitative, "
+ "write Python and call `execute_code` instead of guessing.",
},
AIContextProviders = [codeAct],
});
Console.WriteLine(await agent.RunAsync("What is the 20th Fibonacci number?"));
Megjegyzés:
Egy adott ügynökhöz csak egy HyperlightCodeActProvider csatolható. A szolgáltató rögzített állapotkulcsot használ, így ChatClientAgentaz állapotkulcs egyediségének ellenőrzése elutasítja az ismétlődő regisztrációkat.
HyperlightCodeActProvider implementálja a(z) IDisposable elemet; használjon egy using deklarációt, hogy az alapul szolgáló sandbox felszabaduljon, amikor az ügynökre már nincs szükség.
Az eszközök, fájlcsatolások és kimenő engedélyezőlista-bejegyzések előzetesen megadhatók a(z) HyperlightCodeActProviderOptions (Tools, FileMounts, AllowedDomains, HostInputDirectory) használatával, vagy futásidőben kezelhetők a szolgáltató AddTools(...), RemoveTools(...), ClearTools(), AddFileMounts(...), AddAllowedDomains(...) metódusain, valamint a megfelelő Get* hozzáférési metódusokon keresztül.
A jóváhagyások és a hoszt eszközök működése
Az Ügynök-keretrendszer eszközei olyan jóváhagyási metaadatokat hordoznak, amelyek azt vezérli, hogy automatikusan meghívhatók-e, vagy szüneteltetni kell őket a felhasználói jóváhagyáshoz. A .NET-ben a jóváhagyás engedélyezése explicit módon történik: a AIFunction elemet egy ApprovalRequiredAIFunction elembe kell ágyazni.
Az eszköz HyperlightCodeActProvider regisztrálása és közvetlenül az ügynökön történő regisztrálása között a fő különbség az, hogyan történik az eszköz meghívása, nem pedig az, hogy a függvény végül hol fut:
- A regisztrált
HyperlightCodeActProviderOptions.Toolseszközök közvetlen eszközökként vannak elrejtve a modell elől. A modell úgy éri el őket, hogy kódot ír, amely meghívja a(z)call_tool("name", ...)-t a(z)execute_code-en belül. - A közvetlenül az ügynökön (például keresztül
AsAIAgent(tools: [...])) regisztrált eszközök első osztályú eszközökként jelennek meg a modellben, és minden közvetlen hívás az eszköz saját jóváhagyási metaadatait jeleníti meg.
call_tool(...) a visszahívások állomásaihoz való visszahívások hídja; ez nem az eszköz tesztkörnyezeten belüli újratelepítése. Ez azt jelenti, hogy a szolgáltató által birtokolt eszközök továbbra is a gazdafolyamatban futnak, azzal a fájlrendszerrel, hálózattal és hitelesítő adatokkal, amelyeket a gazdafolyamat maga is elérhet.
Az CodeActApprovalMode enumerálás szabályozza, hogy maga az execute_code eszköz hogyan legyen jóváhagyva:
-
CodeActApprovalMode.NeverRequire(alapértelmezett): a jóváhagyás a regisztrált eszközökről öröklődik. Ha a beállításjegyzék bármely eszköze be van csomagolvaApprovalRequiredAIFunction,execute_codejóváhagyást is igényel, ellenkező esetben nem. -
CodeActApprovalMode.AlwaysRequire:execute_codea meghívás előtt mindig felhasználói jóváhagyásra van szükség.
Ökölszabályként:
- Helyezzen olcsó, determinisztikus, láncolható eszközöket a szolgáltatóra, hogy a modell több hívást is összeállíthasson egy
execute_codefordulón belül. - A mellékhatással járó vagy érzékeny műveleteket foglalja
ApprovalRequiredAIFunctionelembe (és fontolja meg azt is, hogy inkább közvetlen agenteszközökként tartja meg őket), hogy minden egyes meghívás külön is látható és jóváhagyható maradjon.
A következő minta két biztonságos eszközt (fetch_docs, query_data), valamint egy send_email-ba csomagolt érzékeny ApprovalRequiredAIFunction eszközt regisztrál. Mivel legalább egy regisztrált eszköz jóváhagyást igényel, az alapértelmezett NeverRequire mód a execute_code meghíváskor jóváhagyást igényel.
AIFunction fetchDocs = AIFunctionFactory.Create(
(string topic) => $"Docs for {topic}: (...)",
name: "fetch_docs",
description: "Fetch documentation for a given topic.");
AIFunction queryData = AIFunctionFactory.Create(
(string query) => $"Rows for `{query}`: []",
name: "query_data",
description: "Run a read-only SQL-like query against the sample store.");
AIFunction sendEmail = new ApprovalRequiredAIFunction(
AIFunctionFactory.Create(
(string to, string subject) => $"Sent '{subject}' to {to}.",
name: "send_email",
description: "Send an email on behalf of the user."));
var options = HyperlightCodeActProviderOptions.CreateForWasm(guestPath);
options.Tools = [fetchDocs, queryData, sendEmail];
using var codeAct = new HyperlightCodeActProvider(options);
AIAgent agent = new AzureOpenAIClient(new Uri(endpoint), new DefaultAzureCredential())
.GetChatClient(deploymentName)
.AsAIAgent(new ChatClientAgentOptions()
{
ChatOptions = new()
{
Instructions = "You are a helpful assistant. Prefer orchestrating your work in a single "
+ "`execute_code` block using `call_tool(...)` over issuing many direct tool calls.",
},
AIContextProviders = [codeAct],
});
Mivel a gazdagépeszközök a sandboxon kívül futnak, FileMounts és AllowedDomains magát a sandboxban futó kódot korlátozzák, nem pedig a gazdagép visszahívását a call_tool(...) mögött. Ha szabályozott hozzáférésre van szüksége egy bizalmas erőforráshoz, inkább egy keskeny gazdagépeszközt válasszon a tesztkörnyezeti engedélyek kibővítése helyett.
Közvetlen vezetékezéshez használható HyperlightExecuteCodeFunction
Ha a execute_code-t közvetlenül használható eszközökkel kell együtt használnia ugyanazon az ügynökön, vagy a sandbox-konfiguráció az ügynök teljes élettartama alatt rögzített, a szolgáltató helyett használja a(z) HyperlightExecuteCodeFunction-t. Ez egy önálló AIFunction , amely egyetlen pillanatképet készít a megadott lehetőségekről az építkezés során, és minden meghíváshoz újra felhasználja.
A HyperlightCodeActProvider-tól eltérően az önálló függvény nem illeszti be automatikusan a prompt‑útmutatást, ezért önnek kell hozzáadnia a BuildInstructions(...) kimenetét az ügynök utasításaihoz. Adja meg a(z) toolsVisibleToModel: false értéket, ha a regisztrált eszközök csak a(z) call_tool(...) használatával érhetők el, és a(z) true értéket, ha ugyanezek az eszközök közvetlenül a modell számára is hozzáférhetők.
AIFunction calculate = AIFunctionFactory.Create(
(double a, double b) => a * b,
name: "multiply",
description: "Multiply two numbers.");
var options = HyperlightCodeActProviderOptions.CreateForWasm(guestPath);
options.Tools = [calculate];
using var executeCode = new HyperlightExecuteCodeFunction(options);
var instructions =
"You are a helpful assistant. When math is involved, solve it by writing Python "
+ "and calling `execute_code` instead of computing values yourself.\n\n"
+ executeCode.BuildInstructions(toolsVisibleToModel: false);
AIAgent agent = new AzureOpenAIClient(new Uri(endpoint), new DefaultAzureCredential())
.GetChatClient(deploymentName)
.AsAIAgent(instructions: instructions, tools: [executeCode]);
HyperlightExecuteCodeFunction is megvalósítja IDisposable. Ha a konfiguráció jóváhagyást igényel (a ApprovalMode szerint, vagy mert egy konfigurált eszköz maga is ApprovalRequiredAIFunction-be van burkolva), a példány egy ApprovalRequiredAIFunction proxyt tesz elérhetővé a AITool.GetService(...) révén; a keretrendszer többi része így észleli, hogy jóváhagyás szükséges.
Fájlok és kimenő hozzáférés konfigurálása
A Hyperlight egy írásvédett /input fát és egy írható /output területet tesz elérhetővé a létrehozott összetevők számára.
- A
HostInputDirectoryhasználatával elérhetővé teheti a gazdagép könyvtárát a(z)/input/alatt. - Adott
FileMountsgazdagépútvonalak leképezése a tesztkörnyezetbe a következőn keresztülnew FileMount(hostPath, mountPath): . - A kimenő hozzáférés csak meghatározott célokhoz vagy módszerekhez való engedélyezéséhez használja a(z)
AllowedDomainselemet a(z)new AllowedDomain(target, methods)segítségével.
var options = HyperlightCodeActProviderOptions.CreateForWasm(guestPath);
options.Tools = [compute];
options.FileMounts =
[
new FileMount("/host/data", "/input/data"),
new FileMount("/host/models", "/sandbox/models"),
];
options.AllowedDomains =
[
new AllowedDomain("https://api.github.com"),
new AllowedDomain("https://internal.api.example.com", ["GET"]),
];
using var codeAct = new HyperlightCodeActProvider(options);
Ugyanezek a FileMounts és AllowedDomains gyűjtemények, valamint az eszközök is módosíthatók futásidőben a(z) AddFileMounts(...)RemoveFileMounts(...), AddAllowedDomains(...), RemoveAllowedDomains(...) és HyperlightCodeActProvider elemein keresztül.
Kimeneti útmutató
A execute_code származó szöveg kinyeréséhez zárd le a vendégkódot print(...); jellel; a Hyperlight nem adja vissza automatikusan az utolsó kifejezés értékét.
Ha engedélyezett a fájlrendszerhez való hozzáférés, inkább írja a nagyobb fájlokat /output/<filename>-re. A visszaadott fájlok az eszköz eredményéhez vannak csatolva, míg az alatta lévő /input fájlok olvasásra használhatók a tesztkörnyezetben.
Jelenlegi korlátozások
Ez a csomag továbbra is előzetes verzió, és érdemes megfontolni néhány korlátozást:
- Ez a csomag a(z)
Hyperlight.HyperlightSandbox.Apielemtől függ, amely még nincs közzétéve a nuget.org-on. Amíg ez meg nem történik, a projekt visszaállítása sikertelen lesz. - A platformtámogatás a közzétett Hyperlight háttércsomagokat követi: támogatott Linux-(KVM-) és Windows (WHP-) környezetek. A tesztkörnyezet létrehozásakor a nem támogatott platformok vagy a hiányzó virtualizálási háttérrendszerek sikertelenek lesznek.
- Az aktuális Wasm-háttérrendszer végrehajt egy Python
HYPERLIGHT_PYTHON_GUEST_PATHáltal megadott vendégmodult. A JavaScript-háttérrendszer (CreateForJavaScript()) elérhető a JavaScriptben írt vendégkód számára. - A memóriabeli értelmező állapota nem tárolódik különböző
execute_codehívások között. Csatlakoztatott fájlokat és/outputösszetevőket használjon, ha az adatoknak a hívásokon keresztüli túlélésre van szükségük. - A jóváhagyás a
execute_codemeghívás egészére vonatkozik, nem pedig az ugyanabban a kódblokkban található egyes elemekrecall_tool(...). - Az eszközleírások, a paraméterjegyzetek és a visszaadott alakzatok itt sokkal fontosabbak, mert a modell kódokat ír a szerződéshez ahelyett, hogy izolált közvetlen eszközhívásokat választana.
- Még nincs .NET megfelelője a Python benchmark-mintának – lásd a közzétett összehasonlító heveder Python lapját.
A csomag telepítése
pip install agent-framework-hyperlight --pre
agent-framework-hyperlight külön kerül szállításra agent-framework-core-től, így csak akkor kerül az "sandbox" futási környezet telepítésre, ha szüksége van rá.
Megjegyzés:
A csomag a Hyperlight tesztkörnyezet összetevőitől függ. Ha a háttérrendszer még nincs közzétéve az aktuális platformon, execute_code sikertelenül próbálja létrehozni a sandboxot.
Használja a HyperlightCodeActProvider-t
HyperlightCodeActProvider az ajánlott belépési pont, ha minden futtatáshoz automatikusan hozzá szeretné adni a CodeAct-et. A futtatási hatókörű CodeAct-utasításokat és az execute_code eszközt injektálja, miközben a szolgáltató tulajdonában lévő eszközöket távol tartja a közvetlen ügynök eszközfelületétől.
import os
from agent_framework import Agent
from agent_framework.foundry import FoundryChatClient
from agent_framework.hyperlight import HyperlightCodeActProvider
from azure.identity import AzureCliCredential
# 1. Create the Hyperlight-backed provider and register sandbox tools on it.
codeact = HyperlightCodeActProvider(
tools=[compute, fetch_data],
approval_mode="never_require",
)
# 2. Create the client and the agent.
agent = Agent(
client=FoundryChatClient(
project_endpoint=os.environ["FOUNDRY_PROJECT_ENDPOINT"],
model=os.environ["FOUNDRY_MODEL"],
credential=AzureCliCredential(),
),
name="HyperlightCodeActProviderAgent",
instructions="You are a helpful assistant.",
context_providers=[codeact],
)
# 3. Run a request that should use execute_code plus provider-owned tools.
query = (
"Fetch all users, find admins, multiply 7*(3*2), and print the users, "
"admins, and multiplication result. Use execute_code and call_tool(...) "
"inside the sandbox."
)
result = await agent.run(query)
print(result.text)
A szolgáltatón regisztrált eszközök a sandboxban call_tool(...) érhetők el, de nem jelennek meg közvetlen ügynökeszközként. A szolgáltató a CRUD-stílusú felügyeletet is elérhetővé teszi az eszközök, a fájlcsatlakozások és a kimenő engedélyezési lista bejegyzései számára olyan metódusokkal, mint a add_tools(...), remove_tool(...), add_file_mounts(...) és add_allowed_domains(...).
A jóváhagyások és a hoszt eszközök működése
Az Ügynök-keretrendszer eszközei olyan vezérlőt approval_mode hordoznak, amely meghatározza, hogy automatikusan meghívhatók-e, vagy szüneteltetni kell őket a felhasználói jóváhagyáshoz.
Az eszköz HyperlightCodeActProvider regisztrálása és közvetlen Agent(tools=...) regisztrálása között a fő különbség az, hogy az eszköz hogyan lesz meghívva, és nem ott, ahol a Python-függvény fut:
- A regisztrált
HyperlightCodeActProvider(tools=...)eszközök közvetlen eszközökként vannak elrejtve a modell elől. A modell úgy éri el őket, hogy kódot ír, amely meghívja a(z)call_tool("name", ...)-t a(z)execute_code-en belül. - A regisztrált
Agent(tools=...)eszközök első osztályú eszközként vannak kezelve a modellben, és minden közvetlen hívás tiszteletben tartja az eszköz sajátapproval_mode-jét.
call_tool(...) a visszahívások állomásaihoz való visszahívások hídja; ez nem az eszköz tesztkörnyezeten belüli újratelepítése. Ez azt jelenti, hogy a szolgáltató által birtokolt eszközök továbbra is a gazdafolyamatban futnak, azzal a fájlrendszerrel, hálózattal és hitelesítő adatokkal, amelyeket a gazdafolyamat maga is elérhet.
Ökölszabályként:
- Helyezzen olcsó, determinisztikus, láncolható eszközöket a szolgáltatóra, hogy a modell több hívást is összeállíthasson egy
execute_codefordulón belül. - Az oldalbeli hatásokat okozó vagy jóváhagyással korlátozott műveleteket tartsuk meg közvetlen ügynöki eszközként, gyakran
approval_mode="always_require"-val, hogy az egyes meghívások egyedileg láthatóak és jóváhagyhatóak maradjanak.
Mivel a gazdagépeszközök a sandboxon kívül futnak, file_mounts és allowed_domains magát a sandboxban futó kódot korlátozzák, nem pedig a gazdagép visszahívását a call_tool(...) mögött. Ha szabályozott hozzáférésre van szüksége egy bizalmas erőforráshoz, inkább egy keskeny gazdagépeszközt válasszon a tesztkörnyezeti engedélyek kibővítése helyett.
Megjegyzés:
A call_tool(...) által meghívott eszközök a natív Python értéket (dict, list, primitív vagy egyéni objektum) közvetlenül a vendégnek adják vissza. Minden result_parser, amely egy FunctionTool-n van konfigurálva, a LLM-felhasználók számára készült, és nem fut a sandbox útvonalon – alkalmazza a formázást magában az eszközfüggvényben, ha szüksége van rá a tesztkörnyezetbeni felhasználók számára.
Közvetlen vezetékezéshez használható HyperlightExecuteCodeTool
Amikor közvetlen használatú eszközöket kell kevernie execute_code ugyanazon az ügynökön, a szolgáltató helyett használja a HyperlightExecuteCodeTool-t. Rögzített konfigurációk esetén egyszer elkészítheti a CodeAct-utasításokat, és közvetlenül bekötheti az eszközt.
from agent_framework.hyperlight import HyperlightExecuteCodeTool
execute_code = HyperlightExecuteCodeTool(
tools=[compute],
approval_mode="never_require",
)
codeact_instructions = execute_code.build_instructions(tools_visible_to_model=False)
Ez a minta akkor hasznos, ha a CodeAct felület ki van javítva, és nincs szükség a szolgáltatói életciklusra minden futtatáskor. Ellentétben HyperlightCodeActProvidera különálló eszköz nem injektálja automatikusan a parancssori útmutatást, ezért ön a felelős azért, hogy a build_instructions(...) kimenetet saját maga adja hozzá az ügynök utasításaihoz.
Fájlok és kimenő hozzáférés konfigurálása
A Hyperlight egy írásvédett /input fát és egy írható /output területet tesz elérhetővé a létrehozott összetevők számára.
- A(z)
workspace_roothasználatával tegye elérhetővé a munkaterületet a/input/alatt. - A tesztkörnyezetbe adott gazdagépútvonalak leképezésére használható
file_mounts. - A
allowed_domainskimenő hozzáférés engedélyezése csak meghatározott célokhoz vagy metódusokhoz.
file_mounts egy rövidített karakterláncot, egy explicit (host_path, mount_path) párt, vagy egy elnevezett FileMount tömböt is elfogad.
allowed_domains karakterlánc célt, explicit (target, method-or-methods) párt vagy elnevezett párt AllowedDomain fogad el.
from agent_framework.hyperlight import HyperlightCodeActProvider
codeact = HyperlightCodeActProvider(
tools=[compute],
file_mounts=[
"/host/data",
("/host/models", "/sandbox/models"),
],
allowed_domains=[
"api.github.com",
("internal.api.example.com", "GET"),
],
)
Kimeneti útmutató
A szöveg előhívásához a execute_code-ból/ből fejezd be a kódot a következővel print(...); A Hyperlight nem adja vissza automatikusan az utolsó kifejezés értékét.
Ha engedélyezett a fájlrendszerhez való hozzáférés, inkább írja a nagyobb fájlokat /output/<filename>-re. A visszaadott fájlok az eszköz eredményéhez vannak csatolva, míg az alatta lévő /input fájlok olvasásra használhatók a tesztkörnyezetben.
A CodeAct és a közvetlen eszközhívás összehasonlítása
A fogalmi összehasonlítás ugyanaz, mint bármely CodeAct-háttérrendszer esetében: ugyanaz az ügyfél, modell, eszközök, parancssori és strukturált kimeneti séma hagyományos eszközhívással vagy Hyperlight-alapú CodeAct-kapcsolaton keresztül is leköthető. Az egyetlen különbség az eszközfelület — a közvetlen eszközök, szemben egyetlen, execute_code által támogatott HyperlightCodeActProvider eszközzel:
from agent_framework import Agent
from agent_framework.foundry import FoundryChatClient
from agent_framework.hyperlight import HyperlightCodeActProvider
# Direct tool calling: the model picks one tool at a time per turn.
direct = Agent(
client=FoundryChatClient(...),
instructions="...",
tools=[fetch_data, compute],
)
# Hyperlight-backed CodeAct: the model writes one program per turn that
# orchestrates the same tools through call_tool(...).
codeact = Agent(
client=FoundryChatClient(...),
instructions="...",
context_providers=[
HyperlightCodeActProvider(
tools=[fetch_data, compute],
approval_mode="never_require",
),
],
)
Az olyan számítási feladatok esetében, amelyek az adatok ismételt keresése és a könnyű számítások – sok kis, láncolható lépés – végrehajtásával kiszámítják az adathalmazok összesítését, a CodeAct eltávolíthatja a vezénylési többletterhelést. Mérje le mindkét futás idejét stopperórával, és vizsgálja meg a visszaadott ChatResponse.usage elemet, hogy összehasonlíthassa a saját környezetében mért eltelt időt és a tokenhasználatot.
Jelenlegi korlátozások
Ez a csomag még mindig alfa, és néhány korlátozást érdemes megtervezni:
- A platformtámogatás a közzétett Hyperlight háttércsomagokat követi. Ez ma azt jelenti, hogy támogatott Linux- és Windows-környezetek; A nem támogatott platformok sikertelenek lesznek a tesztkörnyezet létrehozásakor.
- Az aktuális integráció a Python-vendégkódot hajtja végre.
- A memóriabeli értelmező állapota nem tárolódik különböző
execute_codehívások között. Csatlakoztatott fájlokat és/outputösszetevőket használjon, ha az adatoknak a hívásokon keresztüli túlélésre van szükségük. - A jóváhagyás a
execute_codemeghívás egészére vonatkozik, nem pedig az ugyanabban a kódblokkban található egyes elemekrecall_tool(...). - Az eszközleírások, a paraméterjegyzetek és a visszaadott alakzatok itt sokkal fontosabbak, mert a modell kódokat ír a szerződéshez ahelyett, hogy izolált közvetlen eszközhívásokat választana.
Megjegyzés:
A funkció Go-támogatása hamarosan érkezik. A legújabb állapotot az Agent Framework Go-adattárában tekinthet meg.