Class: DeepAgentsRb::Models::OpenAI
- Defined in:
- lib/deepagents/deepagentsrb/models.rb
Overview
OpenAI model adapter
Instance Method Summary collapse
- #generate(prompt, messages) ⇒ Object
-
#initialize(api_key: nil, model: "gpt-4o", client: nil) ⇒ OpenAI
constructor
A new instance of OpenAI.
- #stream_generate(prompt, messages, &block) ⇒ Object
Constructor Details
#initialize(api_key: nil, model: "gpt-4o", client: nil) ⇒ OpenAI
Returns a new instance of OpenAI.
60 61 62 63 64 65 |
# File 'lib/deepagents/deepagentsrb/models.rb', line 60 def initialize(api_key: nil, model: "gpt-4o", client: nil) require 'openai' @api_key = api_key || ENV['OPENAI_API_KEY'] @model = model @client = client || ::OpenAI::Client.new(access_token: @api_key) end |
Instance Method Details
#generate(prompt, messages) ⇒ Object
67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 |
# File 'lib/deepagents/deepagentsrb/models.rb', line 67 def generate(prompt, ) # Convert messages to OpenAI format if needed = .map do |msg| msg = msg.transform_keys(&:to_sym) if msg.is_a?(Hash) msg end # Add system message with prompt .unshift({ role: "system", content: prompt }) unless prompt.nil? || prompt.empty? response = @client.chat( parameters: { model: @model, messages: } ) response.dig("choices", 0, "message", "content") end |
#stream_generate(prompt, messages, &block) ⇒ Object
87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 |
# File 'lib/deepagents/deepagentsrb/models.rb', line 87 def stream_generate(prompt, , &block) # Convert messages to OpenAI format if needed = .map do |msg| msg = msg.transform_keys(&:to_sym) if msg.is_a?(Hash) msg end # Add system message with prompt .unshift({ role: "system", content: prompt }) unless prompt.nil? || prompt.empty? full_text = "" @client.chat( parameters: { model: @model, messages: , stream: true } ) do |chunk| content = chunk.dig("choices", 0, "delta", "content") if content full_text += content yield content if block_given? end end full_text end |