Commit 81a284c
Changed files (1)
lib
net
llm
lib/net/llm/openai.rb
@@ -5,19 +5,21 @@ module Net
class OpenAI
DEFAULT_TIMEOUT = 60 * 2
- attr_reader :api_key, :base_url, :model, :client
+ attr_reader :base_url, :model, :client
def initialize(api_key:, base_url: "https://api.openai.com/v1", model: "gpt-4o-mini", timeout: DEFAULT_TIMEOUT)
- @api_key = api_key
@base_url = base_url
- @client = Net::Hippie::Client.new(read_timeout: timeout, open_timeout: timeout)
+ @client = Net::Hippie::Client.new(
+ headers: Net::Hippie::Client::DEFAULT_HEADERS.merge({ "Authorization" => Net::Hippie.bearer_auth(api_key) }),
+ open_timeout: timeout,
+ read_timeout: timeout,
+ )
@model = model
end
def chat(messages, tools)
response = client.post(
"#{base_url}/chat/completions",
- headers: headers,
body: { model: model, messages: messages, tools: tools, tool_choice: "auto" }
)
handle_response(response)
@@ -26,7 +28,6 @@ module Net
def models
response = client.get(
"#{base_url}/models",
- headers: headers
)
handle_response(response)
end
@@ -34,7 +35,6 @@ module Net
def embeddings(input, model: "text-embedding-ada-002")
response = client.post(
"#{base_url}/embeddings",
- headers: headers,
body: { model: model, input: input }
)
handle_response(response)
@@ -42,10 +42,6 @@ module Net
private
- def headers
- { "Authorization" => Net::Hippie.bearer_auth(api_key) }
- end
-
def handle_response(response)
raise "HTTP #{response.code}: #{response.body}" unless response.is_a?(Net::HTTPSuccess)
JSON.parse(response.body)