LangChain TS 适配器
让 LangChain Agent 支持 AG-UI 协议。
什么是 AG-UI?
AG-UI 是一个开放、轻量级、基于事件的协议,用于标准化 AI Agent 与用户界面的交互。它让 Agent 可以:
- 实时流式对话
- 双向状态同步
- 前端工具集成(Client Tools)
- 人机协作(Human-in-the-loop)
这个包解决什么问题?
- 让 LangChain Agent 支持 AG-UI 协议:将 LangChain 的
createAgent()创建的 Agent 适配为 AG-UI 兼容的 Agent - 客户端工具支持:提供
clientTools()中间件,让前端可以动态注入工具到 Agent 调用中
配合使用
| 包名 | 作用 |
|---|---|
@cloudbase/agent-server | 将 Agent 部署为 AG-UI 兼容的 HTTP 服务 |
langchain | LangChain Agent 框架 |
@langchain/openai | OpenAI 兼容模型接入 |
@langchain/langgraph | Agent 会话记忆(MemorySaver) |
架构图
安装
pnpm add @cloudbase/agent-adapter-langchain @cloudbase/agent-server langchain @langchain/openai @langchain/langgraph
快速开始
1. 创建 LangChain Agent
// agent.ts
import { createAgent as createLangchainAgent } from "langchain";
import { MemorySaver } from "@langchain/langgraph";
import { ChatOpenAI } from "@langchain/openai";
import { clientTools } from "@cloudbase/agent-adapter-langchain";
const checkpointer = new MemorySaver();
export function createAgent() {
// 配置模型
const model = new ChatOpenAI({
model: process.env.OPENAI_MODEL!,
apiKey: process.env.OPENAI_API_KEY!,
configuration: {
baseURL: process.env.OPENAI_BASE_URL!,
},
});
// 创建 Agent,使用 clientTools 中间件支持客户端工具
return createLangchainAgent({
model,
checkpointer,
middleware: [clientTools()],
});
}
2. 包装并部署为 HTTP 服务
// index.ts
import { createExpressRoutes } from "@cloudbase/agent-server";
import { LangchainAgent } from "@cloudbase/agent-adapter-langchain";
import { createAgent as createLangchainAgent } from "./agent.js";
import express from "express";
function createAgent() {
const lcAgent = createLangchainAgent();
return {
agent: new LangchainAgent({
agent: lcAgent,
}),
};
}
const app = express();
createExpressRoutes({
createAgent,
express: app,
});
app.listen(9000, () => console.log("Listening on 9000!"));
3. 配置环境变量
创建 .env 文件:
OPENAI_API_KEY=your-deepseek-api-key
OPENAI_BASE_URL=https://api.deepseek.com/v1
OPENAI_MODEL=deepseek-chat
4. 启动服务
npx tsx src/index.ts
完整的项目配置(tsconfig.json、package.json 等)请参考 示例项目。
API 参考
LangchainAgent
将 LangChain Agent 包装为 AG-UI 兼容的 Agent,使其可以通过 @cloudbase/agent-server 部署。
import { LangchainAgent } from "@cloudbase/agent-adapter-langchain";
const agent = new LangchainAgent({
agent: lcAgent, // createAgent() 返回的 LangChain Agent
});
构造参数:
| 参数 | 类型 | 说明 |
|---|---|---|
agent | ReturnType<typeof createAgent> | LangChain 的 createAgent() 返回值 |
clientTools()
创建一个中间件,允许客户端动态注入工具到 Agent 调用中。
import { clientTools } from "@cloudbase/agent-adapter-langchain";
const agent = createAgent({
model,
checkpointer,
middleware: [clientTools()],
});
用途:
- 让前端客户端可以定义工具,并在调用时动态传递给 Agent
- Agent 会将客户端工具与服务端工具合并使用