Class: ActiveHarness::Providers::OpenRouter

Inherits:
Base
  • Object
show all
Defined in:
lib/active_harness/providers/openrouter.rb

Overview

OpenRouter proxies many models (OpenAI, Anthropic, etc.) through a single API. API is OpenAI-compatible with an extra “HTTP-Referer” header.

Constant Summary collapse

API_URL =
URI("https://openrouter.ai/api/v1/chat/completions")

Instance Method Summary collapse

Instance Method Details

#call(request) ⇒ Object



10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
# File 'lib/active_harness/providers/openrouter.rb', line 10

def call(request)
  body = build_body(request)
  raw  = post(body, request.timeout)
  data = JSON.parse(raw)

  handle_error!(data)

  content = data.dig("choices", 0, "message", "content").to_s.strip
  usage   = data["usage"] || {}

  build_response(
    content:  content,
    provider: :openrouter,
    model:    data["model"] || request.model,
    usage:    { prompt: usage["prompt_tokens"], completion: usage["completion_tokens"] },
    raw:      raw
  )
end