# @cloudbase/agent-adapter-langchain

将 LangChain Agent 转换为符合 [AG-UI 协议](https://docs.ag-ui.com) 的 Agent。

## 功能

- **LangchainAgent**：将 LangChain 的 `createAgent()` 创建的 Agent 包装为 AG-UI 兼容的 Agent
- **clientTools()**：中间件，让客户端可以动态注入工具到 Agent 调用中

## 安装

```bash
npm install @cloudbase/agent-adapter-langchain
```

## 快速开始

```typescript
import { run } from "@cloudbase/agent-server";
import { createAgent as createLangchainAgent } from "langchain";
import { MemorySaver } from "@langchain/langgraph";
import { ChatOpenAI } from "@langchain/openai";
import { LangchainAgent, clientTools } from "@cloudbase/agent-adapter-langchain";

const checkpointer = new MemorySaver();

const model = new ChatOpenAI({
  model: process.env.OPENAI_MODEL!,
  apiKey: process.env.OPENAI_API_KEY!,
  configuration: {
    baseURL: process.env.OPENAI_BASE_URL,
  },
});

// 创建 LangChain Agent，使用 clientTools 中间件支持客户端工具
const lcAgent = createLangchainAgent({
  model,
  checkpointer,
  middleware: [clientTools()],
});

// 部署为 HTTP 服务
run({
  createAgent: () => ({
    agent: new LangchainAgent({ agent: lcAgent }),
  }),
  port: 9000,
});
```

## API 参考

### LangchainAgent

将 LangChain Agent 包装为 AG-UI 兼容的 Agent。

```typescript
type LangchainAgentConfig = AgentConfig & {
  agent: ReturnType<typeof createAgent>; // LangChain 的 createAgent() 返回值
  logger?: Logger;                        // 可选，日志实例
};

const agent = new LangchainAgent(config);
```

- `AgentConfig`：来自 [AG-UI 协议](https://docs.ag-ui.com)
- `Logger`：日志接口，详见 [@cloudbase/agent-server 文档](https://www.npmjs.com/package/@cloudbase/agent-server)

### clientTools()

创建一个中间件，让客户端可以动态注入工具到 Agent 调用中。

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

客户端定义的工具会与服务端工具合并使用。

## 依赖

- `langchain`：LangChain Agent 框架
- `@langchain/langgraph`：Agent 会话记忆（MemorySaver）
- `@langchain/openai`：OpenAI 兼容模型接入

## 文档

📚 完整文档请参阅 [云开发 Agent 开发指南](https://docs.cloudbase.net/ai/agent-development/)

## 相关资源

- [AG-UI 协议](https://docs.ag-ui.com)
- [LangChain 官方文档](https://js.langchain.com/)

