Class: ActionPrompt::Adapters::Base
- Inherits:
-
Object
- Object
- ActionPrompt::Adapters::Base
- Defined in:
- lib/action_prompt/adapters/base.rb
Overview
Abstract base class for all ActionPrompt delivery adapters.
Implement a custom adapter by subclassing this and overriding #complete.
OpenAI Example
# Gemfile: gem "ruby-openai"
class OpenAIAdapter < ActionPrompt::Adapters::Base
def initialize(api_key:)
@client = OpenAI::Client.new(access_token: api_key)
end
def complete(prompt_text, = {})
response = @client.chat(
parameters: {
model: .fetch(:model, "gpt-4o"),
temperature: .fetch(:temperature, 0.7),
messages: [{ role: "user", content: prompt_text }]
}
)
response.dig("choices", 0, "message", "content")
end
end
Google Gemini Example
# Gemfile: gem "gemini-ai"
class GeminiAdapter < ActionPrompt::Adapters::Base
def initialize(api_key:)
@client = Gemini.new(
credentials: { service: "generative-language-api", api_key: api_key },
options: { model: "gemini-pro", server_sent_events: false }
)
end
def complete(prompt_text, = {})
result = @client.generate_content(
{ contents: { role: "user", parts: { text: prompt_text } } },
request_options: { model: [:model] }.compact
)
result.dig("candidates", 0, "content", "parts", 0, "text")
end
end
Instance Method Summary collapse
-
#complete(prompt_text, options = {}) ⇒ String
Sends
prompt_textto the LLM and returns its text response.
Instance Method Details
#complete(prompt_text, options = {}) ⇒ String
Sends prompt_text to the LLM and returns its text response.
57 58 59 |
# File 'lib/action_prompt/adapters/base.rb', line 57 def complete(prompt_text, = {}) # rubocop:disable Lint/UnusedMethodArgument raise NotImplementedError, "#{self.class}#complete must be implemented by subclasses" end |