Skip to main content

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