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.
Monty ist ein Rust-basierter Dolmetscher für eine eingeschränkte Python Teilmenge.
MontyCodeActProvider stellt einem Agent-Framework-Agenten ein execute_code-Tool zur Verfügung und ermöglicht es generiertem Code, anbieterbetriebene Tools als typisierte asynchrone Funktionen oder über call_tool(...) aufzurufen.
Diese Integration verwendet das CodeAct-Muster mit einem eingeschränkten Interpreter anstelle einer hardwareisolierten Sandbox.
Verwenden Sie Monty, wenn Sie eine plattformübergreifende CodeAct-Laufzeit ohne Hyperlight-Hypervisor oder WASM-Gastabhängigkeit benötigen.
Note
agent-framework-monty ist ein Betapaket. Monty schränkt den Zugriff auf Das Betriebssystem, die Unterverarbeitung und den direkten Netzwerkzugriff ein, ist jedoch kein hardwareisolierter virtueller Computer.
Warnung
MontyCodeActProvider und MontyExecuteCodeTool unterstützen zurzeit FIDES nicht. Vom Anbieter verwaltete Hosttoolaufrufe durchlaufen nicht die Middlewarepipeline des Agents pro Funktion.
Überprüfungen von Direct Agent-Tools oder dem äußeren execute_code Aufruf decken keine geschachtelten Aufrufe, codeinternen Zwischenwerte oder Datei- und Netzwerkfunktionen ab. Hosttools müssen ihre eigenen Autorisierungs- und Zielkontrollen durchsetzen.
Behalten Sie FIDES-abhängige Tools als direkte Agent-Tools, nicht als Monty-verwaltete Tools, oder lassen Sie CodeAct für Workflows deaktiviert, die diese Garantien erfordern. Siehe die aktuellen Einschränkungen von CodeAct.
Installieren der Pakete
pip install agent-framework-monty agent-framework-foundry --pre
Fügen Sie MontyCodeActProvider hinzu.
Registrieren Sie Hosttools auf dem Anbieter und nicht direkt auf dem Agent. Das Modell sieht execute_code und ruft diese Tools aus generierten Code auf.
async def main() -> None:
"""Run the provider-owned Monty CodeAct sample."""
# 1. Create the Monty-backed provider and register sandbox tools on it.
codeact = MontyCodeActProvider(
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="MontyCodeActProviderAgent",
instructions="You are a helpful assistant.",
context_providers=[codeact],
middleware=[log_function_calls],
)
# 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 a single execute_code call. "
"You may call the registered tools directly as typed async functions "
"(`await compute(operation='multiply', a=7, b=6)`) or via "
"`call_tool('compute', ...)`."
)
print(f"{_CYAN}{'=' * 60}")
print("Monty CodeAct provider sample")
print(f"{'=' * 60}{_RESET}")
print(f"{_CYAN}User: {query}{_RESET}")
result = await agent.run(query)
print(f"{_CYAN}Agent: {result.text}{_RESET}")
Parameterbeschreibungen des Steuerelement-Hosttools
MontyCodeActProvider und MontyExecuteCodeTool akzeptieren tool_description_format. Die Standardeinstellung, "compact", umfasst skalare Parametertypen, den erforderlichen oder optionalen Status, Beschreibungen, Enum-Werte und Standardwerte in der Beschreibung von execute_code sowie in den CodeAct-Anweisungen. Verwenden Sie "json" für das vollständige JSON-Schema, oder wählen Sie ein Format anhand des exakten, groß-/kleinschreibungssensitiven Tool-Namens:
codeact = MontyCodeActProvider(
tools=[compute, fetch_data],
tool_description_format={
"compute": "json",
"fetch_data": "compact",
},
)
Tools, die in einer Zuordnung ausgelassen werden, werden im kompakten Format angezeigt. Das kompakte Rendering greift automatisch auf das vollständige JSON-Schema zurück, wenn es kein Schema darstellen kann, ohne Einschränkungen zu verlieren, z. B. geschachtelte Objekte, Arrays, Verweise oder Vereinigungen. Parameterschemas sind für das Modell sichtbar. Schließen Sie also keine Anmeldeinformationen oder andere geheime Schlüssel in Beschreibungen, Enumerationswerten, Standardwerten oder benutzerdefinierten Schemafeldern ein.
Funktionen konfigurieren
MontyCodeActProvider- und MontyExecuteCodeTool-Unterstützung:
- Host-Werkzeuge und Verwaltung von Laufzeitwerkzeugen
-
never_require-Genehmigung oderalways_require-Genehmigung fürexecute_code - ein Stammverzeichnis des Arbeitsbereichs und explizite Dateieinbindungen
- Monty-Ressourcenbeschränkungen
- Dateien, die von Einbindungen mit Lese- und Schreibzugriff als Inhalt des Agent Frameworks zurückgegeben werden
Netzwerkzugriff und Python-Pakete
Monty verwendet seinen eigenen Python-Interpreter, nicht die Python-Umgebung des Hosts. Diese Integration stellt weder pip noch eine andere Option zur Paketinstallation bereit.
Die Installation einer Abhängigkeit vom Host macht sie nicht in Monty-Code importierbar.
Verwenden Sie die unterstützten Module des Dolmetschers für Code, der in Monty ausgeführt wird.
Monty bietet keine Option allowed_domains an. Registrieren Sie für externe API-Aufrufe oder Vorgänge, für die auf dem Host installierte Pakete erforderlich sind, ein eng begrenztes Host-Tool und rufen Sie es aus Monty-Code auf. Behalten Sie Anmeldeinformationen, Autorisierung und Ziel-Zulassungslistenprüfungen in dieser Funktion bei, da sie auf dem Host außerhalb des Monty-Interpreters ausgeführt wird.
Wählen Sie Monty oder Hyperlight aus.
| Laufzeit | Wählen Sie diese Option, wenn |
|---|---|
| Monty | Plattformübergreifende Ausführung und eingeschränkter Dolmetscher sind ausreichend. |
| Hyperlight | Sie benötigen eine gehärtete Sandbox, Dateisystemsteuerelemente oder Zulassungslisten für ausgehende Domänen. |