Node.js + LangChain.js 整合 DeepSeek LLM、自建 REST 服务,设计一个自定义 Agent,最后通过MCP对外发布并调用

在这里插入图片描述
下面内容将带你从零开始,用 Node.js + LangChain.js 整合 DeepSeek LLM、你自建的 REST 服务,设计一个自定义 Agent,最后通过 Model Context Protocol (MCP) 对外发布并调用。全文分为六大步骤,每步都配有示例代码和关键文档链接,帮助你理清整体逻辑。

简要总结:

  • 环境准备:初始化 Node 项目并安装 DeepSeek 与 LangChain.js 依赖 (Your First API Call | DeepSeek API Docs, npm)
  • DeepSeek 接入:配置 API Key,使用 @langchain/deepseek 包创建 ChatDeepSeek 实例 (npm)
  • 自定义 Agent:基于 LangChain.js 扩展 LLM 类,并用 PromptTemplate + OutputParser 构建 Agent (🦜️🔗 Langchain, 🦜️🔗 Langchain)
  • 工具调用:在 Agent 中封装对你自建 REST API 的调用逻辑,无缝插入对话流
  • MCP 集成:了解 MCP 规范,安装 LangChain.js MCP 适配器,与 MCP 服务器建立连接 (Home, GitHub)
  • 服务发布与调用:用 Express/HTTP 暴露 Agent,演示 MCP 格式请求与多 Agent 系统接入 (www.marcnuri.com)

1. 环境准备

1.1 初始化 Node.js 项目

在项目根目录执行 npm init -y 创建 package.json

1.2 安装关键依赖

  • 深寻 DeepSeek API:@langchain/deepseek (npm)
  • LangChain.js:langchain
  • MCP 适配器:langchainjs-mcp-adapters (GitHub)
npm install langchain @langchain/deepseek langchainjs-mcp-adapters express axios

2. DeepSeek LLM 接入

2.1 配置 API Key

在环境变量中设置:

export DEEPSEEK_API_KEY="your_deepseek_api_key"

2.2 创建 ChatDeepSeek 实例

DeepSeek 的 API 与 OpenAI 接口兼容,LangChain.js 提供了专用包装器: (Your First API Call | DeepSeek API Docs, npm)

// src/deepseekClient.js
import { ChatDeepSeek } from "@langchain/deepseek";
import { HumanMessage } from "langchain/schema";

export const deepseek = new ChatDeepSeek({
  apiKey: process.env.DEEPSEEK_API_KEY,
  model: "deepseek-v3",
});

export async function callDeepseek(prompt) {
  const response = await deepseek.call([new HumanMessage(prompt)]);
  return response.text;
}

3. 自定义 Agent 设计

3.1 扩展自定义 LLM 类

参考 LangChain.js 的指南,创建一个可插入你自身逻辑的 LLM Wrapper (🦜️🔗 Langchain)

// src/customLLM.js
import { LLM } from "langchain/llms/base";

export class MyDeepseekLLM extends LLM {
  _llmType() { return "deepseek"; }
  async _call(prompt) {
    // 复用 callDeepseek 工具
    const { callDeepseek } = await import("./deepseekClient");
    return await callDeepseek(prompt);
  }
}

3.2 构建 Chat Agent

在 LangChain.js 中,基于聊天模型的 Agent 需要四要素:PromptTemplate、LLM、stop 序列、OutputParser (🦜️🔗 Langchain)

// src/myAgent.js
import { ChatAgent } from "langchain/agents";
import { PromptTemplate } from "langchain/prompts";
import { MyDeepseekLLM } from "./customLLM";

const promptTemplate = new PromptTemplate({
  template: "任务:{goal}\n对话历史:{history}\n助手:",
  inputVariables: ["goal", "history"],
});

export const myAgent = new ChatAgent({
  llm: new MyDeepseekLLM(),
  prompt: promptTemplate,
  stop: ["\n"],
  outputParser: // 可选,自定义解析工具调用指令 :contentReference[oaicite:10]{index=10}
});

3.3 插入工具调用

利用 LangChain.js 的 Tool 概念,在 Agent 中注册一个调用你自建 REST 服务的工具(Tool):

// src/tools/weatherTool.js
import axios from "axios";

export const weatherTool = {
  name: "weather",
  description: "获取指定城市的天气",
  func: async (city) => {
    const res = await axios.get(`http://localhost:8000/weather?city=${city}`);
    return res.data.weather;
  },
};

在 Agent 运行时,将工具列表注入:

myAgent.addTools([weatherTool]);

4. MCP 协议与集成

4.1 认识 Model Context Protocol

MCP 是 Anthropic 提出的开放标准,用于在 LLM 客户端与服务器之间传递结构化上下文,支持双向工具调用 (Home)。你可以在官方仓库查看规范: (GitHub)

4.2 安装 LangChain.js MCP 适配器

社区提供了适配器,可让 LangChain.js 应用像 MCP 客户端一样与服务器通信 (GitHub)

npm install langchainjs-mcp-adapters

4.3 创建 MCP 客户端

使用 MCPStdIOMCPSSE 传输实现,与 MCP 服务器建立连接: (www.marcnuri.com)

// src/mcpClient.js
import { MCPStdIO } from "langchainjs-mcp-adapters";

export const mcpClient = new MCPStdIO({
  command: "node path/to/mcp-server.js",
  args: [],
});

5. 服务发布与调用

5.1 用 Express 暴露 Agent 服务

将上面逻辑封装到 HTTP POST 接口 /mcp/agent,接收 MCP 格式 JSON 并返回:

// src/server.js
import express from "express";
import { myAgent } from "./myAgent";
import { mcpClient } from "./mcpClient";

const app = express();
app.use(express.json());

app.post("/mcp/agent", async (req, res) => {
  const mcpContext = req.body;
  // 直接通过 mcpClient 转发给 Agent
  const reply = await mcpClient.callAgent(myAgent, mcpContext);
  res.json(reply);
});

app.listen(5000, () => console.log("MCP Agent running on :5000"));

5.2 测试调用示例

使用 curl 模拟 MCP 请求:

curl -X POST http://localhost:5000/mcp/agent \
  -H "Content-Type: application/json" \
  -d '{
    "goal":"获取北京天气并回复",
    "agents":[{"name":"MyAgent","role":"天气助手","state":"waiting","history":[{"from":"user","content":"北京天气怎样"}]}],
    "toolsUsed":[]
  }'

6. 在多 Agent 系统中接入

将你的 Agent 服务 URL 注册到主控进程(如 AutoGen 或其他 MCP 管理器),即可与其他 Agents 并行协作,公共上下文通过 MCP 协议实时同步。


至此,你已完整搭建了:

  1. DeepSeek LLM 驱动的自定义 Agent
  2. LangChain.js 中的工具调用能力
  3. MCP 协议 的客户端适配与服务发布

后续可扩展记忆模块、更多工具、异步任务队列等,进一步提升 Agent 智能与稳定性。


在AI时代,随着AI技术的迅猛发展,各种出行助手应用如雨后春笋,受限于大模型的数据孤岛、能力边界限制,始终未能发挥其在应用层面落地价值。 MCP的出现统一了大模型与外部数据、工具间的通讯协议。而在出行服务领域,数据的时效性、工具的便捷性尤为重要,高德MCP Server旨在为大模型在出行领域的应用落地高效赋能。
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

GISer_Jinger

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值