跳转到主要内容

概述

LangchainAgent 将 AG-Kit 与 LangChain 的 createAgent 运行时桥接起来。它在底层复用了 LanggraphAgent 事件模型(compiledWorkflow = agent),因此它流式传输相同的 BaseEvent 类型,并与 @ag-kit/server 无缝协作。 主要功能:
  • 封装通过 createAgent 创建的 LangChain agent
  • 流式传输 AG-UI 兼容的事件(文本块、工具调用、结果)
  • 通过 agKitClientTools 中间件将客户端提供的工具添加到模型调用中

安装

pnpm add @ag-kit/agents @ag-kit/adapter-langchain langchain @langchain/openai @langchain/langgraph

导出

所有导出都可从 @ag-kit/adapter-langchain 获得: 导出:
  • LangchainAgent – LangChain 集成的主要 agent 类
  • agKitClientTools – 将客户端工具注入 LangChain 模型调用的中间件
  • convert2LangChain – 将 AG‑Kit BaseTool 转换为 LangChain DynamicStructuredTool
  • convertLangChain2AGKit – 将 LangChain StructuredTool 转换为 AG‑Kit Dynamic Tool

快速开始

import { createAgent as createLangchainAgent } from "langchain";
import { MemorySaver } from "@langchain/langgraph";
import { ChatOpenAI } from "@langchain/openai";
import { LangchainAgent, agKitClientTools } from "@ag-kit/adapter-langchain";

const checkpointer = new MemorySaver();

// 1) 创建 LangChain agent
const lcAgent = createLangchainAgent({
  model: new ChatOpenAI({
    model: process.env.OPENAI_MODEL!,
    apiKey: process.env.OPENAI_API_KEY!,
    configuration: { baseURL: process.env.OPENAI_BASE_URL! },
  }),
  checkpointer,
  middleware: [agKitClientTools()],
});

// 2) 使用 AG‑Kit agent 封装
export const agent = new LangchainAgent({
  agent: lcAgent,
  name: "agentic-chat-agent",
  description: "A helpful AI assistant",
});

服务器集成

import { run } from "@ag-kit/server";
import { agent } from "./agent";

run({ createAgent: () => ({ agent }) });

在 LangChain 中使用 AG‑Kit 工具

agKitClientTools 使客户端提供的工具可供底层 LangChain 模型调用(request.tools)使用。任何传递给 agent.run(…) 的工具都将作为 DynamicStructuredTool 定义附加。
import { agKitClientTools } from "@ag-kit/adapter-langchain";
import { createAgent as createLangchainAgent } from "langchain";

const agent = createLangchainAgent({
  model, checkpointer, middleware: [agKitClientTools()],
});

API

class LangchainAgent

new LangchainAgent(config: AgentConfig & {
  agent: ReturnType<typeof createAgent>;
})
name
string
必填
Agent 的唯一标识符。
description
string
Agent 的人类可读描述。
agent
ReturnType<typeof createAgent>
必填
createAgent 返回的 LangChain agent 实例。它作为 compiledWorkflow 传递给基础 LanggraphAgent

方法

run()
run(input: RunAgentInput): Observable<BaseEvent>
执行底层工作流并从 @ag-ui/client 发出 BaseEvent 值。
  • input – 包含 messages、runId、threadId、tools 等的 RunAgentInput
  • returns – Observable<BaseEvent>
注意:事件类型和语义与 LanggraphAgent 相同。有关完整事件列表,请参阅 LangGraph Agent。

agKitClientTools()

agKitClientTools(): Middleware
purpose
string
state.agKit.actions 中客户端提供的工具添加到 LangChain 的 request.tools 中用于模型调用。

工具转换助手

convert2LangChain(agkitTool: BaseTool, impl?: (tool: BaseTool) => Function): DynamicStructuredTool
convertLangChain2AGKit(langchainTool: StructuredTool): DynamicTool
  • convert2LangChain – 封装 AG‑Kit 工具以便与 LangChain 一起使用
  • convertLangChain2AGKit – 封装 LangChain 工具以便与 AG‑Kit 一起使用

另请参阅