datn-fastapi / chatbot /utils /chat_history.py
truglpk3's picture
.
29b313e
raw
history blame contribute delete
915 Bytes
from langchain_core.messages import trim_messages, BaseMessage
import tiktoken
enc = tiktoken.get_encoding("cl100k_base")
def custom_token_counter(messages: list[BaseMessage]) -> int:
text_content = ""
for msg in messages:
if isinstance(msg.content, str):
text_content += msg.content
elif isinstance(msg.content, list):
for part in msg.content:
if isinstance(part, str):
text_content += part
elif isinstance(part, dict) and 'text' in part:
text_content += part['text']
return len(enc.encode(text_content))
def get_chat_history(messages, max_tokens=1000):
return trim_messages(
messages,
max_tokens=max_tokens,
strategy="last",
token_counter=custom_token_counter,
include_system=True,
start_on="human",
allow_partial=False
)