| """Define the configurable parameters for the agent."""
|
|
|
| from __future__ import annotations
|
|
|
| import os
|
| from dataclasses import dataclass, field, fields
|
| from typing import Annotated
|
|
|
| from . import prompts
|
|
|
|
|
| @dataclass(kw_only=True)
|
| class Context:
|
| """The context for the agent."""
|
|
|
| system_prompt: str = field(
|
| default=prompts.SYSTEM_PROMPT,
|
| metadata={
|
| "description": "The system prompt to use for the agent's interactions. "
|
| "This prompt sets the context and behavior for the agent."
|
| },
|
| )
|
|
|
| model: Annotated[str, {"__template_metadata__": {"kind": "llm"}}] = field(
|
| default="anthropic/claude-sonnet-4-5-20250929",
|
| metadata={
|
| "description": "The name of the language model to use for the agent's main interactions. "
|
| "Should be in the form: provider/model-name."
|
| },
|
| )
|
|
|
| max_search_results: int = field(
|
| default=10,
|
| metadata={
|
| "description": "The maximum number of search results to return for each search query."
|
| },
|
| )
|
|
|
| def __post_init__(self) -> None:
|
| """Fetch env vars for attributes that were not passed as args."""
|
| for f in fields(self):
|
| if not f.init:
|
| continue
|
|
|
| if getattr(self, f.name) == f.default:
|
| setattr(self, f.name, os.environ.get(f.name.upper(), f.default))
|
|
|