Commit 5d05bce

mo khan <mo@mokhan.ca>
2025-10-15 23:02:43
Fix response processing
1 parent bca2227
Changed files (1)
lib
elelem
lib/elelem/api.rb
@@ -25,21 +25,24 @@ module Elelem
     private
 
     def normalize_ollama_response(chunk)
-      if chunk["done"]
-        finish_reason = chunk["done_reason"] || "stop"
-        return { "done" => true, "finish_reason" => finish_reason }
-      end
+      return done_response(chunk) if chunk["done"]
 
-      message = chunk["message"]
-      return nil unless message
+      normalize_message(chunk["message"])
+    end
 
-      result = {}
-      result["role"] = message["role"] if message["role"]
-      result["content"] = message["content"] if message["content"]
-      result["reasoning"] = message["thinking"] if message["thinking"]
-      result["tool_calls"] = message["tool_calls"] if message["tool_calls"]
+    def done_response(chunk)
+      { "done" => true, "finish_reason" => chunk["done_reason"] || "stop" }
+    end
+
+    def normalize_message(message)
+      return nil unless message
 
-      result.empty? ? nil : result
+      {}.tap do |result|
+        result["role"] = message["role"] if message["role"]
+        result["content"] = message["content"] if message["content"]
+        result["reasoning"] = message["thinking"] if message["thinking"]
+        result["tool_calls"] = message["tool_calls"] if message["tool_calls"]
+      end.then { |r| r.empty? ? nil : r }
     end
   end
 end