fast-deepseek 0.1.3 → 0.2.2

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: 149d4a1cdffdafa982a1fffa3d77cbe2ec1636e8b9a2419521d6992b3132b963
4
- data.tar.gz: 9ec6fd7ada1e529db50ea243cc543f661ce77d9e4f63b4667f99a92be44e2b68
3
+ metadata.gz: db93a692cecf12040497bbd26b9654b36a25f5b30887178dc6250016cd7a3cfe
4
+ data.tar.gz: 0add12910cf7304d4d778d1850cc1a09394377d2a04f5ec52b896e4f6f7cbb62
5
5
  SHA512:
6
- metadata.gz: d4f2de1d54dff15fcc04f74b338c078463b7db6155650da61cd848c3539739fea44df707d52b9d5e3290626dffb786bbdf9d263e464e1dec058b75d85c84f5c4
7
- data.tar.gz: a5f452e3c43bdf1425b7b02ad9cbc626b5c593fd7068225173e85ba7340a7f1636b56736d633007a3f6de7d5cce634d584a4750165b03ba6acb69f45f8e645c0
6
+ metadata.gz: c5c8594cd3f42a933aa85bd867ed9b55f74d08a0b8d4c8f926f423f5d52d9698e4b57377fbef3e88be5b7ba32f850ab5300f30956f9522686116cd46ec4a5343
7
+ data.tar.gz: d364afefc8880147b8ec64a22f50102cdfbe236770bcd481059b0e15934e3225d73232fd2db976e3d066b5e339a11ad86837012d267e25bff20d2954e6b31b26
@@ -1,60 +1,68 @@
1
- # lib/fast_deepseek/client.rb
2
- require 'faraday'
3
- require 'json'
4
- require 'logger'
5
- require 'dotenv/load'
1
+ # frozen_string_literal: true
2
+
3
+ require "faraday"
4
+ require "json"
5
+ require "logger"
6
+ require "dotenv/load"
6
7
 
7
8
  module FastDeepseek
9
+ # Client for interacting with the DeepSeek API.
8
10
  class Client
9
- DEFAULT_HOST = 'http://localhost:11434/api'.freeze
11
+ DEFAULT_HOST = "https://api.deepseek.com"
10
12
 
11
13
  def initialize(api_key: nil, base_url: DEFAULT_HOST)
12
- @api_key = api_key || ENV['DEEPSEEK_API_KEY']
13
- raise "DEEPSEEK_API_KEY is missing! Set it in the .env file or pass it explicitly." unless @api_key
14
+ @api_key = api_key || ENV.fetch("DEEPSEEK_API_KEY", nil)
15
+ raise Error, "DEEPSEEK_API_KEY is missing! Set it in the .env file or pass it explicitly." unless @api_key
14
16
 
15
- @base_url = base_url
16
17
  @logger = Logger.new($stdout)
17
-
18
18
  @conn = Faraday.new(url: base_url) do |faraday|
19
19
  faraday.adapter Faraday.default_adapter
20
- faraday.headers['Content-Type'] = 'application/json'
20
+ faraday.headers["Content-Type"] = "application/json"
21
21
  end
22
22
  end
23
23
 
24
- def chat(prompt, model: , options: {})
25
- request('chat', { model: model, messages: [{ role: 'user', content: prompt }], stream: false }.merge(options))
24
+ def chat(prompt, model:, options: {})
25
+ request("chat", { model: model, messages: [{ role: "user", content: prompt }], stream: false }.merge(options))
26
26
  end
27
27
 
28
- private
29
-
30
- def request(endpoint, payload)
31
- response = @conn.post("/api/#{endpoint}", payload.to_json)
28
+ def models
29
+ request("models", method: :get)
30
+ end
32
31
 
33
- response = @conn.post(endpoint) do |req|
34
- req.headers['Authorization'] = "Bearer #{@api_key}"
35
- req.body = JSON.dump(payload)
36
- end
32
+ private
37
33
 
34
+ def request(endpoint, payload = nil, method: :post)
35
+ response = send_request(endpoint, payload, method)
38
36
  handle_response(response)
39
37
  rescue Faraday::Error => e
40
38
  @logger.error("API request failed: #{e.message}")
41
- raise DeepSeek::Error, "API request failed: #{e.message}"
42
- JSON.parse(response.body)
39
+ raise Error, "API request failed: #{e.message}"
40
+ rescue JSON::ParserError => e
41
+ @logger.error("Invalid API response: #{e.message}")
42
+ raise Error, "Invalid API response: #{e.message}"
43
+ end
44
+
45
+ def send_request(endpoint, payload, method)
46
+ path = method == :post ? "#{endpoint}/completions" : endpoint
47
+ @conn.public_send(method, path) do |req|
48
+ req.headers["Authorization"] = format("Bearer %s", @api_key)
49
+ req.body = payload.to_json if payload
50
+ end
43
51
  end
