跳到主要内容

快速入门

通过加载模板流程、运行它,然后在 /run API 端点上提供服务,开始使用 Langflow。

前提条件

  • 安装并启动 Langflow

  • 创建 OpenAI API 密钥

  • 创建 Langflow API 密钥

    创建 Langflow API 密钥

    Langflow API 密钥是您可以与 Langflow 一起使用的用户特定令牌。

    要创建 Langflow API 密钥,请执行以下操作:

    1. 在 Langflow 中,点击您的用户图标,然后选择 设置

    2. 点击 Langflow API 密钥,然后点击 添加新

    3. 为您的密钥命名,然后点击 创建 API 密钥

    4. Replicate API 密钥并安全存储。

    5. 要在请求中使用您的 Langflow API 密钥,请在终端中设置 LANGFLOW_API_KEY 环境变量,然后在请求中包含一个 x-api-key 头部或查询参数。 例如:


      _13
      # 设置变量
      _13
      export LANGFLOW_API_KEY="sk..."
      _13
      _13
      # 发送请求
      _13
      curl --request POST \
      _13
      --url "http://LANGFLOW_SERVER_ADDRESS/api/v1/run/FLOW_ID" \
      _13
      --header "Content-Type: application/json" \
      _13
      --header "x-api-key: $LANGFLOW_API_KEY" \
      _13
      --data '{
      _13
      "output_type": "chat",
      _13
      "input_type": "chat",
      _13
      "input_value": "Hello"
      _13
      }'

运行简单代理模板流程

  1. 在 Langflow 中,点击 新建流程,然后选择 简单代理 模板。

简单代理模板

简单代理 模板由一个 代理 组件 连接到 聊天输入聊天输出 组件,一个 计算器 组件,和一个 URL 组件 组成。当您运行此流程时,您通过 聊天输入 组件向代理提交查询,代理使用 计算器URL 工具生成响应,然后通过 聊天输出 组件返回响应。

许多组件都可以作为代理的工具,包括 模型上下文协议 (MCP) 服务器。代理根据给定查询的上下文决定调用哪些工具。

  1. 代理 组件中,直接输入您的 OpenAI API 密钥,或点击 全局 来创建一个 全局变量

    本指南使用 OpenAI 模型进行演示。如果您想使用其他提供商,请更改 模型提供商模型名称 字段,然后为您选择的提供商提供凭据。

  2. 要运行流程,点击 游乐场

  3. 要测试 计算器 工具,向代理询问一个简单的数学问题,例如 我想把 4 和 4 相加。 为了帮助您测试和评估流程,游乐场 显示代理的推理过程,包括它分析提示、选择工具,然后使用工具生成响应。 在这种情况下,数学问题导致代理选择 计算器 工具并使用类似 evaluate_expression 的操作。

带代理工具的游乐场

  1. 要测试 URL 工具,向代理询问当前事件。 对于此请求,代理选择 URL 工具的 fetch_content 操作,然后返回当前新闻标题的摘要。

  2. 完成流程测试后,点击 关闭

下一步

既然您已经运行了第一个流程,请尝试以下下一步:

从外部应用程序运行您的流程

Langflow 是一个 IDE,但也是一个运行时,您可以通过 Langflow API 使用 Python、JavaScript 或 HTTP 调用它。

当您在本地启动 Langflow 时,可以向本地 Langflow 服务器发送请求。 对于生产应用程序,您需要部署一个稳定的 Langflow 实例来处理 API 调用。

例如,您可以使用 /run 端点运行流程并获取结果。

Langflow 提供代码片段帮助您开始使用 Langflow API。

  1. 编辑流程时,点击 Share,然后点击 API access

    API 访问面板中的默认代码会使用 Langflow 服务器的 urlheaders 和请求数据的 payload 构造请求。 代码片段会自动包含该流程的 LANGFLOW_SERVER_ADDRESSFLOW_ID 值,以及一个包含您 LANGFLOW_API_KEY 的脚本(如果您已在终端会话中将其设置为环境变量)。 如果您使用代码连接到不同的服务器或流程,请替换这些值。 默认的 Langflow 服务器地址是 http://localhost:7860


    _29
    import requests
    _29
    _29
    url = "http://LANGFLOW_SERVER_ADDRESS/api/v1/run/FLOW_ID" # 此流程的完整 API 端点 URL
    _29
    _29
    # 请求负载配置
    _29
    payload = {
    _29
    "output_type": "chat",
    _29
    "input_type": "chat",
    _29
    "input_value": "hello world!"
    _29
    }
    _29
    _29
    # 请求头
    _29
    headers = {
    _29
    "Content-Type": "application/json",
    _29
    "x-api-key": "$LANGFLOW_API_KEY"
    _29
    }
    _29
    _29
    try:
    _29
    # 发送 API 请求
    _29
    response = requests.request("POST", url, json=payload, headers=headers)
    _29
    response.raise_for_status() # 对错误状态码引发异常
    _29
    _29
    # 打印响应
    _29
    print(response.text)
    _29
    _29
    except requests.exceptions.RequestException as e:
    _29
    print(f"Error making API request: {e}")
    _29
    except ValueError as e:
    _29
    print(f"Error parsing response: {e}")

  2. Replicate代码片段,将其粘贴到脚本文件中,然后运行该脚本以发送请求。 如果您使用的是 curl 代码片段,可以直接在终端中运行该命令。

