Class: Chatgpt::Client
- Inherits:
-
Object
- Object
- Chatgpt::Client
- Defined in:
- lib/chatgpt.rb
Constant Summary collapse
- API_URL =
URL API, используемый для отправки запросов к ChatGPT
"https://api.openai.com/v1/chat/completions"
Class Attribute Summary collapse
-
.model ⇒ Object
Настройки клиента (задаются глобально) model - Определяет используемую модель, например, “gpt-4o-mini”.
-
.prompt_prefix ⇒ Object
Настройки клиента (задаются глобально) model - Определяет используемую модель, например, “gpt-4o-mini”.
-
.proxy ⇒ Object
Настройки клиента (задаются глобально) model - Определяет используемую модель, например, “gpt-4o-mini”.
-
.system_message ⇒ Object
Настройки клиента (задаются глобально) model - Определяет используемую модель, например, “gpt-4o-mini”.
-
.temperature ⇒ Object
Настройки клиента (задаются глобально) model - Определяет используемую модель, например, “gpt-4o-mini”.
Instance Method Summary collapse
-
#build_request_data(prompt) ⇒ String
Формирует тело запроса для API.
-
#initialize(api_key) ⇒ Client
constructor
Конструктор класса.
-
#parse_response(response) ⇒ Hash
Обрабатывает ответ API.
-
#request_headers ⇒ Hash
Генерирует заголовки для HTTP-запроса.
-
#send_request(prompt, proxy = nil) ⇒ Hash
Отправляет запрос в API ChatGPT.
Constructor Details
#initialize(api_key) ⇒ Client
Конструктор класса
27 28 29 30 31 32 33 |
# File 'lib/chatgpt.rb', line 27 def initialize(api_key) @chat_api_key = api_key @model = self.class.model @temperature = self.class.temperature = self.class. @prompt_prefix = self.class.prompt_prefix end |
Class Attribute Details
.model ⇒ Object
Настройки клиента (задаются глобально) model - Определяет используемую модель, например, “gpt-4o-mini”. temperature - Контролирует степень случайности ответов модели (диапазон 0.0 - 1.0). system_message - Специальное сообщение, которое задает контекст модели. prompt_prefix - Префикс для запросов, полезен при массовых однотипных запросах. proxy - Прокси-сервер, указывается в формате <protocol>://<login>:<password>@<host>:<port>
18 19 20 |
# File 'lib/chatgpt.rb', line 18 def model @model end |
.prompt_prefix ⇒ Object
Настройки клиента (задаются глобально) model - Определяет используемую модель, например, “gpt-4o-mini”. temperature - Контролирует степень случайности ответов модели (диапазон 0.0 - 1.0). system_message - Специальное сообщение, которое задает контекст модели. prompt_prefix - Префикс для запросов, полезен при массовых однотипных запросах. proxy - Прокси-сервер, указывается в формате <protocol>://<login>:<password>@<host>:<port>
18 19 20 |
# File 'lib/chatgpt.rb', line 18 def prompt_prefix @prompt_prefix end |
.proxy ⇒ Object
Настройки клиента (задаются глобально) model - Определяет используемую модель, например, “gpt-4o-mini”. temperature - Контролирует степень случайности ответов модели (диапазон 0.0 - 1.0). system_message - Специальное сообщение, которое задает контекст модели. prompt_prefix - Префикс для запросов, полезен при массовых однотипных запросах. proxy - Прокси-сервер, указывается в формате <protocol>://<login>:<password>@<host>:<port>
18 19 20 |
# File 'lib/chatgpt.rb', line 18 def proxy @proxy end |
.system_message ⇒ Object
Настройки клиента (задаются глобально) model - Определяет используемую модель, например, “gpt-4o-mini”. temperature - Контролирует степень случайности ответов модели (диапазон 0.0 - 1.0). system_message - Специальное сообщение, которое задает контекст модели. prompt_prefix - Префикс для запросов, полезен при массовых однотипных запросах. proxy - Прокси-сервер, указывается в формате <protocol>://<login>:<password>@<host>:<port>
18 19 20 |
# File 'lib/chatgpt.rb', line 18 def end |
.temperature ⇒ Object
Настройки клиента (задаются глобально) model - Определяет используемую модель, например, “gpt-4o-mini”. temperature - Контролирует степень случайности ответов модели (диапазон 0.0 - 1.0). system_message - Специальное сообщение, которое задает контекст модели. prompt_prefix - Префикс для запросов, полезен при массовых однотипных запросах. proxy - Прокси-сервер, указывается в формате <protocol>://<login>:<password>@<host>:<port>
18 19 20 |
# File 'lib/chatgpt.rb', line 18 def temperature @temperature end |
Instance Method Details
#build_request_data(prompt) ⇒ String
Формирует тело запроса для API
56 57 58 59 60 61 62 63 64 65 66 |
# File 'lib/chatgpt.rb', line 56 def build_request_data(prompt) = [] << { role: "user", content: @prompt_prefix.to_s + prompt } << { role: "system", content: } if { "model" => @model, "messages" => , "temperature" => @temperature }.to_json end |
#parse_response(response) ⇒ Hash
Обрабатывает ответ API
80 81 82 83 84 |
# File 'lib/chatgpt.rb', line 80 def parse_response(response) JSON.parse(response.body) rescue JSON::ParserError { "error" => "Ошибка парсинга JSON" } end |
#request_headers ⇒ Hash
Генерирует заголовки для HTTP-запроса
70 71 72 73 74 75 |
# File 'lib/chatgpt.rb', line 70 def request_headers { "Content-Type" => "application/json", "Authorization" => "Bearer #{@chat_api_key}" } end |
#send_request(prompt, proxy = nil) ⇒ Hash
Отправляет запрос в API ChatGPT
39 40 41 42 43 44 45 46 47 48 49 50 51 |
# File 'lib/chatgpt.rb', line 39 def send_request(prompt, proxy = nil) request_data = build_request_data(prompt) response = ApiRequest.new( url: API_URL, headers: request_headers, data: request_data, proxy: proxy || self.class.proxy ).post parse_response(response) rescue StandardError => e { "error" => "Ошибка запроса: #{e.message}" } end |