44
52
 
45
53
  def handle_response(response)
46
54
  case response.status
47
55
  when 429
48
- @logger.error('API rate limit exceeded. Please try again later.')
49
- raise DeepSeek::RateLimitError, 'API rate limit exceeded. Please try again later.'
56
+ @logger.error("API rate limit exceeded. Please try again later.")
57
+ raise RateLimitError, "API rate limit exceeded. Please try again later."
50
58
  when 500..599
51
- @logger.error('Server error occurred. Please try again later.')
52
- raise DeepSeek::ServerError, 'Server error occurred. Please try again later.'
53
- when 200
59
+ @logger.error("Server error occurred. Please try again later.")
60
+ raise ServerError, "Server error occurred. Please try again later."
61
+ when 200..299
54
62
  JSON.parse(response.body)
55
63
  else
56
64
  @logger.error("API request failed: #{response.status} - #{response.body}")
57
- raise DeepSeek::Error, "API request failed: #{response.status} - #{response.body}"
65
+ raise Error, "API request failed: #{response.status} - #{response.body}"
58
66
  end
59
67
  end
60
68
  end
@@ -0,0 +1,9 @@
1
+ # frozen_string_literal: true
2
+
3
+ module FastDeepseek
4
+ class Error < StandardError; end
5
+
6
+ class RateLimitError < Error; end
7
+
8
+ class ServerError < Error; end
9
+ end
@@ -1,4 +1,6 @@
1
+ # frozen_string_literal: true
2
+
1
3
  # lib/fast_deepseek/version.rb
2
4
  module FastDeepseek
3
- VERSION = "0.1.3".freeze
5
+ VERSION = "0.2.2"
4
6
  end
data/lib/fast_deepseek.rb CHANGED
@@ -1,3 +1,5 @@
1
- # lib/fast_deepseek.rb
1
+ # frozen_string_literal: true
2
+
2
3
  require_relative "fast_deepseek/version"
4
+ require_relative "fast_deepseek/errors"
3
5
  require_relative "fast_deepseek/client"
metadata CHANGED
@@ -1,14 +1,28 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fast-deepseek
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.3
4
+ version: 0.2.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Uday Kadaboina
8
8
  bindir: exe
9
9
  cert_chain: []
10
- date: 2025-03-26 00:00:00.000000000 Z
10
+ date: 1980-01-02 00:00:00.000000000 Z
11
11
  dependencies:
12
+ - !ruby/object:Gem::Dependency
13
+ name: dotenv
14
+ requirement: !ruby/object:Gem::Requirement
15
+ requirements:
16
+ - - "~>"
17
+ - !ruby/object:Gem::Version
18
+ version: '2.8'
19
+ type: :runtime
20
+ prerelease: false
21
+ version_requirements: !ruby/object:Gem::Requirement
22
+ requirements:
23
+ - - "~>"
24
+ - !ruby/object:Gem::Version
25
+ version: '2.8'
12
26
  - !ruby/object:Gem::Dependency
13
27
  name: faraday
14
28
  requirement: !ruby/object:Gem::Requirement
@@ -34,6 +48,7 @@ files:
34
48
  - bin/setup
35
49
  - lib/fast_deepseek.rb
36
50
  - lib/fast_deepseek/client.rb
51
+ - lib/fast_deepseek/errors.rb
37
52
  - lib/fast_deepseek/version.rb
38
53
  homepage: https://github.com/udaykadaboina/fast-deepseek
39
54
  licenses:
@@ -41,7 +56,7 @@ licenses:
41
56
  metadata:
42
57
  homepage_uri: https://github.com/udaykadaboina/fast-deepseek
43
58
  source_code_uri: https://github.com/udaykadaboina/fast-deepseek
44
- changelog_uri: https://github.com/udaykadaboina/fast-deepseek/releases/tag/v0.1.3
59
+ changelog_uri: https://github.com/udaykadaboina/fast-deepseek/releases/tag/v0.2.2
45
60
  rubygems_mfa_required: 'true'
46
61
  rdoc_options: []
47
62
  require_paths:
@@ -50,14 +65,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
50
65
  requirements:
51
66
  - - ">="
52
67
  - !ruby/object:Gem::Version
53
- version: 2.6.0
68
+ version: 3.2.0
54
69
  required_rubygems_version: !ruby/object:Gem::Requirement
55
70
  requirements:
56
71
  - - ">="
57
72
  - !ruby/object:Gem::Version
58
73
  version: '0'
59
74
  requirements: []
60
- rubygems_version: 3.6.6
75
+ rubygems_version: 4.0.21
61
76
  specification_version: 4
62
77
  summary: A fast wrapper for DeepSeek API
63
78
  test_files: []