네이티브 컴퓨터 사용 기능을 사용하면 Responses 모델이 순차적인 데스크톱 또는 브라우저 작업을 요청할 수 있습니다. 애플리케이션은 실행 환경을 소유하고, 승인에 대한 안전 검사를 제공하고, 작업을 수행하고, 스크린샷을 캡처하고, 결과를 모델에 반환합니다.
다음 Python 클라이언트는 네이티브 도구를 노출합니다.
| Client | 공장 | Notes |
|---|---|---|
OpenAIChatClient |
get_computer_tool() |
OpenAI 응답 API를 사용합니다. |
FoundryChatClient |
get_computer_tool() |
azure-ai-projects 2.3.0 이상이 필요합니다. |
FoundryChatClient.get_computer_use_tool(...) 는 별도의 미리 보기 API입니다. 구성 옵션은 Microsoft Foundry 모델 공급자를 참조하세요.
에이전트에 도구 추가
공급자 도구를 만들고 에이전트에 전달합니다.
from agent_framework import Agent
from agent_framework.openai import OpenAIChatClient
client = OpenAIChatClient()
agent = Agent(
client=client,
tools=[client.get_computer_tool()],
)
모델은 type="computer_tool_call"이 포함된 Content 항목을 반환합니다. 항목에는 다음이 포함됩니다.
- 항목
id및 별개의call_id. - 순서가 지정된
actions목록입니다. - 선택적
pending_safety_checks입니다.
부재중 전화가 AgentResponse.user_input_requests에 표시됩니다. 애플리케이션이 아무것도 실행하기 전에 사용자에게 작업 및 경고를 표시합니다.
프레임워크는 안전 검사를 자동으로 승인하지 않습니다.
결과 반환
애플리케이션이 승인된 작업을 실행한 후 도구 메시지의 스크린샷을 반환합니다. 다음 조각에서는 컴퓨터 요청 screenshot_bytes 이 실행 환경에서 캡처한 PNG이며 confirmed_checks 사용자가 명시적으로 승인했는지 확인하는 것만 포함한다고 가정 request 합니다.
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)
결과를 보낼 때도 동일하게 AgentSession 다시 사용하세요.
Content.from_uri(...) 또는 Content.from_hosted_file(...)로 스크린샷을 추가로 제공할 수도 있습니다. 공유 결과 형식에서는 공급자가 스크린샷을 생략할 수 있지만, OpenAI 및 Foundry 응답의 경우에는 스크린샷이 필요합니다.
ComputerSafetyCheck 형식 및 Content.from_computer_tool_call(...)Content.from_computer_tool_result(...) 생성자는 실험적 에이전트 프레임워크 API입니다. 호출 및 결과는 .을 Content.to_dict() 사용하여 유지 및 복원할 Content.from_dict()수 있습니다.
워크플로 동작
네이티브 컴퓨터 입력에 대해 워크플로가 일시 중지되면 Agent Framework는 검사점 전체에서 호출 ID, 작업 순서 및 보류 중인 안전 검사를 유지합니다. 로컬 함수 호출이 동일한 일괄 처리에서 완료되면 해당 결과가 컴퓨터 결과와 함께 원래 호출 순서로 반환됩니다.
에이전트의 보류 중인 일괄 처리에서 컴퓨터 요청 하나가 취소되면 해당 일괄 처리의 나머지 요청도 취소됩니다. 이미 완료된 결과는 터미널 출력에 남아 있으며, 다음 턴은 새 에이전트 세션으로 시작됩니다.