Class: OpenaiChatgpt::Client

Inherits:
Object
  • Object
show all
Defined in:
lib/openai_chatgpt/client.rb

Overview

Client having API methods and api_key

Constant Summary collapse

BASE_URL =

Base url for OpenAI ChatGPT API

"https://api.openai.com/v1/chat/completions"

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(api_key:, adapter: Faraday.default_adapter, stubs: nil, request_timeout: 1200) ⇒ Client

#### Params: api_key: String - Required - API key for OpenAI ChatGPT API (platform.openai.com/account/api-keys) adapter: Symbol - Optional - Default: :net_http - Adapter for Faraday connection stubs: Faraday::Adapter::Test::Stubs - Optional - Default: nil - Stubs for Faraday connection request_timeout: Integer - Optional - Default: 1200 - Timeout for Faraday connection #### Example: client = OpenaiChatgpt::Client.new api_key: “test” #### Description: Client for OpenAI ChatGPT API



19
20
21
22
23
24
25
26
# File 'lib/openai_chatgpt/client.rb', line 19

def initialize(api_key:, adapter: Faraday.default_adapter, stubs: nil, request_timeout: 1200)
  @api_key = api_key
  @adapter = adapter
  @request_timeout = request_timeout

  # Test stubs for requests
  @stubs = stubs
end

Instance Attribute Details

#adapterObject (readonly)

Returns the value of attribute adapter.



8
9
10
# File 'lib/openai_chatgpt/client.rb', line 8

def adapter
  @adapter
end

#api_keyObject (readonly)

Returns the value of attribute api_key.



8
9
10
# File 'lib/openai_chatgpt/client.rb', line 8

def api_key
  @api_key
end

Instance Method Details

#completions(messages:, model: "gpt-4", temperature: 1.0, top_p: 1.0, n: 1, stream: false, stop: nil, max_tokens: 2000, presence_penalty: 0, frequency_penalty: 0, logit_bias: {}, user: "") ⇒ Object

#### Description: completions method for OpenAI ChatGPT API #### Response: Response object with choices #### Error: OpenaiChatgpt::Error



54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
# File 'lib/openai_chatgpt/client.rb', line 54

def completions( # rubocop:disable Metrics/MethodLength, Metrics/ParameterLists
  messages:,
  model: "gpt-4",
  temperature: 1.0,
  top_p: 1.0,
  n: 1, # rubocop:disable Naming/MethodParameterName
  stream: false,
  stop: nil,
  max_tokens: 2000,
  presence_penalty: 0,
  frequency_penalty: 0,
  logit_bias: {},
  user: ""
)
  Response.new post("", {
    model: model,
    messages: messages,
    temperature: temperature,
    top_p: top_p,
    n: n,
    stream: stream,
    stop: stop,
    max_tokens: max_tokens,
    presence_penalty: presence_penalty,
    frequency_penalty: frequency_penalty,
    logit_bias: logit_bias,
    user: user
  }.to_json)
end