Class: OpenAI
- Inherits:
-
LastLLM::Provider
- Object
- LastLLM::Provider
- OpenAI
- Defined in:
- lib/last_llm/providers/openai.rb
Overview
OpenAI provider implementation
Constant Summary collapse
- BASE_ENDPOINT =
'https://api.openai.com'
Instance Attribute Summary
Attributes inherited from LastLLM::Provider
Instance Method Summary collapse
-
#embeddings(text, options = {}) ⇒ Array<Float>
Generate embeddings from text.
- #generate_object(prompt, schema, options = {}) ⇒ Object
- #generate_text(prompt, options = {}) ⇒ Object
-
#initialize(config) ⇒ OpenAI
constructor
A new instance of OpenAI.
Constructor Details
#initialize(config) ⇒ OpenAI
Returns a new instance of OpenAI.
9 10 11 12 |
# File 'lib/last_llm/providers/openai.rb', line 9 def initialize(config) super(Constants::OPENAI, config) @conn = connection(config[:base_url] || BASE_ENDPOINT) end |
Instance Method Details
#embeddings(text, options = {}) ⇒ Array<Float>
Generate embeddings from text
34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 |
# File 'lib/last_llm/providers/openai.rb', line 34 def (text, = {}) # Ensure text is a string text_str = text.to_s response = @conn.post('/v1/embeddings') do |req| req.body = { model: [:model] || 'text-embedding-ada-002', input: text_str, encoding_format: [:encoding_format] || 'float' }.compact end result = parse_response(response) # Extract embeddings from response = result.dig(:data, 0, :embedding) raise LastLLM::ApiError.new('Invalid embeddings response format', nil) unless .is_a?(Array) rescue Faraday::Error => e handle_request_error(e) end |
#generate_object(prompt, schema, options = {}) ⇒ Object
22 23 24 25 26 27 28 |
# File 'lib/last_llm/providers/openai.rb', line 22 def generate_object(prompt, schema, = {}) request_body = build_json_request(prompt, schema, ) response = make_completion_request(request_body) parse_json_response(response) rescue Faraday::Error => e handle_request_error(e) end |
#generate_text(prompt, options = {}) ⇒ Object
14 15 16 17 18 19 20 |
# File 'lib/last_llm/providers/openai.rb', line 14 def generate_text(prompt, = {}) request_body = build_completion_request(prompt, ) response = make_completion_request(request_body) extract_content(response) rescue Faraday::Error => e handle_request_error(e) end |