ask-llm-providers 0.1.13 → 0.1.15

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: f8a74bb6d0bdeec2f86e1ec7e352c121e2c69c44837293e545d78a6a189552c0
4
- data.tar.gz: 654529c6b21c4ba943f8d0bcf8eb7361a209ab470b918b4bc77f3afc4ba37321
3
+ metadata.gz: d05af6c6de7917048a5b86d1fea1c0acfd3ef820c71c7672f19375a5024fe138
4
+ data.tar.gz: 3cf21a18360b52e5fd44d01359c0312e05163a234407f07b515f325abf9ebee7
5
5
  SHA512:
6
- metadata.gz: d9b3fa669828ecadda4d43b6295019b9a47af5aef9cfeb2f1289fc8025a7275e41d83ab6f1a8154964872b7ff3055f54601b73df10e84cc4f7c2318912a191f9
7
- data.tar.gz: 633f84f8cfcbfa71d266bbb8ca6c813157e0a312f7cebd69879cf2d5ee53b81cc63d4733ad967290742bf03b781c142197f9c5b23446f5ea72929689b6e262ac
6
+ metadata.gz: 7e91f0e672b159d2d8c7af3de889d0155ede9fc60191b38a78c4f34e675892f0c867ef30dfd6d7feac055d04ef0be347f06fa9888b8d3282b48d34d26dcd59c5
7
+ data.tar.gz: 813cc7dc3ca391fca712dae4c59a356019ef363d34a1b2a19376faf1a0b0ac2f2dddb065bd842b64adb7909045936d048bceadc47d2f07de3377115e748f2f08
data/lib/ask/llm/http.rb CHANGED
@@ -15,10 +15,12 @@ module Ask
15
15
 
16
16
  # Map an HTTP exception or error response to the appropriate Ask::Error.
17
17
  def self.map_error(status, body, provider:)
18
+ body = JSON.parse(body) rescue body if body.is_a?(String)
18
19
  message = extract_error_message(body, status) || "HTTP #{status} from #{provider}"
19
20
 
20
21
  # Check for context length exceeded regardless of status code
21
- if body&.dig("error", "code") == "context_length_exceeded"
22
+ err_code = body.respond_to?(:dig) ? body.dig("error", "code") : nil
23
+ if err_code == "context_length_exceeded"
22
24
  return Ask::ContextLengthExceeded.new("#{provider}: #{message}")
23
25
  end
24
26
 
@@ -36,11 +38,15 @@ module Ask
36
38
  def self.extract_error_message(body, status)
37
39
  return nil unless body
38
40
 
39
- body.dig("error", "message") ||
40
- body.dig("error", "msg") ||
41
- body.dig("error", "error") ||
42
- body["message"] ||
41
+ if body.respond_to?(:dig)
42
+ body.dig("error", "message") ||
43
+ body.dig("error", "msg") ||
44
+ body.dig("error", "error") ||
45
+ body["message"] ||
46
+ body.to_s
47
+ else
43
48
  body.to_s
49
+ end
44
50
  end
45
51
  end
46
52
  end
@@ -2,6 +2,6 @@
2
2
 
3
3
  module Ask
4
4
  module LLM
5
- VERSION = "0.1.13"
5
+ VERSION = "0.1.15"
6
6
  end
7
7
  end
@@ -21,6 +21,17 @@ module Ask
21
21
  h
22
22
  end
23
23
 
24
+ # DeepSeek requires reasoning_content in every assistant message
25
+ # that includes tool_calls. Override format_messages to inject it.
26
+ def format_messages(messages)
27
+ super.map do |fm|
28
+ if fm[:role] == "assistant" && fm[:tool_calls]
29
+ fm[:reasoning_content] = fm[:reasoning_content] || ""
30
+ end
31
+ fm
32
+ end
33
+ end
34
+
24
35
  class << self
25
36
  def slug; "deepseek"; end
26
37
  def configuration_options; %i[api_key base_url]; end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ask-llm-providers
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.13
4
+ version: 0.1.15
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kaka Ruto