@@ -63,6 +63,7 @@ class Claude(SimpleService): version = f'anthropic/{input_message.info.pop("version", "claude-3.7-sonnet:thinking")}' callback_data = {'provider': {'order': ['Anthropic']}, **input_message.info} messages = self.get_chat_history() + messages.append({'role': 'user', 'content': input_message.content}) image = input_message.file if image: kind = filetype.guess(image.read(20)) @@ -89,13 +90,13 @@ class Claude(SimpleService): msgs = self.save_results(result[0], process_time) return msgs - def get_chat_history(self, message_limit: int = 10, max_character_limit: int = 1500): + def get_chat_history(self, message_limit: int = 10, max_character_limit: int = 1500) -> list[dict[str, str | list]]: if isinstance(self.store, Chat): air_messages = list( reversed( Message.objects.filter( chats_chats_messages=self.store, is_deleted=False, is_sent=True - ).order_by('-created_at')[:message_limit] + ).order_by('-created_at')[1:message_limit + 1] ) ) elif isinstance(self.store, APIStore): @@ -119,7 +120,6 @@ class Claude(SimpleService): memory.append({'role': 'user', 'content': content}) character_length = sum(len(content['content']) for content in memory) while character_length > max_character_limit: - memory.pop(0) - character_length = sum(len(content['content']) for content in memory) + character_length -= len(memory.pop(0)['content']) return memory @@ -48,6 +48,7 @@ class Deepseek(SimpleService): **input_message.info, } messages = self.get_chat_history() + messages.append({'role': 'user', 'content': input_message.content}) start_time = time.time() result = openrouter_run(version, messages, callback_data, 'Deepseek') process_time = timedelta(seconds=(time.time() - start_time)) @@ -60,13 +61,13 @@ class Deepseek(SimpleService): msgs = self.save_results(result[0], process_time) return msgs - def get_chat_history(self, message_limit: int = 10, max_character_limit: int = 1500): + def get_chat_history(self, message_limit: int = 10, max_character_limit: int = 1500) -> list[dict[str, str | list]]: if isinstance(self.store, Chat): air_messages = list( reversed( Message.objects.filter( chats_chats_messages=self.store, is_deleted=False, is_sent=True - ).order_by('-created_at')[:message_limit] + ).order_by('-created_at')[1:message_limit + 1] ) ) elif isinstance(self.store, APIStore): @@ -90,5 +91,5 @@ class Deepseek(SimpleService): memory.append({'role': 'user', 'content': content}) character_length = sum(len(content['content']) for content in memory) while character_length > max_character_limit: - character_length -= len(memory.pop(0)) + character_length -= len(memory.pop(0)['content']) return memory @@ -59,6 +59,7 @@ class Grok(SimpleService): version = f'x-ai/{input_message.info.pop("version", "grok-2-vision-1212")}' callback_data = {**input_message.info} messages = self.get_chat_history() + messages.append({'role': 'user', 'content': input_message.content}) image = input_message.file if image: kind = filetype.guess(image.read(20)) @@ -85,13 +86,13 @@ class Grok(SimpleService): msgs = self.save_results(result[0], process_time) return msgs - def get_chat_history(self, message_limit: int = 10, max_character_limit: int = 1500) -> list[Dict]: + def get_chat_history(self, message_limit: int = 10, max_character_limit: int = 1500) -> list[dict[str, str | list]]: if isinstance(self.store, Chat): air_messages = list( reversed( Message.objects.filter( chats_chats_messages=self.store, is_deleted=False, is_sent=True - ).order_by('-created_at')[:message_limit] + ).order_by('-created_at')[1:message_limit + 1] ) ) elif isinstance(self.store, APIStore): @@ -115,7 +116,6 @@ class Grok(SimpleService): memory.append({'role': 'user', 'content': content}) character_length = sum(len(content['content']) for content in memory) while character_length > max_character_limit: - memory.pop(0) - character_length = sum(len(content['content']) for content in memory) + character_length -= len(memory.pop(0)['content']) return memory @@ -58,6 +58,7 @@ class Mistral(SimpleService): version = f'mistralai/{info.pop("version")}' callback_data = {'provider': {'order': ['Parasail']}, **input_message.info} messages = self.get_chat_history() + messages.append({'role': 'user', 'content': input_message.content}) image = input_message.file if image: kind = filetype.guess(image.read(20)) @@ -85,13 +86,13 @@ class Mistral(SimpleService): msgs = self.save_results(result[0], process_time) return msgs - def get_chat_history(self, message_limit: int = 10, max_character_limit: int = 1500): + def get_chat_history(self, message_limit: int = 10, max_character_limit: int = 1500) -> list[dict[str, str | list]]: if isinstance(self.store, Chat): air_messages = list( reversed( Message.objects.filter( chats_chats_messages=self.store, is_deleted=False, is_sent=True - ).order_by('-created_at')[:message_limit] + ).order_by('-created_at')[1:message_limit + 1] ) ) elif isinstance(self.store, APIStore): @@ -115,5 +116,5 @@ class Mistral(SimpleService): memory.append({'role': 'user', 'content': content}) character_length = sum(len(content['content']) for content in memory) while character_length > max_character_limit: - character_length -= len(memory.pop(0)) + character_length -= len(memory.pop(0)['content']) return memory @@ -45,6 +45,7 @@ class Perplexity(SimpleService): version = f'perplexity/{input_message.info.pop("version", "sonar")}' callback_data = {'provider': {'order': ['Perplexity']}, **input_message.info} messages = self.get_chat_history() + messages.append({'role': 'user', 'content': input_message.content}) result = openrouter_run(version, messages, callback_data, 'Perplexity') process_time = timedelta(seconds=(time.time() - start_time)) self.handle_invoice( @@ -56,13 +57,13 @@ class Perplexity(SimpleService): msgs = self.save_results(result[0], process_time) return msgs - def get_chat_history(self, message_limit: int = 10, max_character_limit: int = 1500) -> list[Dict]: + def get_chat_history(self, message_limit: int = 10, max_character_limit: int = 1500) -> list[dict[str, str | list]]: if isinstance(self.store, Chat): air_messages = list( reversed( Message.objects.filter( chats_chats_messages=self.store, is_deleted=False, is_sent=True - ).order_by('-created_at')[:message_limit] + ).order_by('-created_at')[1:message_limit + 1] ) ) elif isinstance(self.store, APIStore): @@ -86,7 +87,6 @@ class Perplexity(SimpleService): memory.append({'role': 'user', 'content': content}) character_length = sum(len(content['content']) for content in memory) while character_length > max_character_limit: - memory.pop(0) - character_length = sum(len(content['content']) for content in memory) + character_length -= len(memory.pop(0)['content']) - return memory + return memory \ No newline at end of file @@ -46,6 +46,7 @@ class Qwen(SimpleService): version = f'qwen/{input_message.info.pop("version", "qwq-32b")}' callback_data = {'provider': {'order': ['DeepInfra']}, **input_message.info} messages = self.get_chat_history() + messages.append({'role': 'user', 'content': input_message.content}) result = openrouter_run(version, messages, callback_data, 'Qwen') process_time = timedelta(seconds=(time.time() - start_time)) self.handle_invoice( @@ -57,13 +58,13 @@ class Qwen(SimpleService): msgs = self.save_results(result[0], process_time) return msgs - def get_chat_history(self, message_limit: int = 10, max_character_limit: int = 1500) -> list[Dict]: + def get_chat_history(self, message_limit: int = 10, max_character_limit: int = 1500) -> list[dict[str, str | list]]: if isinstance(self.store, Chat): air_messages = list( reversed( Message.objects.filter( chats_chats_messages=self.store, is_deleted=False, is_sent=True - ).order_by('-created_at')[:message_limit] + ).order_by('-created_at')[1:message_limit+1] ) ) elif isinstance(self.store, APIStore): @@ -87,7 +88,6 @@ class Qwen(SimpleService): memory.append({'role': 'user', 'content': content}) character_length = sum(len(content['content']) for content in memory) while character_length > max_character_limit: - memory.pop(0) - character_length = sum(len(content['content']) for content in memory) + character_length -= len(memory.pop(0)['content']) return memory