Class: LLM::Anthropic

Inherits:
Provider show all
Defined in:
lib/llm/providers/anthropic.rb,
lib/llm/providers/anthropic/files.rb,
lib/llm/providers/anthropic/models.rb,
lib/llm/providers/anthropic/error_handler.rb,
lib/llm/providers/anthropic/stream_parser.rb,
lib/llm/providers/anthropic/request_adapter.rb,
lib/llm/providers/anthropic/response_adapter.rb

Overview

The Anthropic class implements a provider for Anthropic.

Examples:

#!/usr/bin/env ruby
require "llm"

llm = LLM.anthropic(key: ENV["KEY"])
ses = LLM::Session.new(llm)
ses.talk ["Tell me about this photo", ses.local_file("/images/photo.png")]
ses.messages.select(&:assistant?).each { print "[#{_1.role}]", _1.content, "\n" }

Defined Under Namespace

Classes: Files, Models

Constant Summary collapse

HOST =
"api.anthropic.com"

Instance Method Summary collapse

Methods inherited from Provider

#audio, #chat, clients, #developer_role, #embed, #images, #inspect, #moderations, #persist!, #respond, #responses, #schema, #server_tool, #system_role, #tool_role, #tracer, #tracer=, #user_role, #vector_stores, #with

Constructor Details

#initializeAnthropic

Returns a new instance of Anthropic.

Parameters:

  • key (String, nil)

    The secret key for authentication



29
30
31
# File 'lib/llm/providers/anthropic.rb', line 29

def initialize(**)
  super(host: HOST, **)
end

Instance Method Details

#web_search(query:) ⇒ LLM::Response

A convenience method for performing a web search using the Anthropic web search tool.

Examples:

llm = LLM.anthropic(key: ENV["KEY"])
res = llm.web_search(query: "summarize today's news")
res.search_results.each { |item| print item.title, ": ", item.url, "\n" }

Parameters:

  • query (String)

    The search query.

Returns:



114
115
116
# File 'lib/llm/providers/anthropic.rb', line 114

def web_search(query:)
  ResponseAdapter.adapt(complete(query, tools: [server_tools[:web_search]]), type: :web_search)
end

#nameSymbol

Returns the provider's name

Returns:

  • (Symbol)

    Returns the provider's name



36
37
38
# File 'lib/llm/providers/anthropic.rb', line 36

def name
  :anthropic
end

#complete(prompt, params = {}) ⇒ LLM::Response

Provides an interface to the chat completions API

Examples:

llm = LLM.openai(key: ENV["KEY"])
messages = [{role: "system", content: "Your task is to answer all of my questions"}]
res = llm.complete("5 + 2 ?", messages:)
print "[#{res.messages[0].role}]", res.messages[0].content, "\n"

Parameters:

  • prompt (String)

    The input prompt to be completed

  • params (Hash) (defaults to: {})

    The parameters to maintain throughout the conversation. Any parameter the provider supports can be included and not only those listed here.

Returns:

Raises:

See Also:



50
51
52
53
54
55
56
57
58
# File 'lib/llm/providers/anthropic.rb', line 50

def complete(prompt, params = {})
  params, stream, tools, role = normalize_complete_params(params)
  req = build_complete_request(prompt, params, role)
  res, span, tracer = execute(request: req, stream: stream, operation: "chat", model: params[:model])
  res = ResponseAdapter.adapt(res, type: :completion)
    .extend(Module.new { define_method(:__tools__) { tools } })
  tracer.on_request_finish(operation: "chat", model: params[:model], res:, span:)
  res
end

#modelsLLM::Anthropic::Models

Provides an interface to Anthropic's models API



64
65
66
# File 'lib/llm/providers/anthropic.rb', line 64

def models
  LLM::Anthropic::Models.new(self)
end

#filesLLM::Anthropic::Files

Provides an interface to Anthropic's files API

Returns:

See Also:



72
73
74
# File 'lib/llm/providers/anthropic.rb', line 72

def files
  LLM::Anthropic::Files.new(self)
end

#assistant_roleString

Returns the role of the assistant in the conversation. Usually "assistant" or "model"

Returns:

  • (String)

    Returns the role of the assistant in the conversation. Usually "assistant" or "model"



78
79
80
# File 'lib/llm/providers/anthropic.rb', line 78

def assistant_role
  "assistant"
end

#default_modelString

Returns the default model for chat completions

Returns:

  • (String)

See Also:



86
87
88
# File 'lib/llm/providers/anthropic.rb', line 86

def default_model
  "claude-sonnet-4-20250514"
end

#server_toolsString => LLM::ServerTool

Note:

This method includes certain tools that require configuration through a set of options that are easier to set through the LLM::Provider#server_tool method.

Returns:

See Also:



97
98
99
100
101
102
103
# File 'lib/llm/providers/anthropic.rb', line 97

def server_tools
  {
    bash: server_tool(:bash, type: "bash_20250124"),
    web_search: server_tool(:web_search, type: "web_search_20250305", max_uses: 5),
    text_editor: server_tool(:str_replace_based_edit_tool, type: "text_editor_20250728", max_characters: 10_000)
  }
end