如果请求成功,响应将包含有关流程运行的许多详细信息,包括会话 ID、输入、输出、组件、持续时间等。 以下是运行 Simple Agent 模板流程的响应示例:

结果

_163
{
_163
"session_id": "29deb764-af3f-4d7d-94a0-47491ed241d6",
_163
"outputs": [
_163
{
_163
"inputs": {
_163
"input_value": "hello world!"
_163
},
_163
"outputs": [
_163
{
_163
"results": {
_163
"message": {
_163
"text_key": "text",
_163
"data": {
_163
"timestamp": "2025-06-16 19:58:23 UTC",
_163
"sender": "系统",
_163
"sender_name": "OpenAI",
_163
"session_id": "29deb764-af3f-4d7d-94a0-47491ed241d6",
_163
"text": "你好世界!🌍 今天有什么可以帮您的吗?",
_163
"files": [],
_163
"error": false,
_163
"edit": false,
_163
"properties": {
_163
"text_color": "",
_163
"background_color": "",
_163
"edited": false,
_163
"source": {
_163
"id": "Agent-ZOknz",
_163
"display_name": "代理",
_163
"source": "gpt-4o-mini"
_163
},
_163
"icon": "bot",
_163
"allow_markdown": false,
_163
"positive_feedback": null,
_163
"state": "complete",
_163
"targets": []
_163
},
_163
"category": "message",
_163
"content_blocks": [
_163
{
_163
"title": "代理步骤",
_163
"contents": [
_163
{
_163
"type": "text",
_163
"duration": 2,
_163
"header": {
_163
"title": "输入",
_163
"icon": "MessageSquare"
_163
},
_163
"text": "**输入**:hello world!"
_163
},
_163
{
_163
"type": "text",
_163
"duration": 226,
_163
"header": {
_163
"title": "输出",
_163
"icon": "MessageSquare"
_163
},
_163
"text": "你好世界!🌍 今天有什么可以帮您的吗?"
_163
}
_163
],
_163
"allow_markdown": true,
_163
"media_url": null
_163
}
_163
],
_163
"id": "f3d85d9a-261c-4325-b004-95a1bf5de7ca",
_163
"flow_id": "29deb764-af3f-4d7d-94a0-47491ed241d6",
_163
"duration": null
_163
},
_163
"default_value": "",
_163
"text": "你好世界!🌍 今天有什么可以帮您的吗?",
_163
"sender": "系统",
_163
"sender_name": "OpenAI",
_163
"files": [],
_163
"session_id": "29deb764-af3f-4d7d-94a0-47491ed241d6",
_163
"timestamp": "2025-06-16T19:58:23+00:00",
_163
"flow_id": "29deb764-af3f-4d7d-94a0-47491ed241d6",
_163
"error": false,
_163
"edit": false,
_163
"properties": {
_163
"text_color": "",
_163
"background_color": "",
_163
"edited": false,
_163
"source": {
_163
"id": "Agent-ZOknz",
_163
"display_name": "代理",
_163
"source": "gpt-4o-mini"
_163
},
_163
"icon": "bot",
_163
"allow_markdown": false,
_163
"positive_feedback": null,
_163
"state": "complete",
_163
"targets": []
_163
},
_163
"category": "message",
_163
"content_blocks": [
_163
{
_163
"title": "代理步骤",
_163
"contents": [
_163
{
_163
"type": "text",
_163
"duration": 2,
_163
"header": {
_163
"title": "输入",
_163
"icon": "MessageSquare"
_163
},
_163
"text": "**输入**:hello world!"
_163
},
_163
{
_163
"type": "text",
_163
"duration": 226,
_163
"header": {
_163
"title": "输出",
_163
"icon": "MessageSquare"
_163
},
_163
"text": "你好世界!🌍 今天有什么可以帮您的吗?"
_163
}
_163
],
_163
"allow_markdown": true,
_163
"media_url": null
_163
}
_163
],
_163
"duration": null
_163
}
_163
},
_163
"artifacts": {
_163
"message": "你好世界!🌍 今天有什么可以帮您的吗?",
_163
"sender": "系统",
_163
"sender_name": "OpenAI",
_163
"files": [],
_163
"type": "object"
_163
},
_163
"outputs": {
_163
"message": {
_163
"message": "你好世界!🌍 今天有什么可以帮您的吗?",
_163
"type": "text"
_163
}
_163
},
_163
"logs": {
_163
"message": []
_163
},
_163
"messages": [
_163
{
_163
"message": "你好世界!🌍 今天有什么可以帮您的吗?",
_163
"sender": "系统",
_163
``````json
_163
"sender_name": "AI",
_163
"session_id": "29deb764-af3f-4d7d-94a0-47491ed241d6",
_163
"stream_url": null,
_163
"component_id": "ChatOutput-aF5lw",
_163
"files": [],
_163
"type": "text"
_163
}
_163
],
_163
"timedelta": null,
_163
"duration": null,
_163
"component_display_name": "Chat Output",
_163
"component_id": "ChatOutput-aF5lw",
_163
"used_frozen_result": false
_163
}
_163
]
_163
}
_163
]
_163
}

