Add OpenAI Responses API vm_run integration example

This commit is contained in:
Thales Maciel 2026-03-08 13:29:36 -03:00
parent 0aa5e25dc1
commit f7c8a4366b
4 changed files with 263 additions and 0 deletions

View file

@ -0,0 +1,70 @@
from __future__ import annotations
import importlib.util
import sys
from pathlib import Path
from types import ModuleType, SimpleNamespace
from typing import Any, cast
import pytest
def _load_openai_example_module() -> ModuleType:
path = Path("examples/openai_responses_vm_run.py")
spec = importlib.util.spec_from_file_location("openai_responses_vm_run", path)
if spec is None or spec.loader is None:
raise AssertionError("failed to load OpenAI example module")
module = importlib.util.module_from_spec(spec)
spec.loader.exec_module(module)
return module
def test_openai_example_tool_targets_vm_run() -> None:
module = _load_openai_example_module()
assert module.OPENAI_VM_RUN_TOOL["name"] == "vm_run"
assert module.OPENAI_VM_RUN_TOOL["type"] == "function"
assert module.OPENAI_VM_RUN_TOOL["strict"] is True
def test_openai_example_runs_function_call_loop(monkeypatch: pytest.MonkeyPatch) -> None:
module = _load_openai_example_module()
tool_call = SimpleNamespace(
type="function_call",
name="vm_run",
call_id="call_123",
arguments=(
'{"profile":"debian-git","command":"git --version",'
'"vcpu_count":1,"mem_mib":1024}'
),
)
responses = [
SimpleNamespace(output=[tool_call], output_text=""),
SimpleNamespace(output=[], output_text="git version 2.40.1"),
]
calls: list[dict[str, Any]] = []
class FakeResponses:
def create(self, **kwargs: Any) -> Any:
calls.append(kwargs)
return responses.pop(0)
class FakeOpenAI:
def __init__(self) -> None:
self.responses = FakeResponses()
fake_openai_module = ModuleType("openai")
cast(Any, fake_openai_module).OpenAI = FakeOpenAI
monkeypatch.setitem(sys.modules, "openai", fake_openai_module)
monkeypatch.setattr(
module,
"call_vm_run",
lambda arguments: {"exit_code": 0, "stdout": f"ran {arguments['command']}"},
)
result = module.run_openai_vm_run_example(prompt="run git --version")
assert result == "git version 2.40.1"
assert calls[0]["tools"][0]["name"] == "vm_run"
second_input = calls[1]["input"]
assert second_input[-1]["type"] == "function_call_output"
assert second_input[-1]["call_id"] == "call_123"