Uso de equipos nativos

El uso nativo del ordenador permite que un modelo Responses solicite acciones secuenciales en el escritorio o el navegador. La aplicación posee el entorno de ejecución, presenta comprobaciones de seguridad para su aprobación, realiza las acciones, captura una captura de pantalla y devuelve el resultado al modelo.

Los siguientes Python clientes exponen la herramienta nativa:

Client Fábrica Notes
OpenAIChatClient get_computer_tool() Usa la API de respuestas de OpenAI.
FoundryChatClient get_computer_tool() Requiere azure-ai-projects la versión 2.3.0 o posterior.

FoundryChatClient.get_computer_use_tool(...) es una API de versión preliminar independiente. Para conocer sus opciones de configuración, consulte el proveedor de modelos Microsoft Foundry.

Añade la herramienta a un agente

Cree la herramienta de proveedor y pásela al agente:

from agent_framework import Agent
from agent_framework.openai import OpenAIChatClient

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

El modelo devuelve un Content elemento con type="computer_tool_call". El elemento incluye:

  • Un elemento id y un elemento distinto call_id.
  • Una lista ordenada actions.
  • pending_safety_checks opcional.

Las llamadas sin respuesta aparecen en AgentResponse.user_input_requests. Muestra las acciones y advertencias al usuario antes de que la aplicación ejecute cualquier cosa. El marco nunca reconoce las comprobaciones de seguridad automáticamente.

Devolver el resultado

Una vez que la aplicación ejecute las acciones aprobadas, devuelva una captura de pantalla en un mensaje de herramienta. El fragmento siguiente supone request que es la solicitud del equipo, screenshot_bytes es un PNG capturado por el entorno de ejecución y confirmed_checks solo contiene comprobaciones que el usuario ha aprobado explícitamente:

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)

Vuelva a usar lo mismo AgentSession cuando envíe el resultado. También puede proporcionar la captura de pantalla con Content.from_uri(...) o Content.from_hosted_file(...). Las respuestas de OpenAI y Foundry requieren una captura de pantalla a pesar de que el tipo de resultado compartido permite a los proveedores omitirla.

El tipo ComputerSafetyCheck y los constructores Content.from_computer_tool_call(...) y Content.from_computer_tool_result(...) son API experimentales de Agent Framework. Las llamadas y los resultados se pueden conservar con Content.to_dict() y restaurar con Content.from_dict().

Comportamiento del flujo de trabajo

Cuando un flujo de trabajo se detiene para permitir una entrada nativa del ordenador, Agent Framework conserva el ID de la llamada, el orden de las acciones y las comprobaciones de seguridad pendientes entre los distintos puntos de control. Si las llamadas a funciones locales se completan en el mismo lote, sus resultados se devuelven junto con el resultado del ordenador en el orden original de las llamadas.

Si se cancela una solicitud de equipo en el lote pendiente de un agente, también se cancelan las solicitudes restantes de ese lote. Los resultados ya finalizados siguen apareciendo en la salida de la terminal, y la siguiente interacción comienza con una nueva sesión del agente.