Korzystanie z komputera natywnego

Natywna obsługa komputera pozwala modelowi Responses żądać uporządkowanych działań na pulpicie lub w przeglądarce. Aplikacja jest właścicielem środowiska wykonawczego, przedstawia kontrole bezpieczeństwa w celu zatwierdzenia, wykonuje akcje, przechwytuje zrzut ekranu i zwraca wynik do modelu.

Następujący klienci Python udostępniają natywne narzędzie:

Client Fabryka Notes
OpenAIChatClient get_computer_tool() Korzysta z interfejsu API Responses firmy OpenAI.
FoundryChatClient get_computer_tool() Wymaga azure-ai-projects wersji 2.3.0 lub nowszej.

FoundryChatClient.get_computer_use_tool(...) to oddzielny interfejs API w wersji zapoznawczej. Aby zapoznać się z opcjami konfiguracji, zobacz dostawcę modelu Microsoft Foundry.

Dodaj narzędzie do agenta

Utwórz narzędzie dostawcy i przekaż je do agenta:

from agent_framework import Agent
from agent_framework.openai import OpenAIChatClient

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

Model zwraca element Content, zawierający type="computer_tool_call". Element zawiera:

  • Element id i odrębny call_id.
  • Uporządkowana actions lista.
  • Opcjonalnypending_safety_checks.

Nieodebrane połączenia pojawiają się w AgentResponse.user_input_requests. Wyświetl użytkownikowi działania i ostrzeżenia, zanim aplikacja cokolwiek wykona. Struktura nigdy nie potwierdza automatycznie kontroli bezpieczeństwa.

Zwracanie wyniku

Gdy aplikacja wykona zatwierdzone akcje, zwróć zrzut ekranu w komunikacie narzędzia. Poniższy fragment zakłada, że request oznacza żądanie komputera, screenshot_bytes to obraz PNG zarejestrowany przez środowisko wykonawcze, a confirmed_checks zawiera wyłącznie sprawdzenia, które użytkownik wyraźnie zatwierdził:

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)

Użyj ponownie tego samego AgentSession podczas wysyłania wyniku. Możesz również podać zrzut ekranu z elementem Content.from_uri(...) lub Content.from_hosted_file(...). Odpowiedzi OpenAI i Foundry wymagają zrzutu ekranu, mimo że współdzielony typ wyniku pozwala dostawcom na jego pominięcie.

Typ ComputerSafetyCheck oraz konstruktory Content.from_computer_tool_call(...) i Content.from_computer_tool_result(...) to eksperymentalne interfejsy API struktury Agent Framework. Wywołania i wyniki można zapisywać za pomocą Content.to_dict() i przywracać za pomocą Content.from_dict().

Zachowanie przepływu pracy

Gdy przepływ pracy zostaje wstrzymany z powodu natywnych danych wejściowych komputera, Agent Framework zachowuje identyfikator wywołania, kolejność działań i oczekujące kontrole bezpieczeństwa między punktami kontrolnymi. Jeśli wywołania funkcji lokalnej zakończą się w tej samej partii, ich wyniki są zwracane z wynikiem komputera w oryginalnej kolejności wywołań.

Jeśli jedno żądanie dotyczące komputera w oczekującej partii żądań agenta zostanie anulowane, pozostałe żądania w tej partii również zostaną anulowane. Wyniki już zakończonych operacji pozostają widoczne w terminalu, a następna tura rozpoczyna się z nową sesją agenta.