在生产应用中,你可能想要选择这个响应中的部分内容返回给用户、存储在日志中等等。接下来的步骤演示了如何从Langflow API响应中提取数据以便在你的应用中使用。

从响应中提取数据

以下示例基于 API 窗格的示例代码,创建一个在终端中运行的问答聊天,并存储代理之前的回答。

  1. 将您的 Simple Agent 流程的 /run 代码片段整合到以下脚本中。 此脚本在您的终端中运行问答聊天,并存储代理之前的回答,以便您进行比较。


    _59
    import requests
    _59
    import json
    _59
    _59
    url = "http://LANGFLOW_SERVER_ADDRESS/api/v1/run/FLOW_ID"
    _59
    _59
    def ask_agent(question):
    _59
    payload = {
    _59
    "output_type": "chat",
    _59
    "input_type": "chat",
    _59
    "input_value": question,
    _59
    }
    _59
    _59
    headers = {
    _59
    "Content-Type": "application/json",
    _59
    "x-api-key": "LANGFLOW_API_KEY"
    _59
    }
    _59
    _59
    try:
    _59
    response = requests.post(url, json=payload, headers=headers)
    _59
    response.raise_for_status()
    _59
    _59
    # Get the response message
    _59
    data = response.json()
    _59
    message = data["outputs"][0]["outputs"][0]["outputs"]["message"]["message"]
    _59
    return message
    _59
    _59
    except Exception as e:
    _59
    return f"Error: {str(e)}"
    _59
    _59
    def extract_message(data):
    _59
    try:
    _59
    return data["outputs"][0]["outputs"][0]["outputs"]["message"]["message"]
    _59
    except (KeyError, IndexError):
    _59
    return None
    _59
    _59
    # Store the previous answer from ask_agent response
    _59
    previous_answer = None
    _59
    _59
    # the terminal chat
    _59
    while True:
    _59
    # Get user input
    _59
    print("\nAsk the agent anything, such as 'What is 15 * 7?' or 'What is the capital of France?')")
    _59
    print("Type 'quit' to exit or 'compare' to see the previous answer")
    _59
    user_question = input("Your question: ")
    _59
    _59
    if user_question.lower() == 'quit':
    _59
    break
    _59
    elif user_question.lower() == 'compare':
    _59
    if previous_answer:
    _59
    print(f"\nPrevious answer was: {previous_answer}")
    _59
    else:
    _59
    print("\nNo previous answer to compare with!")
    _59
    continue
    _59
    _59
    # Get and display the answer
    _59
    result = ask_agent(user_question)
    _59
    print(f"\nAgent's answer: {result}")
    _59
    # Store the answer for comparison
    _59
    previous_answer = result

  2. 要查看代理之前的回答,请输入 compare。要关闭终端聊天,请输入 exit

使用调整项(flow tweaks)为流程运行应用临时覆盖

您可以在请求中包含调整项(tweaks),以临时修改流程参数。 调整项被添加到API请求中,并临时更改您流程中的组件参数。 调整项仅覆盖流程组件的设置,仅对单次运行有效。 它们不会修改底层的流程配置,也不会在运行之间保持。

调整项被添加到/run端点的payload中。 为了辅助格式化,您可以在Replicate代码片段之前,在Langflow的**输入模式(Input Schema)**面板中定义调整项。

  1. 要打开输入模式(Input Schema)面板,从API访问(API access)面板中,点击输入模式(Input Schema)
  2. 在**输入模式(Input Schema)面板中,选择您要在下次请求中修改的参数。 在输入模式(Input Schema)**面板中启用参数不会永久更改列出的参数。它只会将参数添加到示例代码片段中。
  3. 例如,要将LLM提供商从OpenAI更改为Groq,并在请求中包含您的Groq API密钥,请选择模型提供商(Model Providers)、**模型(Model)Groq API密钥(Groq API Key)**的值。 Langflow根据您的输入参数更新代码片段中的tweaks对象,并包含默认值以指导您。 在您的脚本中使用更新后的代码片段,以使用您的覆盖项运行流程。

_12
payload = {
_12
"output_type": "chat",
_12
"input_type": "chat",
_12
"input_value": "hello world!",
_12
"tweaks": {
_12
"Agent-ZOknz": {
_12
"agent_llm": "Groq",
_12
"api_key": "GROQ_API_KEY",
_12
"model_name": "llama-3.1-8b-instant"
_12
}
_12
}
_12
}

下一步

Search