Uso nativo del computer

L'uso nativo del computer consente a un modello Responses di richiedere azioni ordinate sul desktop o nel browser. L'applicazione è proprietaria dell'ambiente di esecuzione, presenta controlli di sicurezza per l'approvazione, esegue le azioni, acquisisce uno screenshot e restituisce il risultato al modello.

I client di Python seguenti espongono lo strumento nativo:

Client Fabbrica Note
OpenAIChatClient get_computer_tool() Usa l'API Risposte OpenAI.
FoundryChatClient get_computer_tool() Richiede azure-ai-projects versione 2.3.0 o successiva.

FoundryChatClient.get_computer_use_tool(...) è un'API di anteprima separata. Per le opzioni di configurazione, consultare il provider di modelli Microsoft Foundry.

Aggiungere lo strumento a un agente

Creare lo strumento provider e passarlo all'agente:

from agent_framework import Agent
from agent_framework.openai import OpenAIChatClient

client = OpenAIChatClient()
agent = Agent(
    client=client,
    tools=[client.get_computer_tool()],
)

Il modello restituisce un Content elemento con type="computer_tool_call". L'articolo comprende:

  • Un elemento id e un oggetto distinto call_id.
  • Elenco ordinato actions .
  • Facoltativo pending_safety_checks.

Le chiamate senza risposta vengono visualizzate in AgentResponse.user_input_requests. Visualizzare le azioni e gli avvisi all'utente prima dell'esecuzione dell'applicazione. Il framework non riconosce mai i controlli di sicurezza automaticamente.

Restituire il risultato

Dopo aver eseguito le azioni approvate, invia uno screenshot in un messaggio del tool. Il frammento seguente presuppone che request sia la richiesta del computer, screenshot_bytes sia un file PNG acquisito dall'ambiente di esecuzione e confirmed_checks contenga solo controlli che l'utente abbia approvato in modo esplicito:

from agent_framework import Content, Message

result = Content.from_computer_tool_result(
    call_id=request.call_id,
    screenshot=Content.from_data(screenshot_bytes, "image/png"),
    acknowledged_safety_checks=confirmed_checks,
)

tool_message = Message(role="tool", contents=[result])
response = await agent.run(tool_message, session=session)

Riutilizza lo stesso AgentSession quando invii il risultato. È anche possibile fornire lo screenshot con Content.from_uri(...) o Content.from_hosted_file(...). Le risposte OpenAI e Foundry richiedono uno screenshot anche se il tipo di risultato condiviso consente ai provider di ometterne uno.

Il tipo ComputerSafetyCheck e i costruttori Content.from_computer_tool_call(...) e Content.from_computer_tool_result(...) sono API sperimentali di Agent Framework. Le chiamate e i risultati possono essere resi persistenti con Content.to_dict() e ripristinati con Content.from_dict().

Comportamento del flusso di lavoro

Quando un flusso di lavoro viene sospeso per l'input nativo del computer, Agent Framework conserva l'ID della chiamata, l'ordine delle azioni e i controlli di sicurezza in sospeso tra un checkpoint e l'altro. Se le chiamate a funzioni locali si completano nello stesso batch, i relativi risultati vengono restituiti insieme al risultato del calcolo nell’ordine originale delle chiamate.

Se una richiesta di computer nel batch in sospeso di un agente viene annullata, vengono annullate anche le richieste rimanenti in tale batch. I risultati già completati rimangono nell'output del terminale e il turno successivo inizia con una nuova sessione dell'agente.