快速开始

本快速开始指南将帮助你在几分钟内从简单的设置到构建一个功能完整的 AI 智能体。

LangChain Docs MCP 服务器

如果你使用 AI 编码助手或 IDE(如 Claude Code 或 Cursor),建议安装 LangChain Docs MCP 服务器以获得最佳体验。这可以确保你的智能体能够访问最新的 LangChain 文档和示例。

前提条件

在运行这些示例之前,你需要:

虽然这些示例使用 Claude,但你可以通过更改代码中的模型名称并设置相应的 API 密钥来使用任何支持的模型

构建基础智能体

首先创建一个可以回答问题和调用工具的简单智能体。该智能体将使用 Claude Sonnet 4.5 作为语言模型,一个基本的天气函数作为工具,以及一个简单的提示词来引导其行为。

import { createAgent, tool } from "langchain";
import * as z from "zod";

const getWeather = tool(
  (input) => `${input.city}总是阳光明媚!`,
  {
    name: "get_weather",
    description: "获取指定城市的天气",
    schema: z.object({
      city: z.string().describe("要查询天气的城市"),
    }),
  }
);

const agent = createAgent({
  model: "claude-sonnet-4-5-20250929",
  tools: [getWeather],
});

console.log(
  await agent.invoke({
    messages: [{ role: "user", content: "东京的天气怎么样?" }],
  })
);

要了解如何使用 LangSmith 跟踪你的智能体,请参阅 LangSmith 文档

构建实际应用智能体

接下来,构建一个实用的天气预报智能体,演示关键的生产概念:

  1. 详细的系统提示词 - 用于改善智能体行为
  2. 创建工具 - 与外部数据集成
  3. 模型配置 - 确保一致的响应
  4. 结构化输出 - 获得可预测的结果
  5. 对话记忆 - 实现类聊天的交互
  6. 创建和运行智能体 - 构建功能完整的智能体

让我们逐步讲解每个步骤:

步骤 1:定义系统提示词

系统提示词定义了智能体的角色和行为。保持其具体且可操作:

const systemPrompt = `你是一位喜欢说双关语的天气预报专家。

你可以使用两个工具:

- get_weather_for_location:用于获取特定位置的天气
- get_user_location:用于获取用户的位置

如果用户询问天气,请确保你知道位置。如果从问题中可以看出他们指的是自己所在的地方,请使用 get_user_location 工具来获取他们的位置。`;

步骤 2:创建工具

工具是智能体可以调用的函数。通常工具需要连接到外部系统,并依赖运行时配置来实现。注意这里 getUserLocation 工具就是这样做的:

import { tool, type ToolRuntime } from "langchain";
import * as z from "zod";

const getWeather = tool(
  (input) => `${input.city}总是阳光明媚!`,
  {
    name: "get_weather_for_location",
    description: "获取指定城市的天气",
    schema: z.object({
      city: z.string().describe("要查询天气的城市"),
    }),
  }
);

type AgentRuntime = ToolRuntime<unknown, { user_id: string }>;

const getUserLocation = tool(
  (_, config: AgentRuntime) => {
    const { user_id } = config.context;
    return user_id === "1" ? "佛罗里达" : "旧金山";
  },
  {
    name: "get_user_location",
    description: "根据用户 ID 获取用户信息",
  }
);

Zod 是一个用于验证和解析预定义模式的库。你可以用它来定义工具的输入模式,确保智能体只使用正确的参数调用工具。

或者,你可以将 schema 属性定义为 JSON schema 对象。请注意,JSON schema 不会在运行时进行验证。

示例:使用 JSON schema 定义工具输入
const getWeather = tool(
  ({ city }) => `${city}总是阳光明媚!`,
  {
    name: "get_weather_for_location",
    description: "获取指定城市的天气",
    schema: {
      type: "object",
      properties: {
        city: {
          type: "string",
          description: "要查询天气的城市"
        }
      },
      required: ["city"]
    },
  }
);

步骤 3:配置模型

为你的用例设置合适的语言模型参数:

import { initChatModel } from "langchain";

const model = await initChatModel(
  "claude-sonnet-4-5-20250929",
  { temperature: 0.5, timeout: 10, maxTokens: 1000 }
);

步骤 4:添加结构化输出

使用 结构化输出 获得一致、可预测的结果:

import * as z from "zod";

const responseSchema = z.object({
  location: z.string().describe("天气预报的位置"),
  forecast: z.string().describe("天气预报摘要"),
  temperature: z.number().describe("摄氏温度"),
  conditions: z.string().describe("天气状况(如晴天、多云等)"),
});

步骤 5:添加对话记忆

启用短期记忆以保持对话历史:

import { MemorySaver } from "@langchain/langgraph";

const checkpointer = new MemorySaver();

步骤 6:创建并运行智能体

将所有组件组合成一个功能完整的智能体:

import { createAgent } from "langchain";

const agent = createAgent({
  model,
  tools: [getWeather, getUserLocation],
  prompt: systemPrompt,
  responseFormat: responseSchema,
  checkpointer,
  contextSchema: z.object({
    user_id: z.string(),
  }),
});

// 运行智能体
const result = await agent.invoke(
  {
    messages: [{ role: "user", content: "我这里的天气怎么样?" }],
  },
  {
    context: { user_id: "1" },
    configurable: { thread_id: "conversation-1" },
  }
);

console.log(result);

下一步

现在你已经构建了第一个智能体,以下是一些探索方向: