From 3929d289e00c7af390aef74c9750b0818033dc5c Mon Sep 17 00:00:00 2001 From: takatost Date: Thu, 6 Jun 2024 17:39:44 +0800 Subject: [PATCH] feat: set default memory messages limit to infinite (#5002) --- api/core/memory/token_buffer_memory.py | 15 +++++++++++---- .../model_providers/openai/llm/gpt-3.5-turbo.yaml | 2 +- api/core/prompt/prompt_transform.py | 6 +++--- 3 files changed, 15 insertions(+), 8 deletions(-) diff --git a/api/core/memory/token_buffer_memory.py b/api/core/memory/token_buffer_memory.py index 6b53104c70..4f4f5045f5 100644 --- a/api/core/memory/token_buffer_memory.py +++ b/api/core/memory/token_buffer_memory.py @@ -1,3 +1,5 @@ +from typing import Optional + from core.app.app_config.features.file_upload.manager import FileUploadConfigManager from core.file.message_file_parser import MessageFileParser from core.model_manager import ModelInstance @@ -19,7 +21,7 @@ class TokenBufferMemory: self.model_instance = model_instance def get_history_prompt_messages(self, max_token_limit: int = 2000, - message_limit: int = 10) -> list[PromptMessage]: + message_limit: Optional[int] = None) -> list[PromptMessage]: """ Get history prompt messages. :param max_token_limit: max token limit @@ -28,10 +30,15 @@ class TokenBufferMemory: app_record = self.conversation.app # fetch limited messages, and return reversed - messages = db.session.query(Message).filter( + query = db.session.query(Message).filter( Message.conversation_id == self.conversation.id, Message.answer != '' - ).order_by(Message.created_at.desc()).limit(message_limit).all() + ).order_by(Message.created_at.desc()) + + if message_limit and message_limit > 0: + messages = query.limit(message_limit).all() + else: + messages = query.all() messages = list(reversed(messages)) message_file_parser = MessageFileParser( @@ -93,7 +100,7 @@ class TokenBufferMemory: def get_history_prompt_text(self, human_prefix: str = "Human", ai_prefix: str = "Assistant", max_token_limit: int = 2000, - message_limit: int = 10) -> str: + message_limit: Optional[int] = None) -> str: """ Get history prompt text. :param human_prefix: human prefix diff --git a/api/core/model_runtime/model_providers/openai/llm/gpt-3.5-turbo.yaml b/api/core/model_runtime/model_providers/openai/llm/gpt-3.5-turbo.yaml index 4ffd31a814..d6338c3d19 100644 --- a/api/core/model_runtime/model_providers/openai/llm/gpt-3.5-turbo.yaml +++ b/api/core/model_runtime/model_providers/openai/llm/gpt-3.5-turbo.yaml @@ -9,7 +9,7 @@ features: - stream-tool-call model_properties: mode: chat - context_size: 4096 + context_size: 16385 parameter_rules: - name: temperature use_template: temperature diff --git a/api/core/prompt/prompt_transform.py b/api/core/prompt/prompt_transform.py index d8e2d2f76d..b86d3fa815 100644 --- a/api/core/prompt/prompt_transform.py +++ b/api/core/prompt/prompt_transform.py @@ -77,7 +77,7 @@ class PromptTransform: max_token_limit=max_token_limit, message_limit=memory_config.window.size if (memory_config.window.enabled - and memory_config.window.size is not None - and memory_config.window.size > 0) - else 10 + and memory_config.window.size is not None + and memory_config.window.size > 0) + else None )