Anthropic Claude
Use Anthropic Claude models with Kern agents.
Claude is a family of foundational AI models by Anthropic that can be used in a variety of applications. See their model comparisons here.
We recommend experimenting to find the best-suited model for your use-case. Here are some general recommendations:
claude-sonnet-4-20250514model is good for most use-cases and supports image input.claude-opus-4-1-20250805model is their best model.claude-3-5-haiku-20241022model is their fastest model.
Anthropic has rate limits on their APIs. See the docs for more information.
Claude API expects a max_tokens param to be sent with each request. Unless
set as a param, Kern will default to 8192. See the
docs for more information.
Authentication
Set your ANTHROPIC_API_KEY environment. You can get one from Anthropic here.
1export ANTHROPIC_API_KEY=***1setx ANTHROPIC_API_KEY ***Example
Use Claude with your Agent:
1from kern.agent import Agent2from kern.models.anthropic import Claude34agent = Agent(5 model=Claude(id="claude-3-5-sonnet-20240620"),6 markdown=True7)89# Print the response on the terminal10agent.print_response("Share a 2 sentence horror story.")Beta Features
You can use Anthropic's beta features with Kern by setting the betas parameter:
1from kern.agent import Agent2from kern.models.anthropic import Claude34agent = Agent(5 model=Claude(6 betas=["context-management-2025-06-27"],7 ),8)Read more about beta features with Kern Claude model here.
Prompt caching
You can enable system prompt caching by setting cache_system_prompt to True:
1from kern.agent import Agent2from kern.models.anthropic import Claude34agent = Agent(5 model=Claude(6 id="claude-3-5-sonnet-20241022",7 cache_system_prompt=True,8 ),9)Read more about prompt caching with Kern's Claude model here.
Structured Outputs
Structured outputs are used to ensure that the model's response matches a defined schema.
This is useful to eliminate issues like missing fields or invalid values. Use it for production systems that need reliable, consistent responses in a specific format.
Kern uses Claude's native support for structured outputs. This feature is available for claude-sonnet-4-5-20250929 and all newer models. See Anthropic's structured outputs documentation for more details.
1from kern.agent import Agent2from kern.models.anthropic import Claude3from pydantic import BaseModel45class User(BaseModel):6 name: str7 age: int8 email: str910agent = Agent(11 model=Claude(id="claude-sonnet-4-5-20250929"),12 description="Extract user information.",13 output_schema=User,14)Read more about structured outputs with Kern's Claude model:
Params
| Parameter | Type | Default | Description |
|---|---|---|---|
id | str | "claude-3-5-sonnet-20241022" | The id of the Anthropic Claude model to use |
name | str | "Claude" | The name of the model |
provider | str | "Anthropic" | The provider of the model |
max_tokens | Optional[int] | 4096 | Maximum number of tokens to generate in the chat completion |
thinking | Optional[Dict[str, Any]] | None | Configuration for the thinking (reasoning) process (See their docs)) |
temperature | Optional[float] | None | Controls randomness in the model's output |
stop_sequences | Optional[List[str]] | None | A list of strings that the model should stop generating text at |
top_p | Optional[float] | None | Controls diversity via nucleus sampling |
top_k | Optional[int] | None | Controls diversity via top-k sampling |
cache_system_prompt | Optional[bool] | False | Whether to cache the system prompt for improved performance |
extended_cache_time | Optional[bool] | False | Whether to use extended cache time (1 hour instead of default) |
request_params | Optional[Dict[str, Any]] | None | Additional parameters to include in the request |
mcp_servers | Optional[List[MCPServerConfiguration]] | None | List of MCP (Model Context Protocol) server configurations |
api_key | Optional[str] | None | The API key for authenticating with Anthropic |
default_headers | Optional[Dict[str, Any]] | None | Default headers to include in all requests |
timeout | Optional[float] | None | Request timeout in seconds |
client_params | Optional[Dict[str, Any]] | None | Additional parameters for client configuration |
client | Optional[AnthropicClient] | None | A pre-configured instance of the Anthropic client |
async_client | Optional[AsyncAnthropicClient] | None | A pre-configured instance of the async Anthropic client |
Claude is a subclass of the Model class and has access to the same params.