Class: DeepAgentsRb::Models::Claude

Inherits:
BaseModel
  • Object
show all
Defined in:
lib/deepagents/deepagentsrb/models.rb

Overview

Anthropic Claude model adapter

Instance Method Summary collapse

Constructor Details

#initialize(api_key: nil, model: "claude-3-sonnet-20240229", client: nil) ⇒ Claude

Returns a new instance of Claude.



20
21
22
23
24
25
# File 'lib/deepagents/deepagentsrb/models.rb', line 20

def initialize(api_key: nil, model: "claude-3-sonnet-20240229", client: nil)
  require 'anthropic'
  @api_key = api_key || ENV['ANTHROPIC_API_KEY']
  @model = model
  @client = client || Anthropic::Client.new(api_key: @api_key)
end

Instance Method Details

#generate(prompt, messages) ⇒ Object



27
28
29
30
31
32
33
34
35
# File 'lib/deepagents/deepagentsrb/models.rb', line 27

def generate(prompt, messages)
  response = @client.messages(
    model: @model,
    max_tokens: 4096,
    messages: messages,
    system: prompt
  )
  response.content[0].text
end

#stream_generate(prompt, messages, &block) ⇒ Object



37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
# File 'lib/deepagents/deepagentsrb/models.rb', line 37

def stream_generate(prompt, messages, &block)
  response = @client.messages(
    model: @model,
    max_tokens: 4096,
    messages: messages,
    system: prompt,
    stream: true
  )
  
  full_text = ""
  response.each do |chunk|
    if chunk.type == "content_block_delta" && chunk.delta.type == "text"
      full_text += chunk.delta.text
      yield chunk.delta.text if block_given?
    end
  end
  
  full_text
end