Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Monty is een op Rust gebaseerde interpreter voor een beperkte Python subset.
MontyCodeActProvider geeft een Agent Framework-agent één execute_code tool en laat gegenereerde code tools van de provider aanroepen als getypeerde asynchrone functies of via call_tool(...).
Deze integratie maakt gebruik van het CodeAct-patroon met een beperkte interpreter in plaats van een hardware-geïsoleerde sandbox.
Gebruik Monty wanneer u een platformoverschrijdende CodeAct-runtime nodig hebt zonder hypervisor of WASM-gastafhankelijkheid van Hyperlight.
Opmerking
agent-framework-monty is een bètapakket. Monty beperkt het besturingssysteem, subprocessen en directe netwerktoegang, maar het is geen hardware-geïsoleerde virtuele machine.
Warning
MontyCodeActProvider en MontyExecuteCodeTool bieden momenteel geen ondersteuning voor FIDES. Aanroepen van door de provider beheerde hosttools passeren niet de middlewarepijplijn van de agent per functie.
Controles op hulpprogramma's voor directe agents of de uiterlijke aanroep execute_code hebben geen betrekking op geneste aanroepen, code-interne tussenliggende waarden of mogelijkheden voor bestanden en netwerken. Hosthulpprogramma's moeten hun eigen autorisatie- en bestemmingscontroles afdwingen.
Houd FIDES-afhankelijke hulpprogramma's als directe agenthulpprogramma's, niet als door Monty beheerde hulpprogramma's, of laat CodeAct uitgeschakeld voor werkstromen waarvoor deze garanties zijn vereist. Zie de huidige beperkingen van CodeAct.
De pakketten installeren
pip install agent-framework-monty agent-framework-foundry --pre
MontyCodeActProvider toevoegen
Registreer hosthulpprogramma's bij de provider in plaats van rechtstreeks op de agent. Het model ziet execute_code en roept deze hulpprogramma's aan op basis van gegenereerde code.
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}")
Parameterbeschrijvingen van hosthulpprogramma's beheren
MontyCodeActProvider en MontyExecuteCodeTool accepteren tool_description_format. De standaardwaarde, "compact"bevat scalaire parametertypen, vereiste of optionele status, beschrijvingen, enumwaarden en standaardwaarden in de execute_code beschrijving en CodeAct-instructies. Gebruik "json" voor het complete JSON-schema, of selecteer een indeling op de exacte, hoofdlettergevoelige naam van de tool:
codeact = MontyCodeActProvider(
tools=[compute, fetch_data],
tool_description_format={
"compute": "json",
"fetch_data": "compact",
},
)
Tools die niet in een toewijzing zijn opgenomen, gebruiken de compacte indeling. Compacte weergave valt automatisch terug op het volledige JSON-schema wanneer een schema anders niet kan worden weergegeven zonder beperkingen te verliezen, zoals bij geneste objecten, arrays, verwijzingen of union-typen. Parameterschema's zijn zichtbaar voor het model, dus neem geen referenties of andere geheimen op in beschrijvingen, opsommingswaarden, standaardwaarden of aangepaste schemavelden.
Mogelijkheden configureren
ondersteuning voor MontyCodeActProvider en MontyExecuteCodeTool:
- beheer van hosthulpprogramma's en runtimehulpprogramma's
-
never_requireofalways_requiregoedkeuring voorexecute_code - een hoofdmap van een werkruimte en expliciete bestandsaankoppelingen
- Monty-resourcelimieten
- bestanden die vanuit mounts met lees- en schrijftoegang worden geretourneerd als inhoud van het Agent Framework
Het vastleggen van bestanden na uitvoering retourneert alleen normale bestanden van lees-/schrijf-mounts. Het slaat symlinks, Windows-juncties en andere reparsepunten en niet-reguliere bestanden over op elk padniveau. Voordat u een bestand leest, controleert Monty of de geopende descriptor overeenkomt met het gevalideerde pad en controleert de padonderdelen opnieuw. Als het bestand of het bovenliggend element tijdens het vastleggen wordt gewijzigd, wordt het bestand weggelaten in plaats van gevolgd.
Netwerktoegang en Python-pakketten
Monty voert een eigen Python interpreter uit, niet de Python-omgeving van de host. Deze integratie biedt geen pip of een andere optie om pakketten te installeren.
Als u een afhankelijkheid van de host installeert, kan deze niet worden geïmporteerd in Monty-code.
Gebruik de ondersteunde modules van de interpreter voor code die in Monty wordt uitgevoerd.
Monty biedt geen allowed_domains optie. Voor externe API-aanroepen of bewerkingen waarvoor door de host geïnstalleerde pakketten zijn vereist, registreert u een smal hosthulpprogramma en roept u het aan vanuit Monty-code. Bewaar inloggegevens, autorisatie en controles van de lijst met toegestane bestemmingen in die functie, omdat die op de host wordt uitgevoerd, buiten de Monty-interpreter.
Kies Monty of Hyperlight
| Runtime | Kies deze wanneer |
|---|---|
| Monty | Platformoverschrijdende uitvoering en een beperkte interpreter zijn voldoende. |
| Hyperlight | U hebt een beperkte sandbox, besturingselementen voor bestandssysteem of acceptatielijsten voor uitgaand domein nodig. |