What are Sessions?
Sessions track each user’s conversation history and context. They’re:
- User-specific - Each user has separate sessions
- Domain-specific - Different domains = different sessions
- Automatic - Created and managed automatically
- Persistent - Saved to database
Automatic Session Management
Sessions are created automatically:
from langchat import LangChat
from langchat.llm import OpenAI
from langchat.vector_db import Pinecone
from langchat.database import Supabase
llm = OpenAI(api_key="sk-...", model="gpt-4o-mini")
vector_db = Pinecone(api_key="...", index_name="...")
db = Supabase(url="https://...", key="...")
ai = LangChat(llm=llm, vector_db=vector_db, db=db)
# First chat creates session automatically
result = await ai.chat(
query="Hello!",
user_id="user123",
domain="default"
)
Conversation History
LangChat remembers previous messages:
# First message
result1 = await ai.chat(
query="What universities offer computer science?",
user_id="user123"
)
# Second message (remembers context)
result2 = await ai.chat(
query="What about in Europe?",
user_id="user123"
)
# AI knows "What about in Europe?" refers to CS programs
Accessing Sessions
Get session information:
# Get session
session = ai.engine.get_session(user_id="user123", domain="default")
# Access history
print(session.chat_history) # List of (query, response) tuples
print(session.domain) # "default"
print(session.user_id) # "user123"
Multi-Domain Sessions
Separate sessions for different domains:
# Education domain
result1 = await ai.chat(
query="What universities offer CS?",
user_id="user123",
domain="education"
)
# Travel domain (separate history)
result2 = await ai.chat(
query="What are good travel destinations?",
user_id="user123",
domain="travel"
)
Each domain maintains separate chat history. Messages in one domain don’t affect another.
History Limits
Control how much history to keep:
ai = LangChat(
llm=llm,
vector_db=vector_db,
db=db,
max_chat_history=50 # Keep last 50 messages
)
Recommendations:
- Short conversations:
max_chat_history=10
- Normal use:
max_chat_history=20 (default)
- Long conversations:
max_chat_history=50
Best Practices
1. Use Consistent User IDs
# ✅ Good: Stable user ID
user_id = "user_12345"
# ❌ Bad: Random IDs
user_id = str(uuid.uuid4()) # Creates new session each time
2. Choose Appropriate Domains
# Separate contexts
domain = "education" # For education queries
domain = "travel" # For travel queries
domain = "support" # For support queries
3. Monitor History Size
session = ai.engine.get_session("user123", "default")
print(f"History length: {len(session.chat_history)}")
Troubleshooting
History Not Persisting
Check database configuration:
db = Supabase(
url="https://...", # Verify URL
key="..." # Verify key
)
Context Lost Between Messages
Ensure same user_id and domain:
# ✅ Same session
await ai.chat(query="Q1", user_id="user123", domain="default")
await ai.chat(query="Q2", user_id="user123", domain="default")
# ❌ Different sessions
await ai.chat(query="Q1", user_id="user123", domain="default")
await ai.chat(query="Q2", user_id="user456", domain="default") # Different user
Next Steps
Built with ❤️ by NeuroBrain