This commit is contained in:
xtremxpert 2025-01-17 09:14:30 -05:00
parent 3b499eada0
commit f0d05b4003
2 changed files with 43 additions and 3 deletions

View file

@ -304,9 +304,30 @@ class OpenWebUIBot(models.Model):
self.model_id.identifier, bool(self.context), bool(self.instructions)
)
# Get conversation history from the channel
domain = [
('model', '=', 'discuss.channel'),
('res_id', '=', channel.id),
('message_type', '=', 'comment'),
('id', '<=', message.id) # Only get messages up to current message
]
# Limit to last 10 messages for context
history_messages = self.env['mail.message'].search(domain, limit=10, order='id desc')
# Build message history in the format expected by the API
message_history = []
for msg in reversed(history_messages[:-1]): # Exclude current message
role = 'assistant' if msg.author_id == self.partner_id else 'user'
message_history.append({
'role': role,
'content': msg.body
})
# Process message with OpenWebUI
response = self.model_id.send_message(
message=message.body,
message_history=message_history,
context=self.context,
instructions=self.instructions
)

View file

@ -219,13 +219,32 @@ class OpenWebUIModel(models.Model):
_logger.error(f"Error synchronizing models: {str(e)}")
return False, str(e)
def send_message(self, message, context=None, instructions=None):
"""Sends a message to the model and returns its response"""
def send_message(self, message, message_history=None, context=None, instructions=None):
"""Sends a message to the model and returns its response
Args:
message (str): The message to send
message_history (list): Optional list of previous messages in the format
[{'role': 'user'|'assistant', 'content': 'message'}, ...]
context (dict): Optional context to pass to the model
instructions (str): Optional system instructions
Returns:
str: The model's response or error message
"""
self.ensure_one()
# Initialize messages list with history if provided
messages = []
if message_history:
messages.extend(message_history)
# Add the current message
messages.append({'role': 'user', 'content': message})
data = {
'model': self.identifier,
'messages': [{'role': 'user', 'content': message}],
'messages': messages,
}
if context: