| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394 |
- import copy
- from content_agent.integrations import query_variant
- from content_agent.integrations.query_prompt_config import DEFAULT_PROFILE
- from content_agent.integrations.query_variant import (
- MissingQueryVariantClient,
- OpenRouterQueryVariantClient,
- _messages,
- _render_messages,
- query_variant_client_from_env,
- )
- def test_query_variant_client_empty_env_does_not_read_process_env(monkeypatch):
- monkeypatch.setenv("OPENROUTER_API_KEY", "process-secret")
- monkeypatch.setenv("CONTENT_AGENT_QUERY_LLM_MODEL", "process-model")
- client = query_variant_client_from_env({})
- assert isinstance(client, MissingQueryVariantClient)
- def test_query_variant_client_uses_model_fallback_without_exposing_key():
- client = query_variant_client_from_env(
- {
- "OPEN_ROUTER_API_KEY": "test-secret",
- "MODEL": "test-model",
- "OPENROUTER_BASE_URL": "https://example.invalid/api/v1",
- "CONTENT_AGENT_QUERY_LLM_TIMEOUT_SECONDS": "12",
- "CONTENT_AGENT_QUERY_LLM_PROMPT_VERSION": "prompt-test",
- }
- )
- assert isinstance(client, OpenRouterQueryVariantClient)
- assert client.model == "test-model"
- assert client.timeout_seconds == 12
- assert client.prompt_version == "query_variant.v1"
- def test_default_render_messages_matches_legacy_messages():
- evidence = {"seed_term": "中医养生", "support": 0.2}
- rendered = _render_messages(DEFAULT_PROFILE, "中医养生", evidence)
- assert rendered == _messages("中医养生", evidence)
- assert str(evidence) in rendered[1]["content"]
- assert '"seed_term"' not in rendered[1]["content"]
- def test_openrouter_client_uses_custom_profile(monkeypatch):
- profile = copy.deepcopy(DEFAULT_PROFILE)
- profile.update(
- {
- "prompt_version": "custom-query-v2",
- "system": "custom system",
- "user": "Seed={seed_term}; Evidence={evidence_context}",
- "temperature": 0.9,
- "max_tokens": 23,
- }
- )
- captured = {}
- class FakeResponse:
- def raise_for_status(self):
- return None
- def json(self):
- return {"choices": [{"message": {"content": " 气血食疗 "}}]}
- def fake_post(url, *, headers, json, timeout):
- captured.update({"url": url, "headers": headers, "json": json, "timeout": timeout})
- return FakeResponse()
- monkeypatch.setattr(query_variant.httpx, "post", fake_post)
- client = OpenRouterQueryVariantClient(
- api_key="secret",
- model="model-x",
- base_url="https://example.invalid/api/v1",
- timeout_seconds=7,
- prompt_version="ignored-env-version",
- profile=profile,
- )
- result = client.generate_variant(seed_term="中医养生", evidence_context={"support": 0.2})
- assert result.query == "气血食疗"
- assert result.prompt_version == "custom-query-v2"
- assert captured["timeout"] == 7
- assert captured["json"]["temperature"] == 0.9
- assert captured["json"]["max_tokens"] == 23
- assert captured["json"]["messages"] == [
- {"role": "system", "content": "custom system"},
- {"role": "user", "content": "Seed=中医养生; Evidence={'support': 0.2}"},
- ]
|