fast-deepseek 0.1.2 → 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: 3d6f10eeee14cd293415f0ee509aa3b84635e8e8597fc91b60d9726ceae0ab3a
4
- data.tar.gz: 62cff10da5694252414b4360282e82b6d8dd2a1e6c3a3988f2d5eddd9f15ad32
3
+ metadata.gz: db93a692cecf12040497bbd26b9654b36a25f5b30887178dc6250016cd7a3cfe
4
+ data.tar.gz: 0add12910cf7304d4d778d1850cc1a09394377d2a04f5ec52b896e4f6f7cbb62
5
5
  SHA512:
6
- metadata.gz: 6622e63258fff0761a275e51cf2f3c34aed8e32633d4c0a6697616609c1d3cfd343cc186f4446127b5ede2eefaac0e14c9042d59ab7e90a32e00d379c529c78e
7
- data.tar.gz: e3c9e64d093d60ce2c55bedf4b0f1036f304d0214afe48ee98ce8278e32b6959eab2b35c584daa582f9ba5a95817ee5a1a88282c31186ad3e325b285b2428298
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.2".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,56 +1,42 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: fast-deepseek
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.2
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
12
  - !ruby/object:Gem::Dependency
13
- name: faraday
13
+ name: dotenv
14
14
  requirement: !ruby/object:Gem::Requirement
15
15
  requirements:
16
16
  - - "~>"
17
17
  - !ruby/object:Gem::Version
18
- version: '2.0'
18
+ version: '2.8'
19
19
  type: :runtime
20
20
  prerelease: false
21
21
  version_requirements: !ruby/object:Gem::Requirement
22
22
  requirements:
23
23
  - - "~>"
24
24
  - !ruby/object:Gem::Version
25
- version: '2.0'
25
+ version: '2.8'
26
26
  - !ruby/object:Gem::Dependency
27
- name: rspec
28
- requirement: !ruby/object:Gem::Requirement
29
- requirements:
30
- - - "~>"
31
- - !ruby/object:Gem::Version
32
- version: '3.10'
33
- type: :development
34
- prerelease: false
35
- version_requirements: !ruby/object:Gem::Requirement
36
- requirements:
37
- - - "~>"
38
- - !ruby/object:Gem::Version
39
- version: '3.10'
40
- - !ruby/object:Gem::Dependency
41
- name: webmock
27
+ name: faraday
42
28
  requirement: !ruby/object:Gem::Requirement
43
29
  requirements:
44
30
  - - "~>"
45
31
  - !ruby/object:Gem::Version
46
- version: '3.14'
47
- type: :development
32
+ version: '2.0'
33
+ type: :runtime
48
34
  prerelease: false
49
35
  version_requirements: !ruby/object:Gem::Requirement
50
36
  requirements:
51
37
  - - "~>"
52
38
  - !ruby/object:Gem::Version
53
- version: '3.14'
39
+ version: '2.0'
54
40
  description: Provides an easy-to-use interface for interacting with DeepSeek API.
55
41
  email:
56
42
  - uday88k@gmail.com
@@ -62,6 +48,7 @@ files:
62
48
  - bin/setup
63
49
  - lib/fast_deepseek.rb
64
50
  - lib/fast_deepseek/client.rb
51
+ - lib/fast_deepseek/errors.rb
65
52
  - lib/fast_deepseek/version.rb
66
53
  homepage: https://github.com/udaykadaboina/fast-deepseek
67
54
  licenses:
@@ -69,7 +56,7 @@ licenses:
69
56
  metadata:
70
57
  homepage_uri: https://github.com/udaykadaboina/fast-deepseek
71
58
  source_code_uri: https://github.com/udaykadaboina/fast-deepseek
72
- changelog_uri: https://github.com/rails/rails/releases/tag/v0.1.2
59
+ changelog_uri: https://github.com/udaykadaboina/fast-deepseek/releases/tag/v0.2.2
73
60
  rubygems_mfa_required: 'true'
74
61
  rdoc_options: []
75
62
  require_paths:
@@ -78,14 +65,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
78
65
  requirements:
79
66
  - - ">="
80
67
  - !ruby/object:Gem::Version
81
- version: 2.6.0
68
+ version: 3.2.0
82
69
  required_rubygems_version: !ruby/object:Gem::Requirement
83
70
  requirements:
84
71
  - - ">="
85
72
  - !ruby/object:Gem::Version
86
73
  version: '0'
87
74
  requirements: []
88
- rubygems_version: 3.6.6
75
+ rubygems_version: 4.0.21
89
76
  specification_version: 4
90
77
  summary: A fast wrapper for DeepSeek API
91
78
  test_files: []