Spaces:
Running
Running
| 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 | |
| ) |