Class: Raif::Llms::Anthropic

Inherits:
Raif::Llm
  • Object
show all
Includes:
Concerns::Llms::Anthropic::MessageFormatting
Defined in:
app/models/raif/llms/anthropic.rb

Instance Method Summary collapse

Instance Method Details

#connectionObject



28
29
30
31
32
33
34
35
36
# File 'app/models/raif/llms/anthropic.rb', line 28

def connection
  @connection ||= Faraday.new(url: "https://api.anthropic.com/v1") do |f|
    f.headers["x-api-key"] = Raif.config.anthropic_api_key
    f.headers["anthropic-version"] = "2023-06-01"
    f.request :json
    f.response :json
    f.response :raise_error
  end
end

#perform_model_completion!(model_completion) ⇒ Object



6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
# File 'app/models/raif/llms/anthropic.rb', line 6

def perform_model_completion!(model_completion)
  params = build_request_parameters(model_completion)
  response = connection.post("messages") do |req|
    req.body = params
  end

  response_json = response.body

  model_completion.raw_response = if model_completion.response_format_json?
    extract_json_response(response_json)
  else
    extract_text_response(response_json)
  end

  model_completion.response_tool_calls = extract_response_tool_calls(response_json)
  model_completion.completion_tokens = response_json&.dig("usage", "output_tokens")
  model_completion.prompt_tokens = response_json&.dig("usage", "input_tokens")
  model_completion.save!

  model_completion
end