> ## Documentation Index
> Fetch the complete documentation index at: https://nvd-54.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# 快速开始

> 几分钟内构建你的第一个 Deep Agent

本指南将引导你使用规划、文件系统工具和子 Agent 功能来创建你的第一个 Deep Agent。你将构建一个能够进行研究并撰写报告的研究 Agent。

<Tip>
  **正在使用 AI 编程助手？**

  * 安装 [LangChain 文档 MCP 服务器](/use-these-docs)，让你的 Agent 能够访问最新的 LangChain 文档和示例。
  * 安装 [LangChain Skills](https://github.com/langchain-ai/langchain-skills)，提升你的 Agent 在 LangChain 生态系统任务上的表现。
</Tip>

## 前置条件

开始之前，请确保你有一个模型提供商的 API 密钥（例如 Gemini、Anthropic、OpenAI）。

<Note>
  Deep Agents 需要支持[工具调用](/oss/javascript/langchain/models#tool-calling)的模型。参阅[自定义配置](/oss/javascript/deepagents/customization#model)了解如何配置你的模型。
</Note>

## 步骤 1：安装依赖

<CodeGroup>
  ```bash npm theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
  npm install deepagents langchain @langchain/core @langchain/tavily
  ```

  ```bash yarn theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
  yarn add deepagents langchain @langchain/core @langchain/tavily
  ```

  ```bash pnpm theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
  pnpm add deepagents langchain @langchain/core @langchain/tavily
  ```
</CodeGroup>

<Note>
  本指南使用 [Tavily](https://tavily.com/) 作为示例搜索提供商，但你可以替换为任何搜索 API（例如 DuckDuckGo、SerpAPI、Brave Search）。
</Note>

## 步骤 2：设置 API 密钥

<Tabs>
  <Tab title="Google">
    ```bash theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
    export GOOGLE_API_KEY="your-api-key"
    export TAVILY_API_KEY="your-tavily-api-key"
    ```
  </Tab>

  <Tab title="OpenAI">
    ```bash theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
    export OPENAI_API_KEY="your-api-key"
    export TAVILY_API_KEY="your-tavily-api-key"
    ```
  </Tab>

  <Tab title="Anthropic">
    ```bash theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
    export ANTHROPIC_API_KEY="your-api-key"
    export TAVILY_API_KEY="your-tavily-api-key"
    ```
  </Tab>

  <Tab title="OpenRouter">
    ```bash theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
    export OPENROUTER_API_KEY="your-api-key"
    export TAVILY_API_KEY="your-tavily-api-key"
    ```
  </Tab>

  <Tab title="Fireworks">
    ```bash theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
    export FIREWORKS_API_KEY="your-api-key"
    export TAVILY_API_KEY="your-tavily-api-key"
    ```
  </Tab>

  <Tab title="Baseten">
    ```bash theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
    export BASETEN_API_KEY="your-api-key"
    export TAVILY_API_KEY="your-tavily-api-key"
    ```
  </Tab>

  <Tab title="Ollama">
    ```bash theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
    # 本地运行：Ollama 必须在你的机器上运行
    # 云端运行：设置你的 Ollama API 密钥用于托管推理
    export OLLAMA_API_KEY="your-api-key"
    export TAVILY_API_KEY="your-tavily-api-key"
    ```
  </Tab>

  <Tab title="其他">
    ```bash theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
    # 设置你的提供商的 API 密钥
    export <PROVIDER>_API_KEY="your-api-key"
    export TAVILY_API_KEY="your-tavily-api-key"
    ```

    Deep Agents 可与任何 [LangChain Chat Model](/oss/javascript/deepagents/models#supported-models) 配合使用。请设置你的提供商对应的 API 密钥。
  </Tab>
</Tabs>

## 步骤 3：创建搜索工具

```ts theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
import { tool } from "langchain";
import { TavilySearch } from "@langchain/tavily";
import { z } from "zod";

const internetSearch = tool(
  async ({
    query,
    maxResults = 5,
    topic = "general",
    includeRawContent = false,
  }: {
    query: string;
    maxResults?: number;
    topic?: "general" | "news" | "finance";
    includeRawContent?: boolean;
  }) => {
    const tavilySearch = new TavilySearch({
      maxResults,
      tavilyApiKey: process.env.TAVILY_API_KEY,
      includeRawContent,
      topic,
    });
    return await tavilySearch._call({ query });
  },
  {
    name: "internet_search",
    description: "Run a web search",
    schema: z.object({
      query: z.string().describe("The search query"),
      maxResults: z
        .number()
        .optional()
        .default(5)
        .describe("Maximum number of results to return"),
      topic: z
        .enum(["general", "news", "finance"])
        .optional()
        .default("general")
        .describe("Search topic category"),
      includeRawContent: z
        .boolean()
        .optional()
        .default(false)
        .describe("Whether to include raw content"),
    }),
  },
);
```

## 步骤 4：创建 Deep Agent

传入 `provider:model` 格式的 `model` 字符串，或一个[已初始化的模型实例](/oss/javascript/deepagents/models#configure-model-parameters)。所有提供商请参阅[支持的模型](/oss/javascript/deepagents/models#supported-models)，经过测试的推荐请参阅[推荐模型](/oss/javascript/deepagents/models#suggested-models)。

<CodeGroup>
  ```ts Google theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
  import { createDeepAgent } from "deepagents";

  // 通过 system prompt 引导 Agent 成为专业研究员
  const researchInstructions = `You are an expert researcher. Your job is to conduct thorough research and then write a polished report.

  You have access to an internet search tool as your primary means of gathering information.

  ## \`internet_search\`

  Use this to run an internet search for a given query. You can specify the max number of results to return, the topic, and whether raw content should be included.
  `;

  const agent = createDeepAgent({
    model: "google-genai:gemini-3.1-pro-preview",
    tools: [internetSearch],
    systemPrompt: researchInstructions,
  });
  ```

  ```ts OpenAI theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
  import { createDeepAgent } from "deepagents";

  // 通过 system prompt 引导 Agent 成为专业研究员
  const researchInstructions = `You are an expert researcher. Your job is to conduct thorough research and then write a polished report.

  You have access to an internet search tool as your primary means of gathering information.

  ## \`internet_search\`

  Use this to run an internet search for a given query. You can specify the max number of results to return, the topic, and whether raw content should be included.
  `;

  const agent = createDeepAgent({
    model: "openai:gpt-5.4",
    tools: [internetSearch],
    systemPrompt: researchInstructions,
  });
  ```

  ```ts Anthropic theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
  import { createDeepAgent } from "deepagents";

  // 通过 system prompt 引导 Agent 成为专业研究员
  const researchInstructions = `You are an expert researcher. Your job is to conduct thorough research and then write a polished report.

  You have access to an internet search tool as your primary means of gathering information.

  ## \`internet_search\`

  Use this to run an internet search for a given query. You can specify the max number of results to return, the topic, and whether raw content should be included.
  `;

  const agent = createDeepAgent({
    model: "anthropic:claude-sonnet-4-6",
    tools: [internetSearch],
    systemPrompt: researchInstructions,
  });
  ```

  ```ts OpenRouter theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
  import { createDeepAgent } from "deepagents";

  // 通过 system prompt 引导 Agent 成为专业研究员
  const researchInstructions = `You are an expert researcher. Your job is to conduct thorough research and then write a polished report.

  You have access to an internet search tool as your primary means of gathering information.

  ## \`internet_search\`

  Use this to run an internet search for a given query. You can specify the max number of results to return, the topic, and whether raw content should be included.
  `;

  const agent = createDeepAgent({
    model: "openrouter:anthropic/claude-sonnet-4-6",
    tools: [internetSearch],
    systemPrompt: researchInstructions,
  });
  ```

  ```ts Fireworks theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
  import { createDeepAgent } from "deepagents";

  // 通过 system prompt 引导 Agent 成为专业研究员
  const researchInstructions = `You are an expert researcher. Your job is to conduct thorough research and then write a polished report.

  You have access to an internet search tool as your primary means of gathering information.

  ## \`internet_search\`

  Use this to run an internet search for a given query. You can specify the max number of results to return, the topic, and whether raw content should be included.
  `;

  const agent = createDeepAgent({
    model: "fireworks:accounts/fireworks/models/qwen3p5-397b-a17b",
    tools: [internetSearch],
    systemPrompt: researchInstructions,
  });
  ```

  ```ts Baseten theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
  import { createDeepAgent } from "deepagents";

  // 通过 system prompt 引导 Agent 成为专业研究员
  const researchInstructions = `You are an expert researcher. Your job is to conduct thorough research and then write a polished report.

  You have access to an internet search tool as your primary means of gathering information.

  ## \`internet_search\`

  Use this to run an internet search for a given query. You can specify the max number of results to return, the topic, and whether raw content should be included.
  `;

  const agent = createDeepAgent({
    model: "baseten:zai-org/GLM-5",
    tools: [internetSearch],
    systemPrompt: researchInstructions,
  });
  ```

  ```ts Ollama theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
  import { createDeepAgent } from "deepagents";

  // 通过 system prompt 引导 Agent 成为专业研究员
  const researchInstructions = `You are an expert researcher. Your job is to conduct thorough research and then write a polished report.

  You have access to an internet search tool as your primary means of gathering information.

  ## \`internet_search\`

  Use this to run an internet search for a given query. You can specify the max number of results to return, the topic, and whether raw content should be included.
  `;

  const agent = createDeepAgent({
    model: "ollama:devstral-2",
    tools: [internetSearch],
    systemPrompt: researchInstructions,
  });
  ```
</CodeGroup>

## 步骤 5：运行 Agent

```ts theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
const result = await agent.invoke({
  messages: [{ role: "user", content: "What is langgraph?" }],
});

// 打印 Agent 的响应
console.log(result.messages[result.messages.length - 1].content);
```

<Tip>
  使用 [LangSmith](https://smith.langchain.com?utm_source=docs\&utm_medium=cta\&utm_campaign=langsmith-signup\&utm_content=oss-deepagents-quickstart) 追踪你的 Agent 的规划步骤、工具调用和子 Agent 委托。按照[可观测性快速开始](/langsmith/observability-quickstart)进行设置。
</Tip>

## 它是如何工作的？

你的 Deep Agent 会自动执行以下操作：

1. **规划方法**，使用内置的 [`write_todos`](/oss/javascript/deepagents/harness#planning-capabilities) 工具将研究任务分解。
2. **进行研究**，通过调用 `internet_search` 工具收集信息。
3. **管理上下文**，使用文件系统工具（[`write_file`](/oss/javascript/deepagents/harness#virtual-filesystem-access)、[`read_file`](/oss/javascript/deepagents/harness#virtual-filesystem-access)）来卸载大型搜索结果。
4. **生成子 Agent**，根据需要将复杂子任务委托给专门的子 Agent。
5. **合成报告**，将研究发现整合为连贯的响应。

## 示例

有关使用 Deep Agents 构建的 Agent、模式和应用，请参阅[示例](https://github.com/langchain-ai/deepagents/tree/main/examples)。

## Streaming

Deep Agents 内置了 [Streaming](/oss/javascript/langchain/event-streaming) 功能，可以使用 LangGraph 从 Agent 执行中获取实时更新。
这让你可以渐进式地观察输出，并审查和调试 Agent 及子 Agent 的工作，例如工具调用、工具结果和 LLM 响应。

## 后续步骤

现在你已经构建了第一个 Deep Agent：

* **自定义你的 Agent**：了解[自定义选项](/oss/javascript/deepagents/customization)，包括自定义系统提示词、工具和子 Agent。
* **添加长期记忆**：启用跨对话的[持久化记忆](/oss/javascript/deepagents/memory)。
* **部署到生产环境**：使用[托管 Deep Agents](/langsmith/deploy-managed-deep-agent) 在 LangSmith 中创建、运行和管理 Deep Agents。

***

<div className="source-links">
  <Callout icon="terminal-2">
    [将这些文档连接](/use-these-docs)到 Claude、VSCode 等工具，通过 MCP 获取实时答案。
  </Callout>

  <Callout icon="edit">
    [在 GitHub 上编辑此页面](https://github.com/langchain-ai/docs/edit/main/src/oss/deepagents/quickstart.mdx)或[提交 issue](https://github.com/langchain-ai/docs/issues/new/choose)。
  </Callout>
</div>
