Spaces:
Running
Running
Commit
·
1f96735
1
Parent(s):
4732667
fix: pass API keys explicitly to pydantic-ai providers
Browse files- Use OpenAIProvider and AnthropicProvider with explicit api_key
- Removes need for users to source .env or export vars manually
- Update default OpenAI model to gpt-5.1
- Frictionless UX: just add keys to .env and run examples
- src/agent_factory/judges.py +15 -7
- src/utils/config.py +1 -1
src/agent_factory/judges.py
CHANGED
|
@@ -6,6 +6,8 @@ import structlog
|
|
| 6 |
from pydantic_ai import Agent
|
| 7 |
from pydantic_ai.models.anthropic import AnthropicModel
|
| 8 |
from pydantic_ai.models.openai import OpenAIModel
|
|
|
|
|
|
|
| 9 |
|
| 10 |
from src.prompts.judge import (
|
| 11 |
SYSTEM_PROMPT,
|
|
@@ -19,16 +21,22 @@ logger = structlog.get_logger()
|
|
| 19 |
|
| 20 |
|
| 21 |
def get_model() -> Any:
|
| 22 |
-
"""Get the LLM model based on configuration.
|
| 23 |
-
provider = settings.llm_provider
|
| 24 |
|
| 25 |
-
|
| 26 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 27 |
|
| 28 |
-
if
|
| 29 |
-
logger.warning("Unknown LLM provider, defaulting to OpenAI", provider=
|
| 30 |
|
| 31 |
-
|
|
|
|
| 32 |
|
| 33 |
|
| 34 |
class JudgeHandler:
|
|
|
|
| 6 |
from pydantic_ai import Agent
|
| 7 |
from pydantic_ai.models.anthropic import AnthropicModel
|
| 8 |
from pydantic_ai.models.openai import OpenAIModel
|
| 9 |
+
from pydantic_ai.providers.anthropic import AnthropicProvider
|
| 10 |
+
from pydantic_ai.providers.openai import OpenAIProvider
|
| 11 |
|
| 12 |
from src.prompts.judge import (
|
| 13 |
SYSTEM_PROMPT,
|
|
|
|
| 21 |
|
| 22 |
|
| 23 |
def get_model() -> Any:
|
| 24 |
+
"""Get the LLM model based on configuration.
|
|
|
|
| 25 |
|
| 26 |
+
Explicitly passes API keys from settings to avoid requiring
|
| 27 |
+
users to export environment variables manually.
|
| 28 |
+
"""
|
| 29 |
+
llm_provider = settings.llm_provider
|
| 30 |
+
|
| 31 |
+
if llm_provider == "anthropic":
|
| 32 |
+
provider = AnthropicProvider(api_key=settings.anthropic_api_key)
|
| 33 |
+
return AnthropicModel(settings.anthropic_model, provider=provider)
|
| 34 |
|
| 35 |
+
if llm_provider != "openai":
|
| 36 |
+
logger.warning("Unknown LLM provider, defaulting to OpenAI", provider=llm_provider)
|
| 37 |
|
| 38 |
+
openai_provider = OpenAIProvider(api_key=settings.openai_api_key)
|
| 39 |
+
return OpenAIModel(settings.openai_model, provider=openai_provider)
|
| 40 |
|
| 41 |
|
| 42 |
class JudgeHandler:
|
src/utils/config.py
CHANGED
|
@@ -26,7 +26,7 @@ class Settings(BaseSettings):
|
|
| 26 |
llm_provider: Literal["openai", "anthropic"] = Field(
|
| 27 |
default="openai", description="Which LLM provider to use"
|
| 28 |
)
|
| 29 |
-
openai_model: str = Field(default="gpt-
|
| 30 |
anthropic_model: str = Field(default="claude-sonnet-4-5", description="Anthropic model")
|
| 31 |
|
| 32 |
# PubMed Configuration
|
|
|
|
| 26 |
llm_provider: Literal["openai", "anthropic"] = Field(
|
| 27 |
default="openai", description="Which LLM provider to use"
|
| 28 |
)
|
| 29 |
+
openai_model: str = Field(default="gpt-5.1", description="OpenAI model name")
|
| 30 |
anthropic_model: str = Field(default="claude-sonnet-4-5", description="Anthropic model")
|
| 31 |
|
| 32 |
# PubMed Configuration
|