fromunique_sdk.utilsimportchat_history# Load history for GPT-4o (128K context)full_history,selected_history=chat_history.load_history(userId=user_id,companyId=company_id,chatId=chat_id,maxTokens=128000,percentOfMaxTokens=0.15,# Use 15% of context for historymaxMessages=4)# Use selected_history in your completionmessages=[{"role":"system","content":"You are a helpful assistant."}]+selected_history+[{"role":"user","content":"What did we discuss earlier?"}]
How it works:
Filters out system messages (prefixed with [SYSTEM])
Removes the last 2 messages (usually the current exchange)
Selects the most recent messages that fit within token limits
Formats messages as {"role": "user"|"assistant", "content": "..."}
unique_sdk.utils.chat_history.convert_chat_history_to_injectable_string - Convert to prompt string
Converts chat history into a formatted string that can be injected into prompts.
Parameters:
history (required) - List of message dictionaries with role and content keys
Returns:
chatHistory - List of formatted strings
chatContextTokenLength - Token count of the formatted history
fromunique_sdk.utilsimportchat_historyhistory=[{"role":"user","content":"What is Python?"},{"role":"assistant","content":"Python is a programming language."},{"role":"user","content":"Tell me more."}]history_strings,token_count=chat_history.convert_chat_history_to_injectable_string(history)# history_strings will be:# [# "previous_question: What is Python?",# "previous_answer: Python is a programming language.",# "previous_question: Tell me more."# ]# Use in promptprompt=f"""Previous conversation:{chr(10).join(history_strings)}Current question: {user_question}"""
fromunique_sdk.utilsimportchat_historyimportunique_sdk# Load recent conversation_,recent_history=chat_history.load_history(userId=user_id,companyId=company_id,chatId=chat_id,maxTokens=8000,percentOfMaxTokens=0.2,maxMessages=6)# Search with contextsearch_results=unique_sdk.Search.create(user_id=user_id,company_id=company_id,chatId=chat_id,searchString="project updates",searchType="COMBINED")# Generate response with historycompletion=unique_sdk.ChatCompletion.create(user_id=user_id,company_id=company_id,model="AZURE_GPT_4o_2024_1120",messages=[{"role":"system","content":"Answer based on search results and conversation history."}]+recent_history+[{"role":"user","content":"What's the latest status?"}])
fromunique_sdk.utilsimportchat_history# Get full conversation historyfull_history,_=chat_history.load_history(userId=user_id,companyId=company_id,chatId=chat_id,maxTokens=128000,percentOfMaxTokens=1.0,# Get all historymaxMessages=100# Get many messages)# Convert to string for summarizationhistory_strings,token_count=chat_history.convert_chat_history_to_injectable_string(full_history)# Summarize conversationsummary_prompt=f"""Summarize this conversation:{chr(10).join(history_strings)}"""
# For large context models (128K+)_,history=chat_history.load_history(maxTokens=128000,percentOfMaxTokens=0.15,# ~19K tokens for historymaxMessages=10)# For smaller models (4K-8K)_,history=chat_history.load_history(maxTokens=4000,percentOfMaxTokens=0.2,# ~800 tokens for historymaxMessages=4# Fewer messages)
# For very long conversations, use smaller percentage_,recent_history=chat_history.load_history(userId=user_id,companyId=company_id,chatId=chat_id,maxTokens=8000,percentOfMaxTokens=0.1,# Only 10% for historymaxMessages=3# Just last few exchanges)