Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Hyperlight ist das derzeit dokumentierte Back-End für CodeAct im Agent Framework. Es macht ein execute_code Tool verfügbar, das von einer isolierten Sandkastenlaufzeit unterstützt wird, und kann anbietereigene Hosttools über call_tool(...)aufrufen.
Eine Übersicht über Musterebene finden Sie unter CodeAct.
Warum Hyperlight CodeAct
Moderne Agents sind häufig durch den Mehraufwand beim Aufrufen von Tools als durch das Modell selbst begrenzt. Eine Aufgabe, die Daten liest, leichte Berechnungen durchführt und ein Ergebnis zusammenfügt, kann leicht in eine Kette von Modell -> Tool -> Modell -> Tool-Interaktionen umgewandelt werden, selbst wenn jeder einzelne Schritt einfach ist.
Hyperlight-backed CodeAct kollabiert diese Schleife. Das Modell schreibt ein kurzes Python-Programm, die Sandbox führt es einmal aus, und aus der Sandbox heraus werden anbietereigene Tools erreicht call_tool(...). In repräsentativen werkzeuglastigen Workloads kann diese Veränderung die Latenz in etwa halbieren und die Tokenverwendung um mehr als 60 % reduzieren, während die Ausführung isoliert und auditierbar bleibt.
Installiere das Paket
dotnet add package Microsoft.Agents.AI.Hyperlight --prerelease
Microsoft.Agents.AI.Hyperlight wird getrennt von den Kernabstraktionen ausgeliefert, sodass Sie die Sandbox-Laufzeit nur einbinden, wenn Sie sie benötigen.
Important
Das .NET-Paket ist als Vorschau verfügbar. Es hängt vom Hyperlight.HyperlightSandbox.Api NuGet-Paket aus hyperlight-dev/hyperlight-sandbox ab; solange diese Abhängigkeit nicht auf nuget.org veröffentlicht ist, schlägt die Wiederherstellung des Projekts fehl. Überwachen Sie das vorgelagerte Sandbox-Repository hinsichtlich der Verfügbarkeit.
Hinweis
Hyperlight erfordert Hardwarevirtualisierung auf dem Host: KVM unter Linux oder der Windows Hypervisor Platform (WHP) auf Windows. Das Wasm-Backend erfordert zusätzlich ein Hyperlight-Python-Gastmodul — setzen Sie HYPERLIGHT_PYTHON_GUEST_PATH vor der Ausführung auf den absoluten Pfad.
HyperlightCodeActProvider verwenden
HyperlightCodeActProvider ist der empfohlene Einstiegspunkt, wenn CodeAct für jede Ausführung automatisch hinzugefügt werden soll. Es handelt sich um eine AIContextProvider, die laufspezifische CodeAct-Anweisungen sowie das Tool execute_code einschleust, während anbietereigene Tools von der direkten Tool-Oberfläche des Agenten ferngehalten werden. Der Anbieter wendet snapshot/restore pro Ausführung an, sodass der Gast bei jedem Aufruf von einem bekannten sauberen Zustand beginnt.
Verwenden Sie die HyperlightCodeActProviderOptions.CreateForWasm(modulePath) Factory, um den Wasm-basierten Python-Gast anzusprechen, der von den Beispielen verwendet wird; CreateForJavaScript() ist auch für das JavaScript-Backend verfügbar.
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?"));
Hinweis
Nur ein HyperlightCodeActProvider kann einem bestimmten Agenten zugeordnet werden. Der Anbieter verwendet einen festen Zustandsschlüssel, sodass ChatClientAgentdie Überprüfung der Eindeutigkeit des Zustandsschlüssels doppelte Registrierungen ablehnt.
HyperlightCodeActProvider implementiert IDisposable; verwenden Sie eine using-Anweisung, damit die zugrunde liegende Sandbox freigegeben wird, wenn der Agent nicht mehr benötigt wird.
Werkzeuge, Datei-Einhängepunkte und Einträge in der Zulassungsliste für ausgehende Verbindungen können im Voraus über HyperlightCodeActProviderOptions (Tools, FileMounts, AllowedDomains, HostInputDirectory) bereitgestellt oder zur Laufzeit über die AddTools(...), RemoveTools(...), ClearTools(), AddFileMounts(...), AddAllowedDomains(...) des Anbieters sowie entsprechende Get*-Accessoren verwaltet werden.
Funktionsweise von Genehmigungen und Hosttools
Agent Framework-Tools enthalten Genehmigungsmetadaten, die steuern, ob sie automatisch aufgerufen werden können, oder zur Benutzergenehmigung anhalten müssen. In .NET muss die Freigabe explizit aktiviert werden, indem ein AIFunction in ApprovalRequiredAIFunction eingeschlossen wird.
Der Hauptunterschied zwischen der Registrierung eines Tools auf HyperlightCodeActProvider und seiner direkten Registrierung beim Agenten besteht darin, wie das Tool aufgerufen wird, und nicht darin, wo die Funktion letztendlich ausgeführt wird:
- Auf
HyperlightCodeActProviderOptions.Toolsregistrierte Tools sind im Modell als direkte Tools nicht sichtbar. Das Modell greift auf sie zu, indem es Code schreibt, dercall_tool("name", ...)innerhalbexecute_codeaufgerufen wird. - Tools, die direkt auf dem Agent registriert sind (z. B. via
AsAIAgent(tools: [...])), werden dem Modell als erstklassige Tools angezeigt, und jeder direkte Aufruf berücksichtigt die eigenen Genehmigungsmetadaten dieses Tools.
call_tool(...) ist eine Rückkehrbrücke zu Host-Rückrufen; es ist keine Neuimplementierung des Tools innerhalb der Sandbox. Dies bedeutet, dass anbietereigene Tools weiterhin im Hostprozess ausgeführt werden, mit dem Dateisystem, Netzwerk und Anmeldeinformationen, auf die der Hostprozess selbst zugreifen kann.
Das CodeActApprovalMode Enum steuert, wie das execute_code Werkzeug selbst genehmigt wird:
-
CodeActApprovalMode.NeverRequire(Standard): Die Genehmigung wird von den registrierten Tools weitergegeben. Wenn ein Tool in der Registry inApprovalRequiredAIFunctioneingebettet ist, erfordertexecute_codeebenfalls eine Genehmigung; andernfalls nicht. -
CodeActApprovalMode.AlwaysRequire:execute_codeErfordert vor dem Aufruf immer eine Benutzergenehmigung.
Faustregel:
- Setzen Sie günstige, deterministische, sicher verkettbare Tools beim Anbieter ein, damit das Modell viele Aufrufe in einem
execute_codeDurchgang verfassen kann. - Kapseln Sie nebenwirkungsbehaftete oder sensible Operationen in
ApprovalRequiredAIFunction(und ziehen Sie in Betracht, sie stattdessen als direkte Agent-Tools beizubehalten), sodass jede Ausführung einzeln sichtbar und genehmigbar bleibt.
Im nächsten Beispiel werden zwei sichere Tools (fetch_docs, query_data) sowie ein sensibles send_email-Tool registriert, das in ApprovalRequiredAIFunction eingebettet ist. Da mindestens ein registriertes Tool eine Genehmigung erfordert, führt der Standardmodus NeverRequire dazu, dass execute_code selbst bei jedem Aufruf eine Genehmigung erfordert.
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],
});
Da Hosttools außerhalb der Sandbox FileMounts ausgeführt werden, schränken AllowedDomains den im Sandkasten ausgeführten Code selbst ein, nicht den Host-Rückruf hinter call_tool(...). Wenn Sie kontrollierten Zugriff auf eine sensible Ressource benötigen, bevorzugen Sie ein spezialisiertes Host-Tool gegenüber der Erweiterung von Sandkastenberechtigungen.
Verwenden Sie HyperlightExecuteCodeFunction für die direkte Verkabelung
Wenn Sie execute_code auf demselben Agenten mit Tools kombinieren müssen, die nur direkt verwendet werden können, oder wenn die Sandkastenkonfiguration während der gesamten Lebensdauer des Agenten festgelegt ist, verwenden Sie HyperlightExecuteCodeFunction anstelle des Providers. Es ist ein eigenständiges AIFunction Gerät, das eine einzelne Momentaufnahme der bereitgestellten Optionen zur Bauzeit erfasst und für jeden Aufruf wiederverwendet.
Im Gegensatz zu HyperlightCodeActProvider fügt die eigenständige Funktion keine Prompt-Anleitung automatisch ein, daher sind Sie selbst dafür verantwortlich, die Ausgabe von BuildInstructions(...) zu den Agentenanweisungen hinzuzufügen. Übergeben Sie toolsVisibleToModel: false, wenn die registrierten Tools nur über call_tool(...) erreichbar sind, und true, wenn dieselben Tools dem Modell auch direkt zugänglich sind.
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 implementiert auch IDisposable. Wenn die Konfiguration eine Genehmigung erfordert (gemäß ApprovalMode oder weil ein konfiguriertes Tool selbst in ApprovalRequiredAIFunction eingebettet ist), stellt die Instanz über ApprovalRequiredAIFunction einen AITool.GetService(...)-Proxy bereit, worüber der Rest des Frameworks Genehmigungsanforderungen erkennt.
Konfigurieren von Dateien und ausgehender Zugriff
Hyperlight kann eine schreibgeschützte /input Struktur sowie einen schreibbaren /output Bereich für generierte Artefakte verfügbar machen.
- Verwenden Sie
HostInputDirectory, um ein Hostverzeichnis unter/input/verfügbar zu machen. - Verwenden Sie
FileMounts, um bestimmte Hostpfade übernew FileMount(hostPath, mountPath)der Sandbox zuzuordnen. - Verwenden Sie
AllowedDomains, um ausgehenden Zugriff nur für bestimmte Ziele oder Methoden übernew AllowedDomain(target, methods)zu aktivieren.
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);
Die gleichen FileMounts- und AllowedDomains-Sammlungen sowie Tools können zur Laufzeit auch über AddFileMounts(...), RemoveFileMounts(...), AddAllowedDomains(...) und RemoveAllowedDomains(...) auf HyperlightCodeActProvider geändert werden.
Ausgabeleitfaden
Um Text von execute_codeanzuzeigen, beenden Sie den Gastcode mit print(...); Hyperlight gibt den Wert des letzten Ausdrucks nicht automatisch zurück.
Wenn der Dateisystemzugriff aktiviert ist, schreiben Sie größere Artefakte stattdessen in /output/<filename>. Zurückgegebene Dateien sind dem Tool-Ergebnis beigefügt, während Dateien unter /input in der Sandbox zum Lesen verfügbar sind.
Aktuelle Einschränkungen
Dieses Paket befindet sich noch in der Vorschauphase, und es gibt einige Einschränkungen, die Sie bei Ihrer Planung berücksichtigen sollten:
- Das Paket hängt von
Hyperlight.HyperlightSandbox.Apiab, das noch nicht auf nuget.org veröffentlicht ist. Bis dahin schlägt die Projektwiederherstellung fehl. - Die Plattformunterstützung richtet sich nach den veröffentlichten Hyperlight-Backend-Paketen: den unterstützten Linux- (KVM) und Windows-Umgebungen (WHP). Nicht unterstützte Plattformen oder fehlende Virtualisierungs-Back-Ends schlagen beim Erstellen der Sandbox fehl.
- Das aktuelle Wasm-Back-End führt ein Python Gastmodul aus, das durch
HYPERLIGHT_PYTHON_GUEST_PATHangegeben wird. Das JavaScript-Back-End (CreateForJavaScript()) ist für Gastcode in JavaScript verfügbar. - Der In-Memory-Interpreter-Zustand bleibt über separate
execute_codeAufrufe hinweg nicht bestehen. Verwenden Sie bereitgestellte Dateien und/outputArtefakte, wenn Daten über Aufrufe hinweg überleben müssen. - Die Genehmigung gilt für den
execute_codeganzen Aufruf und nicht für jede Instanzcall_tool(...)innerhalb desselben Codeblocks. - Toolbeschreibungen, Parameteranmerkungen und Rückgabeformen sind hier wichtiger, da das Modell Code für diesen Vertrag schreibt, anstatt isolierte direkte Toolaufrufe auszuwählen.
- Es gibt noch keine .NET-Entsprechung des Python-Benchmarkbeispiels – siehe die Python-Registerkarte für das veröffentlichte Vergleichsharness.
Installiere das Paket
pip install agent-framework-hyperlight --pre
Hinweis
Das Paket hängt von Hyperlight-Sandkastenkomponenten ab. Wenn das Back-End noch nicht für Ihre aktuelle Plattform veröffentlicht wurde, tritt ein Fehler auf, wenn execute_code versucht, den Sandkasten zu erstellen.
HyperlightCodeActProvider verwenden
HyperlightCodeActProvider ist der empfohlene Einstiegspunkt, wenn CodeAct für jede Ausführung automatisch hinzugefügt werden soll. Es fügt laufbereichsspezifische CodeAct-Anweisungen sowie das execute_code-Tool ein, während anbietereigene Tools von der direkten Agenten-Tooloberfläche ferngehalten werden.
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)
Tools, die beim Anbieter registriert sind, sind im Sandkasten call_tool(...)verfügbar, werden jedoch nicht als direkte Agenten-Tools verfügbar gemacht. Der Anbieter stellt auch die Verwaltung im CRUD-Format für Tools, Datei-Mounts und ausgehende Zulassungslisteneinträge über Methoden wie add_tools(...), remove_tool(...), add_file_mounts(...) und add_allowed_domains(...) bereit.
Funktionsweise von Genehmigungen und Hosttools
Agent-Framework-Tools enthalten ein approval_mode Steuerelement, welches bestimmt, ob sie automatisch initiiert werden können oder zuerst eine Benutzergenehmigung benötigen.
Der Hauptunterschied zwischen der Registrierung eines Tools HyperlightCodeActProvider und der direkten Registrierung auf Agent(tools=...) besteht darin, wie das Tool aufgerufen wird und nicht, wo die Python-Funktion letztendlich ausgeführt wird:
- Auf
HyperlightCodeActProvider(tools=...)registrierte Tools sind im Modell als direkte Tools nicht sichtbar. Das Modell greift auf sie zu, indem es Code schreibt, dercall_tool("name", ...)innerhalbexecute_codeaufgerufen wird. - Auf dem Modell registrierte
Agent(tools=...)Tools werden dem Modell als erstklassige Tools bereitgestellt, und bei jedem direkten Aufruf wird das spezifischeapproval_modedes Tools berücksichtigt.
call_tool(...) ist eine Rückkehrbrücke zu Host-Rückrufen; es ist keine Neuimplementierung des Tools innerhalb der Sandbox. Dies bedeutet, dass anbietereigene Tools weiterhin im Hostprozess ausgeführt werden, mit dem Dateisystem, Netzwerk und Anmeldeinformationen, auf die der Hostprozess selbst zugreifen kann.
Faustregel:
- Setzen Sie günstige, deterministische, sicher verkettbare Tools beim Anbieter ein, damit das Modell viele Aufrufe in einem
execute_codeDurchgang verfassen kann. - Halten Sie Operationen, die Nebenwirkungen haben oder genehmigungspflichtig sind, als direkte Werkzeuge des Agenten, oft mit
approval_mode="always_require", sodass jeder Aufruf einzeln sichtbar und genehmigungsfähig bleibt.
Da Hosttools außerhalb der Sandbox file_mounts ausgeführt werden, schränken allowed_domains den im Sandkasten ausgeführten Code selbst ein, nicht den Host-Rückruf hinter call_tool(...). Wenn Sie kontrollierten Zugriff auf eine sensible Ressource benötigen, bevorzugen Sie ein spezialisiertes Host-Tool gegenüber der Erweiterung von Sandkastenberechtigungen.
Hinweis
Tools, die über call_tool(...) aufgerufen werden, geben ihren nativen Python Wert (dict, list, primitives oder benutzerdefiniertes Objekt) direkt an den Gast zurück. Alle result_parser auf einem FunctionTool Gerät konfigurierten Elemente sind für LLM-Verbraucher vorgesehen und werden nicht im Sandkastenpfad ausgeführt. Wenden Sie die Formatierung innerhalb der Toolfunktion selbst an, wenn Sie sie für Verbraucher im Sandkasten benötigen.
Verwenden Sie HyperlightExecuteCodeTool für die direkte Verkabelung
Wenn Sie execute_code zusammen mit Tools verwenden müssen, die nur direkt sind, auf demselben Agenten, verwenden Sie HyperlightExecuteCodeTool anstelle des Anbieters. Bei festen Konfigurationen können Sie die CodeAct-Anweisungen einmal erstellen und das Tool direkt verbinden:
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)
Dieses Muster ist nützlich, wenn die CodeAct-Oberfläche festgelegt ist und Sie den Lebenszyklus des Anbieters nicht bei jedem Durchlauf benötigen. Im Gegensatz zu HyperlightCodeActProvider fügt das Standalone-Tool keine Aufforderungen automatisch ein, daher sind Sie dafür verantwortlich, die build_instructions(...)-Ausgabe selbst in die Agenten-Anweisungen einzufügen.
Konfigurieren von Dateien und ausgehender Zugriff
Hyperlight kann eine schreibgeschützte /input Struktur sowie einen schreibbaren /output Bereich für generierte Artefakte verfügbar machen.
- Verwenden Sie
workspace_root, um einen Arbeitsbereich unter/input/verfügbar zu machen. - Verwenden Sie
file_mounts, um bestimmte Hostpfade in die Sandbox zuzuordnen. - Verwenden Sie
allowed_domains, um den ausgehenden Zugriff nur für bestimmte Ziele oder Methoden zu aktivieren.
file_mounts akzeptiert eine Abkürzungszeichenfolge, ein explizites (host_path, mount_path) Paar oder ein benanntes FileMount Tupel.
allowed_domains akzeptiert eine Zeichenfolge als Ziel, ein explizites (target, method-or-methods) Paar oder ein AllowedDomain benanntes Tupel.
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"),
],
)
Ausgabeleitfaden
Um Text aus execute_codeanzuzeigen, beenden Sie den Code mit print(...); Hyperlight gibt den Wert des letzten Ausdrucks nicht automatisch zurück.
Wenn der Dateisystemzugriff aktiviert ist, schreiben Sie größere Artefakte stattdessen in /output/<filename>. Zurückgegebene Dateien sind dem Tool-Ergebnis beigefügt, während Dateien unter /input in der Sandbox zum Lesen verfügbar sind.
Vergleichen von CodeAct- und direkten Toolaufrufen
Der konzeptionelle Vergleich ist identisch mit jedem CodeAct-Back-End: Derselbe Client, dasselbe Modell, die Tools, die Eingabeaufforderung und das strukturierte Ausgabeschema können entweder über herkömmliche Toolaufrufe oder über Hyperlight-backed CodeAct verkabelt werden. Der einzige Unterschied ist die Tool-Oberfläche: direkte Tools gegenüber einem einzelnen execute_code Tool, das durch HyperlightCodeActProvider unterstützt wird:
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",
),
],
)
Bei Arbeitslasten, die Gesamtsummen in einem Datensatz berechnen, indem wiederholt Daten nachgeschlagen und leichte Berechnungen durchgeführt werden – viele kleine, aufeinander aufbauende Schritte –, kann CodeAct den Orchestrierungsaufwand reduzieren. Messen Sie beide Durchläufe mit einer Stoppuhr und prüfen Sie das zurückgegebene ChatResponse.usage, um die verstrichene Zeit und die Tokennutzung in Ihrer eigenen Umgebung zu vergleichen.
Aktuelle Einschränkungen
Dieses Paket ist noch Alpha, und ein paar Einschränkungen sind eine Planung wert:
- Die Plattformunterstützung folgt den veröffentlichten Hyperlight-Back-End-Paketen. Heute bedeutet dies unterstützte Linux- und Windows-Umgebungen; Nicht unterstützte Plattformen schlagen beim Erstellen der Sandbox fehl.
- Die aktuelle Integration führt Python-Gastcode aus.
- Der In-Memory-Interpreter-Zustand bleibt über separate
execute_codeAufrufe hinweg nicht bestehen. Verwenden Sie bereitgestellte Dateien und/outputArtefakte, wenn Daten über Aufrufe hinweg überleben müssen. - Die Genehmigung gilt für den
execute_codeganzen Aufruf und nicht für jede Instanzcall_tool(...)innerhalb desselben Codeblocks. - Toolbeschreibungen, Parameteranmerkungen und Rückgabeformen sind hier wichtiger, da das Modell Code für diesen Vertrag schreibt, anstatt isolierte direkte Toolaufrufe auszuwählen.