Nous.Providers.Anthropic (nous v0.16.1)

View Source

Anthropic Claude provider implementation.

Supports Claude models via the Anthropic Messages API.

Usage

# Basic usage
{:ok, response} = Nous.Providers.Anthropic.chat(%{
  model: "claude-sonnet-4-20250514",
  max_tokens: 1024,
  messages: [%{"role" => "user", "content" => "Hello"}]
})

# With system prompt
{:ok, response} = Nous.Providers.Anthropic.chat(%{
  model: "claude-sonnet-4-20250514",
  max_tokens: 1024,
  system: "You are a helpful assistant.",
  messages: [%{"role" => "user", "content" => "Hello"}]
})

# With long context beta
{:ok, response} = Nous.Providers.Anthropic.chat(
  params,
  enable_long_context: true
)

# Streaming
{:ok, stream} = Nous.Providers.Anthropic.chat_stream(params)
Enum.each(stream, fn event -> IO.inspect(event) end)

Configuration

# In config.exs
config :nous, :anthropic,
  api_key: "sk-ant-...",
  base_url: "https://api.anthropic.com"  # optional

Summary

Functions

Get the API key from options, environment, or application config.

Get the base URL from options, application config, or default.

Count tokens in messages (rough estimate).

High-level request with message conversion, telemetry, and error wrapping.

High-level streaming request with message conversion and telemetry.

Functions

api_key(opts \\ [])

@spec api_key(keyword()) :: String.t() | nil

Get the API key from options, environment, or application config.

Lookup order:

  1. :api_key option passed directly
  2. Environment variable (ANTHROPIC_API_KEY)
  3. Application config: config :nous, anthropic, api_key: "..."

base_url(opts \\ [])

@spec base_url(keyword()) :: String.t()

Get the base URL from options, application config, or default.

Lookup order:

  1. :base_url option passed directly
  2. Application config: config :nous, anthropic, base_url: "..."
  3. Default: https://api.anthropic.com

count_tokens(messages)

@spec count_tokens(list()) :: integer()

Count tokens in messages (rough estimate).

Override this in your provider for more accurate counting.

request(model, messages, settings)

High-level request with message conversion, telemetry, and error wrapping.

Default implementation that:

  1. Converts messages to provider format
  2. Builds request params
  3. Calls chat/2
  4. Parses response
  5. Emits telemetry events
  6. Wraps errors

request_stream(model, messages, settings)

High-level streaming request with message conversion and telemetry.