以编程方式使用文档

要在 LangSmith 上部署,应用必须由一个或多个图、一个配置文件 (langgraph.json)、一个指定依赖项的文件,以及一个可选的 .env 文件,用于指定环境变量。

本页面介绍 LangSmith 应用的组织方式以及如何提供部署所需的配置详情。

核心概念

要使用 LangSmith 进行部署,请提供以下信息:

  1. A 配置文件 (langgraph.json) 用于指定应用所需的依赖项、图和环境变量。
  2. 包含 实现应用逻辑的
  3. 指定 依赖项 的文件,用于运行应用所需的
  4. 环境变量 是应用运行所必需的。

文件结构

以下是 Python 和 JavaScript 应用目录结构的示例:

Python (requirements.txt)

    my-app/
    ├── my_agent # all project code lies within here
    │   ├── utils # utilities for your graph
    │   │   ├── __init__.py
    │   │   ├── tools.py # tools for your graph
    │   │   ├── nodes.py # node functions for your graph
    │   │   └── state.py # state definition of your graph
    │   ├── __init__.py
    │   └── agent.py # code for constructing your graph
    ├── .env # environment variables
    ├── requirements.txt # package dependencies
    └── langgraph.json # configuration file for LangGraph
    

Python (pyproject.toml)

    my-app/
    ├── my_agent # all project code lies within here
    │   ├── utils # utilities for your graph
    │   │   ├── __init__.py
    │   │   ├── tools.py # tools for your graph
    │   │   ├── nodes.py # node functions for your graph
    │   │   └── state.py # state definition of your graph
    │   ├── __init__.py
    │   └── agent.py # code for constructing your graph
    ├── .env # environment variables
    ├── langgraph.json  # configuration file for LangGraph
    └── pyproject.toml # dependencies for your project
    

JS (package.json)

    my-app/
    ├── src # all project code lies within here
    │   ├── utils # optional utilities for your graph
    │   │   ├── tools.ts # tools for your graph
    │   │   ├── nodes.ts # node functions for your graph
    │   │   └── state.ts # state definition of your graph
    │   └── agent.ts # code for constructing your graph
    ├── package.json # package dependencies
    ├── .env # environment variables
    └── langgraph.json # configuration file for LangGraph
    

<a id="configuration-file-concepts"></a> ## 配置文件

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

有关 JSON 文件中所有支持的键的详细信息,请参阅 LangGraph 配置文件参考.

示例

Python

  • * 依赖项涉及一个自定义本地包和 langchain_openai package.
  • * 将从文件 ./your_package/your_file.py 加载一个图,并使用变量 agent.
  • * 环境变量从 .env file.
    {
        "dependencies": [
            "langchain_openai",
            "./your_package"
        ],
        "graphs": {
            "my_agent": "./your_package/your_file.py:agent"
        },
        "env": "./.env"
    }
    

JavaScript

  • * 加载依赖项将从本地目录中的依赖项文件加载(例如, package.json).
  • * 将从文件 ./your_package/your_file.js 加载一个图,并使用函数 agent.
  • * 环境变量 OPENAI_API_KEY 是内联设置的。
    {
        "dependencies": [
            "."
        ],
        "graphs": {
            "my_agent": "./your_package/your_file.js:agent"
        },
        "env": {
            "OPENAI_API_KEY": "secret-key"
        }
    }
    

依赖项

应用可能依赖其他 Python 包或 JavaScript 库(取决于编写应用所使用的编程语言)。

通常需要指定以下信息才能正确设置依赖项:

  1. 目录中指定依赖项的文件(例如, requirements.txt, pyproject.toml, or package.json).
  2. A dependencies 中的 配置文件 中的键,用于指定运行应用所需的依赖项。
  3. 可以使用以下方式指定任何其他二进制文件或系统库 dockerfile_lines 中的 LangGraph 配置文件.

使用 graphs 中的 配置文件 来指定部署应用程序中可用的图。

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

将任何框架与 LangSmith Deployment 结合使用

虽然 LangSmith Deployment 要求应用程序结构化为 LangGraph 图,但该图中的各个节点可以包含任意代码。这意味着您可以在节点内使用任何框架或库,同时仍能受益于 LangSmith 的部署基础设施。

图结构作为部署接口,但您的核心应用逻辑可以使用最适合您需求的工具和框架。

要使用 LangSmith 部署,您需要:

Python

  1. **LangGraph 图结构**:使用 StateGraphadd_nodeadd_edge.
  2. **具有任意逻辑的节点函数**:您的节点函数可以调用任何框架或库。
  3. **编译后的图**:编译 图以创建可部署的应用程序。

以下示例展示如何将现有应用逻辑包装在最小的 LangGraph 结构中:

  from langgraph.graph import StateGraph, START, END
  from typing import TypedDict

  # Your existing application logic using any framework
  from app_logic import process_data
  from app_logic import fetch_data

  class State(TypedDict):
      input: str
      result: str

  def my_app_node(state: State) -> State:
      """Node containing arbitrary framework code."""
      # Use any framework or library here
      raw_data = fetch_data(state["input"])
      processed = process_data(raw_data)
      return {"result": processed}

  # Define the graph structure
  graph = StateGraph(State)
  graph.add_node("process", my_app_node)  # Add node with your logic
  graph.add_edge(START, "process")  # Connect start to your node
  graph.add_edge("process", END)  # Connect your node to end

  # Compile for deployment
  app = graph.compile()
  

JavaScript

  1. **LangGraph 图结构**:使用 StateGraphaddNodeaddEdge.
  2. **具有任意逻辑的节点函数**:您的节点函数可以调用任何框架或库。
  3. **编译后的图**: 编译 图以创建可部署的应用程序。

以下示例展示如何将现有应用逻辑包装在最小的 LangGraph 结构中:

  // Your existing application logic using any framework



  const State = Annotation.Root({
    input: Annotation<string>,
    result: Annotation<string>
  });

  async function myAppNode(state: typeof State.State) {
    // Use any framework or library here
    const rawData = await fetchData(state.input);
    const processed = await processData(rawData);
    return { result: processed };
  }

  // Define the graph structure
  const graph = new StateGraph(State)
    .addNode("process", myAppNode)  // Add node with your logic
    .addEdge(START, "process")  // Connect start to your node
    .addEdge("process", END);  // Connect your node to end

  // Compile for deployment

  

在此示例中,节点函数(my_app_node 用于 Python 和 myAppNode 用于 JavaScript)可以包含对任何框架或库的调用。LangGraph 结构仅提供部署接口和编排层。

环境变量

如果您使用已部署的 LangGraph 应用程序 在本地,您可以在 env配置文件中配置环境变量.

对于生产部署,通常需要在部署环境中配置环境变量。