Commit 81a284c

mo khan <mo@mokhan.ca>
2025-10-08 17:31:40
refactor: create client in initializer
1 parent e0546b7
Changed files (1)
lib
net
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)