Add OpenAI Responses API vm_run integration example
This commit is contained in:
parent
0aa5e25dc1
commit
f7c8a4366b
4 changed files with 263 additions and 0 deletions
70
tests/test_openai_example.py
Normal file
70
tests/test_openai_example.py
Normal 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"
|
||||
Loading…
Add table
Add a link
Reference in a new issue