VibecoderMcSwaggins commited on
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

Files changed (2) hide show
  1. src/agent_factory/judges.py +15 -7
  2. 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
- if provider == "anthropic":
26
- return AnthropicModel(settings.anthropic_model)
 
 
 
 
 
 
27
 
28
- if provider != "openai":
29
- logger.warning("Unknown LLM provider, defaulting to OpenAI", provider=provider)
30
 
31
- return OpenAIModel(settings.openai_model)
 
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-4o", description="OpenAI model name")
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