跳到主要内容

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 服务
langchainLangChain Agent 框架
@langchain/openaiOpenAI 兼容模型接入
@langchain/langgraphAgent 会话记忆(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
});

构造参数:

参数类型说明
agentReturnType<typeof createAgent>LangChain 的 createAgent() 返回值

clientTools()

创建一个中间件,允许客户端动态注入工具到 Agent 调用中。

import { clientTools } from "@cloudbase/agent-adapter-langchain";

const agent = createAgent({
model,
checkpointer,
middleware: [clientTools()],
});

用途:

  • 让前端客户端可以定义工具,并在调用时动态传递给 Agent
  • Agent 会将客户端工具与服务端工具合并使用

相关资源