Class: Raif::Llms::OpenRouter
- Inherits:
-
Raif::Llm
- Object
- Raif::Llm
- Raif::Llms::OpenRouter
- Includes:
- Concerns::Llms::OpenAi::MessageFormatting
- Defined in:
- app/models/raif/llms/open_router.rb
Instance Method Summary collapse
Instance Method Details
#connection ⇒ Object
26 27 28 29 30 31 32 33 34 35 |
# File 'app/models/raif/llms/open_router.rb', line 26 def connection @connection ||= Faraday.new(url: "https://openrouter.ai/api/v1") do |f| f.headers["Authorization"] = "Bearer #{Raif.config.open_router_api_key}" f.headers["HTTP-Referer"] = Raif.config.open_router_site_url if Raif.config.open_router_site_url.present? f.headers["X-Title"] = Raif.config.open_router_app_name if Raif.config.open_router_app_name.present? 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 |
# File 'app/models/raif/llms/open_router.rb', line 6 def perform_model_completion!(model_completion) model_completion.temperature ||= default_temperature parameters = build_request_parameters(model_completion) response = connection.post("chat/completions") do |req| req.body = parameters end response_json = response.body model_completion.update!( response_tool_calls: extract_response_tool_calls(response_json), raw_response: response_json.dig("choices", 0, "message", "content"), completion_tokens: response_json.dig("usage", "completion_tokens"), prompt_tokens: response_json.dig("usage", "prompt_tokens"), total_tokens: response_json.dig("usage", "total_tokens") ) model_completion end |