Uso de computador nativo

O uso de computador nativo permite que um modelo de Respostas solicite ações ordenadas da área de trabalho ou do navegador. Seu aplicativo é proprietário do ambiente de execução, apresenta verificações de segurança para aprovação, executa as ações, captura uma captura de tela e retorna o resultado para o modelo.

Os seguintes clientes Python expõem a ferramenta nativa:

Client Fábrica Notes
OpenAIChatClient get_computer_tool() Usa a API de Respostas OpenAI.
FoundryChatClient get_computer_tool() Requer a versão azure-ai-projects 2.3.0 ou posterior.

FoundryChatClient.get_computer_use_tool(...) é uma API de visualização separada. Para obter suas opções de configuração, consulte o provedor de modelos do Microsoft Foundry.

Adicionar a ferramenta a um agente

Crie a ferramenta de provedor e passe-a para o agente:

from agent_framework import Agent
from agent_framework.openai import OpenAIChatClient

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

O modelo retorna um item Content com type="computer_tool_call". O item inclui:

  • Um item id e um distinto call_id.
  • Uma lista ordenada actions.
  • pending_safety_checks opcional.

Chamadas sem resposta aparecem em AgentResponse.user_input_requests. Exiba as ações e avisos para o usuário antes que seu aplicativo execute qualquer coisa. A estrutura nunca reconhece as verificações de segurança automaticamente.

Retornar o resultado

Depois que o aplicativo executar as ações aprovadas, retorne uma captura de tela em uma mensagem de ferramenta. O fragmento a seguir pressupõe request ser a solicitação do computador, screenshot_bytes é um PNG capturado pelo seu ambiente de execução e confirmed_checks contém apenas verificações que o usuário aprovou explicitamente:

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)

Reutilize o mesmo AgentSession quando enviar o resultado. Você também pode fornecer a captura de tela com Content.from_uri(...) ou Content.from_hosted_file(...). As respostas OpenAI e Foundry exigem uma captura de tela, embora o tipo de resultado compartilhado permita que os provedores omitam uma.

O tipo ComputerSafetyCheck e os construtores Content.from_computer_tool_call(...) e Content.from_computer_tool_result(...) são APIs experimentais do Agent Framework. Chamadas e resultados podem ser persistidos com Content.to_dict() e restaurados com Content.from_dict().

Comportamento do fluxo de trabalho

Quando um fluxo de trabalho é interrompido para entrada nativa do computador, o Agent Framework preserva o identificador da chamada, a ordem das ações e as verificações de segurança pendentes ao longo dos checkpoints. Se as chamadas de funções locais forem concluídas no mesmo lote, seus resultados serão retornados junto com o resultado computado, na ordem original das chamadas.

Se uma solicitação de computador no lote pendente de um agente for cancelada, as solicitações restantes nesse lote também serão canceladas. Os resultados já concluídos permanecem na saída no terminal, e a próxima interação começa com uma nova sessão do agente.