Convo
扫码查看

为LLM应用设计的记忆与观测工具

Convo

综合介绍

Convo是一个为基于大语言模型(LLM)的应用提供记忆与可观测性功能的软件开发工具包(SDK)。它的核心设计目标是简化AI代理(agent)的开发流程,特别是解决在实现持久化记忆功能时遇到的复杂性。传统方法通常需要开发者自己搭建和管理数据库(如Postgres或Mongo)来存储对话历史,这个过程不仅繁琐,而且容易在生产环境中出错。Convo通过提供一个即插即用的SDK,让开发者仅需一行代码即可替代标准的LangGraph检查点(checkpointer)功能,从而为AI应用添加长期记忆、对话日志、调试和个性化响应的能力。该工具采用TypeScript优先的策略,原生支持多用户会话管理和状态追踪,并提供“时间旅行”调试功能,让开发者可以轻松回溯和检查AI代理在任意时间点的状态,整个过程无需配置和维护任何数据库。

功能列表

  • 一键式集成: 只需一行代码即可替换LangGraph中的检查点(checkpointer),轻松为AI代理添加持久化记忆功能。
  • 无需数据库: 内置了完整的持久化解决方案,开发者无需自行设置、管理和维护任何数据库。
  • 对话记忆与日志: 自动捕获和记录每一次AI与用户的交互,为应用提供完整的对话历史。
  • 时间旅行调试: 允许开发者检查和回溯AI代理在任何时间点的状态,极大地简化了调试过程。
  • TypeScript优先: 提供一流的TypeScript支持,确保代码的类型安全和健壮性。
  • 多用户线程: 开箱即用地支持多用户对话管理,能够安全地处理并发会话。
  • 个性化响应: 通过提取长期记忆,帮助LLM应用根据历史对话生成更加个性化和智能的回复。

使用帮助

Convo旨在最大程度地简化为AI应用添加复杂记忆功能的过程。如果你正在使用LangChain的LangGraph库来构建AI代理,你会发现Convo的使用方法非常直接。

为什么需要Convo?

在构建能够进行多轮对话的AI代理时,一个核心挑战是如何让代理“记住”之前的交互。LangGraph为此提供了“检查点”(Checkpointer)机制,它负责在对话的每一步保存和恢复代理的状态。然而,标准的检查点实现方案通常需要连接到一个外部数据库,例如PostgreSQL或MongoDB。

这意味着开发者除了要编写核心的AI逻辑外,还必须处理:

  1. 数据库设置:选择、安装、配置数据库服务。
  2. 数据模式管理:设计表结构,并随着应用迭代进行迁移。
  3. 连接管理:处理数据库连接池,确保生产环境的稳定。
  4. 运维负担:监控、备份和扩展数据库。

这个过程非常耗时,并且会引入许多与AI功能无关的技术复杂性。Convo的设计初衷正是为了消除这些负担。

安装

Convo是一个NPM包,你可以使用任何Node.js包管理器(如npm或yarn)来将其添加到你的TypeScript或JavaScript项目中。打开你的项目终端,运行以下命令:

npm install convo

或者使用yarn:

yarn add convo

安装完成后,你就可以在项目代码中引入并使用Convo了。

核心用法:替换LangGraph检查点

Convo最核心的功能就是作为LangGraph的检查点后端。它的使用方式是“即插即用”的,你几乎不需要更改现有的LangGraph流程代码。

假设你已经有了一个使用LangGraph构建的图(Graph),并且正在配置它的StateGraph。在配置检查点时,你不再需要提供数据库连接信息,而是直接使用convo.checkpointer()

