openrouter: split into llm_prompts (prompt engineering) + transport
openrouter.py was 790 lines mixing two orthogonal concerns: - Prompt engineering (build_system_prompt, build_summary_*, build_chat_*, build_daily_digest_*, etc.) — ~400 lines, changes weekly as PROMPT_VERSION bumps - LLM transport (call_llm, _provider_chain, _call_provider, retry + fallback machinery) — ~250 lines, rarely changes Extracted the prompt-engineering surface to app/services/llm_prompts.py. Transport stays in openrouter.py (consistent with the filename — the OpenRouter URL is the transport's anchor). All import sites (jobs, routers, services, tests) split their multi-import lines into two: prompt-things from llm_prompts, transport from openrouter. PROMPT_VERSION constant, _TONE_ALIASES, _resolve_tone, and SYSTEM_PROMPT moved with the prompt functions. No behaviour change — pure relocation. Function signatures, body, and naming all preserved. Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
parent
a6d686324c
commit
4adc8dfe82
9 changed files with 619 additions and 595 deletions
|
|
@ -3,7 +3,7 @@ from __future__ import annotations
|
|||
|
||||
from datetime import datetime, timezone
|
||||
|
||||
from app.services.openrouter import (
|
||||
from app.services.llm_prompts import (
|
||||
build_daily_digest_prompt,
|
||||
build_weekly_digest_prompt,
|
||||
)
|
||||
|
|
|
|||
|
|
@ -9,7 +9,7 @@ pytest.importorskip("pydantic_settings")
|
|||
|
||||
from datetime import datetime, timezone
|
||||
|
||||
from app.services.openrouter import SYSTEM_PROMPT, build_user_prompt
|
||||
from app.services.llm_prompts import SYSTEM_PROMPT, build_user_prompt
|
||||
|
||||
|
||||
def test_system_prompt_has_voice_anchors():
|
||||
|
|
@ -35,7 +35,7 @@ def test_pro_tone_falls_back_to_intermediate():
|
|||
"""PRO was removed in PROMPT_VERSION 6 (audience pivot to young
|
||||
investors). Legacy callers that still pass PRO should get the
|
||||
INTERMEDIATE prompt rather than a KeyError."""
|
||||
from app.services.openrouter import build_system_prompt
|
||||
from app.services.llm_prompts import build_system_prompt
|
||||
pro = build_system_prompt("PRO", "SPECULATIVE")
|
||||
inter = build_system_prompt("INTERMEDIATE", "SPECULATIVE")
|
||||
assert pro == inter
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue