41 lines
1.2 KiB
Python
41 lines
1.2 KiB
Python
|
|
"""Live integration test for OpenRouterAdapter.
|
||
|
|
|
||
|
|
Skipped unless an API key is available (env var or project key file).
|
||
|
|
"""
|
||
|
|
|
||
|
|
import os
|
||
|
|
|
||
|
|
import pytest
|
||
|
|
|
||
|
|
from markitect.llm.openrouter import OpenRouterAdapter
|
||
|
|
from markitect.llm.config import resolve_api_key, find_project_root
|
||
|
|
from markitect.prompts.execution.models import RunConfig, LLMResponse
|
||
|
|
|
||
|
|
|
||
|
|
def _get_api_key():
|
||
|
|
root = find_project_root()
|
||
|
|
paths = [root / "apikey-openrouter.txt"] if root else []
|
||
|
|
return resolve_api_key(env_var="OPENROUTER_API_KEY", key_file_paths=paths)
|
||
|
|
|
||
|
|
|
||
|
|
pytestmark = pytest.mark.skipif(
|
||
|
|
_get_api_key() is None,
|
||
|
|
reason="No OpenRouter API key available",
|
||
|
|
)
|
||
|
|
|
||
|
|
|
||
|
|
class TestOpenRouterLive:
|
||
|
|
def test_simple_completion(self):
|
||
|
|
adapter = OpenRouterAdapter(
|
||
|
|
model="anthropic/claude-sonnet-4",
|
||
|
|
api_key=_get_api_key(),
|
||
|
|
)
|
||
|
|
config = RunConfig(temperature=0.0, max_tokens=50)
|
||
|
|
resp = adapter.execute_prompt("Reply with exactly: PONG", config)
|
||
|
|
|
||
|
|
assert isinstance(resp, LLMResponse)
|
||
|
|
assert len(resp.content) > 0
|
||
|
|
assert resp.usage["total_tokens"] > 0
|
||
|
|
assert resp.finish_reason in ("stop", "length")
|
||
|
|
assert resp.metadata["provider"] == "openrouter"
|