feat: add Claude backend with automatic Ollama fallback (Claudification Phase 1)
Build and Push / release (release) Failing after 6s
Build and Push / build (release) Successful in 3m5s

All agents now prefer Claude API when ANTHROPIC_API_KEY is configured,
with automatic fallback to Ollama when offline or unconfigured. New
src/anthropic/ module provides model selection via get_model() factory.

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
2026-02-05 07:19:29 +01:00
co-authored by Claude Opus 4.5
parent 5d23bcae79
commit 496f37a538
16 changed files with 790 additions and 486 deletions
+7 -10
View File
@@ -143,16 +143,10 @@ _librarian_agent: Optional[Agent[None, str]] = None
def _create_librarian_agent() -> Agent[None, str]:
"""Create the Librarian PydanticAI agent."""
from pydantic_ai.models.openai import OpenAIChatModel
from src.anthropic.model_selector import get_model
from src.ollama.provider import get_ollama_provider
# Create Ollama model with sanitized provider
# (fixes 'content: null' issue with tool calls)
model = OpenAIChatModel(
model_name=config.OLLAMA_DEFAULT_MODEL,
provider=get_ollama_provider(),
)
# Get best available model (Claude if available, else Ollama)
model = get_model()
agent: Agent[None, str] = Agent(
model=model,
@@ -182,9 +176,12 @@ def _create_librarian_agent() -> Agent[None, str]:
agent.tool_plain(update_wiki_page)
agent.tool_plain(smart_create_wiki_page)
from src.anthropic.model_selector import get_model_info
model_info = get_model_info()
logger.info(
"librarian_agent_created",
model=config.OLLAMA_DEFAULT_MODEL,
backend=model_info["backend"],
model=model_info["model"],
tool_count=14, # 7 research + 3 web + 1 wiki read + 3 wiki write
)