Las conversaciones permiten mantener contexto entre mensajes. El SDK gestiona conversationId automaticamente, o puedes controlarlo manualmente.
Auto-tracking
Por defecto, el SDK trackea la conversacion activa automaticamente:
// Primer mensaje — se crea una conversacion nueva
const stream1 = thaliq.agent.stream('Hola, necesito ayuda');
for await (const event of stream1) { /* ... */ }
// El conversationId se guarda automaticamente
console.log(stream1.conversationId); // 'abc-123-...'
Conversaciones manuales
Crea y gestiona conversaciones explicitamente:
// Crear una nueva conversacion
const conv = thaliq.conversations.create();
// Primer mensaje
const stream1 = thaliq.agent.stream('Hola', {
conversationId: conv.id,
});
const response1 = await stream1.finalResponse();
// Segundo mensaje (misma conversacion, mantiene contexto)
const stream2 = thaliq.agent.stream('Dame mas detalles', {
conversationId: conv.id,
});
const response2 = await stream2.finalResponse();
ConversationManager
El SDK expone thaliq.conversations para gestionar conversaciones:
// Crear nueva conversacion
const conv = thaliq.conversations.create();
console.log(conv.id); // UUID generado
console.log(conv.createdAt); // Date
// Ver conversacion activa
console.log(thaliq.conversations.active); // ConversationRef | null
// Cambiar conversacion activa
thaliq.conversations.setActive(conv.id);
// Historial de conversaciones (esta sesion)
console.log(thaliq.conversations.history); // ConversationRef[]
// Limpiar historial
thaliq.conversations.clear();
Nueva conversacion vs continuacion
| Escenario | Comportamiento |
|---|
stream('Hola') sin conversationId | Crea conversacion nueva |
stream('Hola', { conversationId: 'xxx' }) | Continua conversacion existente |
Despues de thaliq.reset() | Limpia conversacion activa |
Session timeout
Las conversaciones tienen un session timeout configurable por agente (default: 30 minutos). Si la ultima interaccion fue hace mas de 30 minutos, el backend crea una conversacion nueva automaticamente.
Persistencia
Las conversaciones se persisten en el backend con TTL segun tu plan:
| Plan | Retencion |
|---|
| Starter | 7 dias |
| Growth | 30 dias |
| Enterprise | 90+ dias |
El ConversationManager del SDK solo trackea conversaciones en memoria (de la sesion actual). Los datos se persisten en el backend automaticamente.
Feedback en conversaciones
Puedes enviar feedback sobre mensajes individuales dentro de una conversacion:
const stream = thaliq.agent.stream('Analiza mis datos', {
conversationId: 'conv-123',
});
const response = await stream.finalResponse();
// El messageId viene en la metadata
if (response.metadata.messageId) {
await thaliq.agent.feedback({
conversationId: 'conv-123',
messageId: response.metadata.messageId,
feedback: 'positive',
});
}
Ver Feedback e Insights para mas detalles.