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

# 应用结构

一个 LangGraph 应用由一个或多个图、一个配置文件 (`langgraph.json`)、一个指定依赖项的文件以及一个可选的用于指定环境变量的 `.env` 文件组成。

本指南展示了一个应用的典型结构，并向您展示如何提供所需的配置以使用 [LangSmith 部署](/langsmith/deployment) 来部署应用。

<Info>
  LangSmith 部署是一个用于部署和扩展 LangGraph 代理的托管托管平台。它处理基础设施、扩展和运维问题，因此您可以直接从代码库部署有状态的、长时间运行的代理。在[部署文档](/langsmith/deployment)中了解更多。
</Info>

## 核心概念

要使用 LangSmith 进行部署，应提供以下信息：

1. 一个 [LangGraph 配置文件](#configuration-file-concepts) (`langgraph.json`)，用于指定应用的依赖项、图和环境变量。
2. 实现应用逻辑的[图](#graphs)。
3. 一个指定运行应用所需[依赖项](#dependencies)的文件。
4. 应用运行所需的[环境变量](#environment-variables)。

## 文件结构

以下是应用的目录结构示例：

```plaintext theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
my-app/
├── src # 所有项目代码都在这里
│   ├── utils # 图的可选实用工具
│   │   ├── tools.ts # 图的工具
│   │   ├── nodes.ts # 图的节点函数
│   │   └── state.ts # 图的状态定义
│   └── agent.ts # 构建图的代码
├── package.json # 包依赖项
├── .env # 环境变量
└── langgraph.json # LangGraph 的配置文件
```

<Note>
  LangGraph 应用的目录结构可能因使用的编程语言和包管理器而异。
</Note>

<a id="configuration-file-concepts" />

## 配置文件

`langgraph.json` 文件是一个 JSON 文件，用于指定部署 LangGraph 应用所需的依赖项、图、环境变量和其他设置。

有关 JSON 文件中所有支持的键的详细信息，请参阅 [LangGraph 配置文件参考](/langsmith/cli#configuration-file)。

<Tip>
  [LangGraph CLI](/langsmith/cli) 默认使用当前目录中的配置文件 `langgraph.json`。
</Tip>

### 示例

* 依赖项将从本地目录中的依赖文件（例如 `package.json`）加载。
* 一个单独的图将从文件 `./your_package/your_file.js` 加载，函数名为 `agent`。
* 环境变量 `OPENAI_API_KEY` 内联设置。

```json theme={"theme":{"light":"catppuccin-latte","dark":"catppuccin-mocha"}}
{
  "dependencies": ["."],
  "graphs": {
    "my_agent": "./your_package/your_file.js:agent"
  },
  "env": {
    "OPENAI_API_KEY": "secret-key"
  }
}
```

## 依赖项

LangGraph 应用可能依赖于其他 TypeScript/JavaScript 库。

通常，您需要指定以下信息以正确设置依赖项：

1. 目录中指定依赖项的文件（例如 `package.json`）。
2. [LangGraph 配置文件](#configuration-file-concepts)中的 `dependencies` 键，用于指定运行 LangGraph 应用所需的依赖项。
3. 任何额外的二进制文件或系统库可以在 [LangGraph 配置文件](#configuration-file-concepts)中使用 `dockerfile_lines` 键指定。

## 图

使用 [LangGraph 配置文件](#configuration-file-concepts)中的 `graphs` 键来指定哪些图将在部署的 LangGraph 应用中可用。

您可以在配置文件中指定一个或多个图。每个图由一个名称（应唯一）和一个路径标识，该路径指向：(1) 编译后的图，或 (2) 定义图的函数。

## 环境变量

如果您在本地处理部署的 LangGraph 应用，可以在 [LangGraph 配置文件](#configuration-file-concepts)的 `env` 键中配置环境变量。

对于生产部署，您通常希望在部署环境中配置环境变量。

***

<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/langgraph/application-structure.mdx) 或 [提交问题](https://github.com/langchain-ai/docs/issues/new/choose)。
  </Callout>
</div>