下面是一个典型的LangGraph配置示例,展示了如何用Convo替换标准的检查点:

  1. 首先,在你的代码中导入Convo:
    import { convo } from 'convo';
    import { StateGraph, END } from '@langchain/langgraph';
    // ... (此处省略你的AI代理状态定义和其他逻辑)
    
  2. 定义你的代理状态和图:
    interface AgentState {
    messages: any[];
    // ... 其他状态
    }
    const graphBuilder = new StateGraph<AgentState>({
    channels: {
    messages: {
    value: (x: any[], y: any[]) => x.concat(y),
    default: () => [],
    },
    },
    });
    // ... (此处省略添加节点和边的逻辑)
    
  3. 在编译图时传入Convo检查点:这是最关键的一步。在调用.compile()方法时,将checkpointer参数设置为convo.checkpointer()
    const app = graphBuilder.compile({
    // 使用Convo作为检查点
    checkpointer: convo.checkpointer(), 
    });
    

就这样,你的AI应用现在已经具备了持久化记忆能力。所有通过这个app实例处理的对话,其状态都会被Convo自动记录和管理,无需任何数据库配置。

如何实现多用户对话?

Convo原生支持多用户场景。在使用LangGraph的invokestream方法时,你需要通过configurable参数来区分不同的对话线程。通常,你会为每个独立的用户或会话分配一个唯一的ID。

async function runConversation(userId: string, input: string) {
const threadId = `user_${userId}`; // 为每个用户创建一个唯一的线程ID
const result = await app.invoke(
{ messages: [input] },
{
configurable: {
// 将线程ID传递给配置
thread_id: threadId, 
},
}
);
console.log(result);
}

通过为每个用户指定不同的thread_id,Convo就能够在后台为他们分别维护独立的对话历史和状态。这使得构建个性化的、能够记住特定用户偏好和历史的AI机器人变得异常简单。

应用场景

  1. 个性化AI客服在一个电商或服务网站中,AI客服机器人可以使用Convo来记住每个用户的购买历史、偏好和过往问题。当用户再次提问时,机器人可以利用这些长期记忆提供更加贴心和高效的解答,而无需用户重复背景信息。
  2. 多步骤任务AI代理对于需要执行复杂任务(如预订旅行、规划项目)的AI代理,任务可能会分多步、甚至跨越多天完成。Convo可以保存每一步的状态,即使用户关闭了浏览器或应用,下次回来时AI代理也能从上次中断的地方继续,确保任务流程的连贯性。
  3. 教育和培训机器人在学习场景中,AI导师可以使用Convo来追踪每个学生的学习进度、已掌握的知识点和薄弱环节。基于这些记忆,AI导师可以动态调整教学内容和练习难度,实现真正的个性化教育。
  4. 开发者工具与AI编程助手AI编程助手可以利用Convo记住开发者在项目中的编码习惯、常用的代码库和项目上下文。当开发者提问或请求代码生成时,助手可以提供更符合当前项目风格和规范的建议,就像一个有经验的结对编程伙伴。

QA

  1. Convo是免费的吗?网站上没有明确的定价信息,但它提供了一个可以直接安装的SDK。通常这类面向开发者的工具会提供免费套餐或试用期,具体收费策略建议关注其官方渠道。
  2. Convo支持Python吗?当前公开的信息和示例都强调其“TypeScript优先”,主要展示了在Node.js环境下的使用方法。虽然LangGraph本身是Python和JS双支持的库,但Convo的SDK目前似乎主要集中在TypeScript/JavaScript生态。
  3. 使用Convo是否会影响AI的响应速度?Convo替代的是数据库检查点,其自身性能会影响状态保存和读取的速度。它的设计目标是“No ops”,即免运维,通常这类云服务会进行性能优化,对于大多数对话应用场景来说,其延迟应该是可以接受的。相比于自行部署和优化数据库,使用专门优化的服务可能性能更佳。
  4. 我的对话数据存储在哪里?安全吗?由于Convo是一个托管服务(因为它无需用户自己部署数据库),你的对话数据将被存储在Convo的云端基础设施上。对于开发者来说,选择此类服务前应仔细评估其数据隐私和安全政策。
微信微博Email复制链接