Class: LlmProviders::Providers::Openrouter
- Defined in:
- lib/llm_providers/providers/openrouter.rb
Constant Summary collapse
- API_URL =
"https://openrouter.ai/api/v1/chat/completions"- MODELS_URL =
"https://openrouter.ai/api/v1/models"
Class Method Summary collapse
Instance Method Summary collapse
-
#initialize(app_name: nil, app_url: nil, provider: nil, **options) ⇒ Openrouter
constructor
A new instance of Openrouter.
Methods inherited from Openai
Methods inherited from Base
Constructor Details
#initialize(app_name: nil, app_url: nil, provider: nil, **options) ⇒ Openrouter
Returns a new instance of Openrouter.
38 39 40 41 42 43 |
# File 'lib/llm_providers/providers/openrouter.rb', line 38 def initialize(app_name: nil, app_url: nil, provider: nil, **) super(**) @app_name = app_name || ENV["OPENROUTER_APP_NAME"] @app_url = app_url || ENV["OPENROUTER_APP_URL"] @provider_preferences = provider end |
Class Method Details
.models ⇒ Object
9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 |
# File 'lib/llm_providers/providers/openrouter.rb', line 9 def self.models api_key = ENV.fetch("OPENROUTER_API_KEY") conn = Faraday.new do |f| f.response :json f.adapter Faraday.default_adapter end response = conn.get(MODELS_URL) do |req| req.headers["Authorization"] = "Bearer #{api_key}" end unless response.success? error_msg = response.body.dig("error", "message") || "Failed to fetch models" raise ProviderError.new(error_msg, code: "openrouter_error") end (response.body["data"] || []).map do |model| { id: model["id"], name: model["name"], context_length: model["context_length"], pricing: { prompt: model.dig("pricing", "prompt"), completion: model.dig("pricing", "completion") } } end end |