Class: LLM::DeepSeek

Inherits:
OpenAI show all
Includes:
DeepSeek::RequestAdapter
Defined in:
lib/llm/providers/deepseek.rb,
lib/llm/providers/deepseek/files.rb,
lib/llm/providers/deepseek/images.rb,
lib/llm/providers/deepseek/request_adapter.rb,
lib/llm/providers/deepseek/response_adapter.rb

Overview

The DeepSeek class implements a provider for DeepSeek through its OpenAI-compatible API available via their web platform.

Examples:

#!/usr/bin/env ruby
require "llm"

llm = LLM.deepseek(key: ENV["KEY"])
ctx = LLM::Context.new(llm)
ctx.talk "Hello"
ctx.messages.select(&:assistant?).each { print "[#{_1.role}]", _1.content, "\n" }

Defined Under Namespace

Classes: Files, Images

Constant Summary

Constants inherited from OpenAI

OpenAI::HOST

Instance Method Summary collapse

Methods inherited from OpenAI

#adapt_function, #complete, #embed, #models, #server_tools, #web_search

Methods inherited from Provider

#adapt_function, #assistant_role, #build_messages, #chat, #complete, #developer_role, #embed, #host, #inspect, #interrupt!, #key?, #models, #ocr, #port, #registry, #request_owner, #respond, #retry_budget, #schema, #server_tool, #server_tools, #system_role, #tool_role, #tracer, #tracer=, #user_role, #web_search, #with, #with_tracer

Constructor Details

#initialize(host: "api.deepseek.com", port: 443, ssl: true) ⇒ LLM::DeepSeek

Parameters:

  • key (String, nil) —

    The secret key for authentication

  • host (String) (defaults to: "api.deepseek.com") —

    The host address of the LLM provider

  • port (Integer) (defaults to: 443) —

    The port number

  • timeout (Integer) —

    The number of seconds to wait for a response. Also serves as the default read timeout.

  • read_timeout (Integer, nil) —

    The number of seconds to wait for a response. Defaults to timeout.

  • connect_timeout (Integer) —

    The number of seconds to wait for a TCP connection to open.

  • ssl (Boolean) (defaults to: true) —

    Whether to use SSL for the connection

  • base_path (String) —

    Optional base path prefix for HTTP API routes.

  • persistent (Boolean) —

    Whether to use a persistent connection. Requires the net-http-persistent gem.

  • transport (LLM::Transport, Class, nil) —

    Optional override with any Transport instance or subclass.



30
31
32
# File 'lib/llm/providers/deepseek.rb', line 30

def initialize(host: "api.deepseek.com", port: 443, ssl: true, **)
  super
end

Instance Method Details

#retry_errors ⇒ Array<Exception>

Note:

This method extends the default errors that are retried to include LLM::ServerError - a common error that DeepSeek returns when it is overloaded.

Returns:

  • (Array<Exception>)


94
95
96
# File 'lib/llm/providers/deepseek.rb', line 94

def retry_errors
  super.concat [LLM::ServerError]
end

#name ⇒ Symbol

Returns the provider's name

Returns:

  • (Symbol) —

    Returns the provider's name



37
38
39
# File 'lib/llm/providers/deepseek.rb', line 37

def name
  :deepseek
end

#files ⇒ LLM::DeepSeek::Files

Provides an interface to DeepSeek's files API

Returns:

See Also:



45
46
47
# File 'lib/llm/providers/deepseek.rb', line 45

def files
  LLM::DeepSeek::Files.new(self)
end

#images ⇒ Object



51
52
53
# File 'lib/llm/providers/deepseek.rb', line 51

def images
  LLM::DeepSeek::Images.new(self)
end

#audio ⇒ Object

Raises:

  • (NotImplementedError)


57
58
59
# File 'lib/llm/providers/deepseek.rb', line 57

def audio
  raise NotImplementedError
end

#moderations ⇒ Object

Raises:

  • (NotImplementedError)


63
64
65
# File 'lib/llm/providers/deepseek.rb', line 63

def moderations
  raise NotImplementedError
end

#responses ⇒ Object

Raises:

  • (NotImplementedError)


69
70
71
# File 'lib/llm/providers/deepseek.rb', line 69

def responses
  raise NotImplementedError
end

#vector_stores ⇒ Object

Raises:

  • (NotImplementedError)


75
76
77
# File 'lib/llm/providers/deepseek.rb', line 75

def vector_stores
  raise NotImplementedError
end

#default_model ⇒ String

Returns the default model for chat completions

Returns:

  • (String)

See Also:



83
84
85
# File 'lib/llm/providers/deepseek.rb', line 83

def default_model
  "deepseek-flash"
end