File size: 915 Bytes
29b313e
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
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
    )