Class: Geminize::Chat
- Inherits:
-
Object
- Object
- Geminize::Chat
- Defined in:
- lib/geminize/chat.rb
Overview
Class for chat functionality
Instance Attribute Summary collapse
-
#client ⇒ Geminize::Client
readonly
The client instance.
-
#conversation ⇒ Models::Conversation
readonly
The current conversation.
Class Method Summary collapse
-
.new_conversation(title = nil, system_instruction = nil) ⇒ Chat
Create a new conversation.
Instance Method Summary collapse
-
#generate_response(chat_request) ⇒ Models::ChatResponse
Generate a response based on the current conversation.
-
#initialize(conversation = nil, client = nil, options = {}) ⇒ Chat
constructor
Initialize a new chat instance.
-
#send_message(content, model_name = nil, params = {}) ⇒ Models::ChatResponse
Send a user message and get a model response.
-
#set_system_instruction(instruction) ⇒ self
Set a system instruction for the conversation.
Constructor Details
#initialize(conversation = nil, client = nil, options = {}) ⇒ Chat
Initialize a new chat instance
16 17 18 19 20 |
# File 'lib/geminize/chat.rb', line 16 def initialize(conversation = nil, client = nil, = {}) @conversation = conversation || Models::Conversation.new @client = client || Client.new() @options = end |
Instance Attribute Details
#client ⇒ Geminize::Client (readonly)
Returns The client instance.
7 8 9 |
# File 'lib/geminize/chat.rb', line 7 def client @client end |
#conversation ⇒ Models::Conversation (readonly)
Returns The current conversation.
10 11 12 |
# File 'lib/geminize/chat.rb', line 10 def conversation @conversation end |
Class Method Details
.new_conversation(title = nil, system_instruction = nil) ⇒ Chat
Create a new conversation
92 93 94 95 96 |
# File 'lib/geminize/chat.rb', line 92 def self.new_conversation(title = nil, system_instruction = nil) # Create a conversation with explicit parameters conversation = Models::Conversation.new(nil, title, nil, nil, system_instruction) new(conversation) end |
Instance Method Details
#generate_response(chat_request) ⇒ Models::ChatResponse
Generate a response based on the current conversation
76 77 78 79 80 81 82 83 84 85 86 |
# File 'lib/geminize/chat.rb', line 76 def generate_response(chat_request) model_name = chat_request.model_name endpoint = RequestBuilder.build_text_generation_endpoint(model_name) # Create payload with conversation history payload = RequestBuilder.build_chat_request(chat_request, @conversation.) # Send request to API response_data = @client.post(endpoint, payload) Models::ChatResponse.from_hash(response_data) end |
#send_message(content, model_name = nil, params = {}) ⇒ Models::ChatResponse
Send a user message and get a model response
34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 |
# File 'lib/geminize/chat.rb', line 34 def (content, model_name = nil, params = {}) # Add user message to conversation @conversation.(content) # Create the chat request request_params = params.dup # Only include system_instruction in params if explicitly provided or set in conversation if params[:system_instruction] || @conversation.system_instruction request_params[:system_instruction] = params[:system_instruction] || @conversation.system_instruction end chat_request = Models::ChatRequest.new( content, model_name || Geminize.configuration.default_model, nil, # user_id request_params ) # Generate the response using the conversation history response = generate_response(chat_request) # Extract and add the model's response to the conversation if response.has_text? @conversation.(response.text) end response end |
#set_system_instruction(instruction) ⇒ self
Set a system instruction for the conversation
67 68 69 70 |
# File 'lib/geminize/chat.rb', line 67 def set_system_instruction(instruction) @conversation.system_instruction = instruction self end |