Class: Geminize::ConversationService
- Inherits:
-
Object
- Object
- Geminize::ConversationService
- Defined in:
- lib/geminize/conversation_service.rb
Overview
High-level service for managing conversations
Instance Attribute Summary collapse
-
#client ⇒ Geminize::Client
readonly
The client instance.
-
#repository ⇒ Geminize::ConversationRepository
readonly
The repository for storing conversations.
Instance Method Summary collapse
-
#clear_conversation(id) ⇒ Models::Conversation
Clear a conversation's message history.
-
#create_conversation(title = nil, system_instruction = nil) ⇒ Models::Conversation
Create a new conversation.
-
#delete_conversation(id) ⇒ Boolean
Delete a conversation.
-
#get_conversation(id) ⇒ Models::Conversation?
Get a conversation by ID.
-
#initialize(repository = nil, client = nil, options = {}) ⇒ ConversationService
constructor
Initialize a new conversation service.
-
#list_conversations ⇒ Array<Hash>
List all available conversations.
-
#send_message(conversation_id, message, model_name = nil, params = {}) ⇒ Hash
Send a message in a conversation and get a response.
-
#update_conversation_system_instruction(id, system_instruction) ⇒ Models::Conversation
Update a conversation's system instruction.
-
#update_conversation_title(id, title) ⇒ Models::Conversation
Update a conversation title.
Constructor Details
#initialize(repository = nil, client = nil, options = {}) ⇒ ConversationService
Initialize a new conversation service
16 17 18 19 20 |
# File 'lib/geminize/conversation_service.rb', line 16 def initialize(repository = nil, client = nil, = {}) @repository = repository || Geminize.conversation_repository @client = client || Client.new() = end |
Instance Attribute Details
#client ⇒ Geminize::Client (readonly)
Returns The client instance.
10 11 12 |
# File 'lib/geminize/conversation_service.rb', line 10 def client @client end |
#repository ⇒ Geminize::ConversationRepository (readonly)
Returns The repository for storing conversations.
7 8 9 |
# File 'lib/geminize/conversation_service.rb', line 7 def repository @repository end |
Instance Method Details
#clear_conversation(id) ⇒ Models::Conversation
Clear a conversation's message history
103 104 105 106 107 108 109 110 |
# File 'lib/geminize/conversation_service.rb', line 103 def clear_conversation(id) conversation = get_conversation(id) raise Geminize::GeminizeError.new("Conversation not found: #{id}", nil, nil) unless conversation conversation.clear @repository.save(conversation) conversation end |
#create_conversation(title = nil, system_instruction = nil) ⇒ Models::Conversation
Create a new conversation
26 27 28 29 30 31 32 33 34 35 |
# File 'lib/geminize/conversation_service.rb', line 26 def create_conversation(title = nil, system_instruction = nil) # Create a conversation with the appropriate arguments conversation = if system_instruction Models::Conversation.new(nil, title, nil, nil, system_instruction) else Models::Conversation.new(nil, title) end @repository.save(conversation) conversation end |
#delete_conversation(id) ⇒ Boolean
Delete a conversation
81 82 83 |
# File 'lib/geminize/conversation_service.rb', line 81 def delete_conversation(id) @repository.delete(id) end |
#get_conversation(id) ⇒ Models::Conversation?
Get a conversation by ID
41 42 43 |
# File 'lib/geminize/conversation_service.rb', line 41 def get_conversation(id) @repository.load(id) end |
#list_conversations ⇒ Array<Hash>
List all available conversations
74 75 76 |
# File 'lib/geminize/conversation_service.rb', line 74 def list_conversations @repository.list end |
#send_message(conversation_id, message, model_name = nil, params = {}) ⇒ Hash
Send a message in a conversation and get a response
52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 |
# File 'lib/geminize/conversation_service.rb', line 52 def (conversation_id, , model_name = nil, params = {}) # Load the conversation conversation = get_conversation(conversation_id) raise Geminize::GeminizeError.new("Conversation not found: #{conversation_id}", nil, nil) unless conversation # Create a chat instance with the conversation chat = Chat.new(conversation, @client, ) # Send the message response = chat.(, model_name, params) # Save the updated conversation @repository.save(conversation) { response: response, conversation: conversation } end |
#update_conversation_system_instruction(id, system_instruction) ⇒ Models::Conversation
Update a conversation's system instruction
117 118 119 120 121 122 123 124 |
# File 'lib/geminize/conversation_service.rb', line 117 def update_conversation_system_instruction(id, system_instruction) conversation = get_conversation(id) raise Geminize::GeminizeError.new("Conversation not found: #{id}", nil, nil) unless conversation conversation.system_instruction = system_instruction @repository.save(conversation) conversation end |
#update_conversation_title(id, title) ⇒ Models::Conversation
Update a conversation title
90 91 92 93 94 95 96 97 |
# File 'lib/geminize/conversation_service.rb', line 90 def update_conversation_title(id, title) conversation = get_conversation(id) raise Geminize::GeminizeError.new("Conversation not found: #{id}", nil, nil) unless conversation conversation.title = title @repository.save(conversation) conversation end |