mirror of
https://github.com/arc53/DocsGPT.git
synced 2025-11-29 08:33:20 +00:00
(feat:limit conv history) add util method
This commit is contained in:
@@ -18,7 +18,7 @@ from application.error import bad_request
|
||||
from application.extensions import api
|
||||
from application.llm.llm_creator import LLMCreator
|
||||
from application.retriever.retriever_creator import RetrieverCreator
|
||||
from application.utils import check_required_fields
|
||||
from application.utils import check_required_fields, limit_chat_history
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
@@ -324,8 +324,7 @@ class Stream(Resource):
|
||||
|
||||
try:
|
||||
question = data["question"]
|
||||
history = str(data.get("history", []))
|
||||
history = str(json.loads(history))
|
||||
history = str(limit_chat_history(json.loads(data.get("history", []))))
|
||||
conversation_id = data.get("conversation_id")
|
||||
prompt_id = data.get("prompt_id", "default")
|
||||
|
||||
|
||||
@@ -46,3 +46,17 @@ def check_required_fields(data, required_fields):
|
||||
def get_hash(data):
|
||||
return hashlib.md5(data.encode()).hexdigest()
|
||||
|
||||
def limit_chat_history(history,max_token_limit = 500):
|
||||
|
||||
cumulative_token_count = 0
|
||||
trimmed_history = []
|
||||
|
||||
for i in reversed(history):
|
||||
|
||||
if("prompt" in i and "response" in i):
|
||||
cumulative_token_count += num_tokens_from_string(i["prompt"] + i["response"])
|
||||
if(cumulative_token_count > max_token_limit):
|
||||
break
|
||||
trimmed_history.insert(0,i)
|
||||
|
||||
return trimmed_history
|
||||
Reference in New Issue
Block a user