- LLMProvider: complete(messages, schema) -> LLMResult (текст, разобранный JSON, токены) - openai_compat: /chat/completions, structured output через response_format json_schema, JSON из ```-обёртки тоже разбирается; ретраи на 429/5xx и сетевые ошибки, 4xx — сразу ошибка - mock: детерминированные правила для тестов и демо без сети - LLMSettings (LLM_PROVIDER/BASE_URL/MODEL/API_KEY…), CLI python -m app.llm.cli Refs #17 Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
11 lines
345 B
Python
11 lines
345 B
Python
from app.config import LLMSettings
|
|
from app.llm.mock import MockProvider
|
|
from app.llm.openai_compat import OpenAICompatProvider
|
|
from app.llm.provider import LLMProvider
|
|
|
|
|
|
def make_provider(settings: LLMSettings) -> LLMProvider:
|
|
if settings.provider == "openai_compat":
|
|
return OpenAICompatProvider(settings)
|
|
return MockProvider()
|