Pass session IDs via providerOptions.observ.sessionId:
import { generateText } from "ai";// Group related calls with a session IDconst result = await generateText({ model, // Your wrapped model prompt: "Explain React hooks", providerOptions: { observ: { sessionId: "conversation_abc123", }, },});// All calls with the same sessionId will be grouped// in your Observ dashboard for easy tracking
// Group related calls with a session IDconst sessionId = "conversation_abc123";// First messageconst response1 = await wrappedClient.messages .withSessionId(sessionId) .create({ model: "claude-sonnet-4-20250514", max_tokens: 1024, messages: [{ role: "user", content: "What is TypeScript?" }], });// Follow-up in the same sessionconst response2 = await wrappedClient.messages .withSessionId(sessionId) .create({ model: "claude-sonnet-4-20250514", max_tokens: 1024, messages: [ { role: "user", content: "What is TypeScript?" }, { role: "assistant", content: response1.content[0].text }, { role: "user", content: "How does it compare to JavaScript?" }, ], });
# Group related calls with a session IDsession_id = "conversation_abc123"# First messageresponse1 = wrapped_client.messages.with_session_id(session_id).create( model="claude-sonnet-4-20250514", max_tokens=1024, messages=[{"role": "user", "content": "What is Python?"}],)# Follow-up in the same sessionresponse2 = wrapped_client.messages.with_session_id(session_id).create( model="claude-sonnet-4-20250514", max_tokens=1024, messages=[ {"role": "user", "content": "What is Python?"}, {"role": "assistant", "content": response1.content[0].text}, {"role": "user", "content": "How does it compare to JavaScript?"}, ],)
Use the same session ID across all calls in a conversation thread. Generate unique IDs per conversation (e.g., UUIDs, user IDs + timestamp).
// Good - consistent ID per conversationconst sessionId = `user_${userId}_${timestamp}`;// Bad - random ID per callconst sessionId = Math.random().toString();
Include context in session IDs
Make session IDs meaningful for easier debugging:
// Good - includes contextconst sessionId = `support_chat_user123_20240108`;// Bad - opaque IDconst sessionId = "abc123";
Clean up old sessions
Session IDs are just strings - they don’t consume resources. However, for privacy, you may want to rotate them periodically.