全部產品
Search
文件中心

Platform For AI:應用流開發

更新時間:Dec 20, 2025

LangStudio 提供了一個直觀、高效的整合式開發環境,可在此構建、調試和最佳化由大語言模型、Python節點及其他工具組成的應用流。

快速開始

步驟一:建立對話型應用流

  1. 進入LangStudio,選擇工作空間後,在應用流頁簽單擊建立應用流

  2. 建立方式中,選擇按類型建立 > 對話型,配置參數如下。

    • 名稱:為應用流命名。系統會自動產生,也可以自訂修改。

    • 選擇運行時:運行時用於應用流的開發調試,故將在步驟三調試時建立並綁定運行時。

    • 工作路徑建議選擇工作空間的預設儲存路徑。

      說明

      如選擇了運行時,會自動載入運行時的工作路徑。

  3. 單擊確定,會建立一個由開始節點、大模型節點和結束節點群組成的簡單應用流。

更多建立方式請參見建立方式說明

步驟二:配置節點

完成建立後,將進入應用流開發介面。在畫布上可以添加、刪除和配置節點。

  1. 單擊新添加的大模型節點,右側將展開節點配置地區

  2. 模型設定中,選擇一個模型服務串連。此處選擇已配置好的百鍊模型服務串連。

    說明

    串連用於安全地儲存和管理訪問外部服務(如大模型 API)所需的憑證。如尚未配置,需建立串連,詳情請參見串連配置

可添加其他節點滿足複雜情境需求,更多節點參見預置組件說明

步驟三:調試應用流

此步驟的目標是準備計算環境並執行應用流,以驗證其輸出結果。

  1. 為應用流綁定一個建立的運行時。

    1. 在應用流名稱旁選擇運行時,無選項時,單擊建立運行時

    2. 在彈出的建立頁中填寫運行時名稱運行時工作路徑會預設填充該應用流的工作路徑。其他參數保持預設,然後單擊確定。

    重要

    運行時一旦啟動即會產生費用。調試完成後,請務必前往運行時頁面對運行時執行個體進行停止或刪除操作,以避免產生不必要的費用。更多運行時使用請參見運行時管理

  2. 待運行時啟動成功後,單擊右上方的運行。輸入對話內容並發送。

  3. 查看鏈路/錯誤記錄檔。單擊產生答案下的查看鏈路查看日誌,查看鏈路(Trace詳情、拓撲視圖)或作業記錄。

image

建立方式說明

  • 從模板建立:提供多情境的應用模板快速搭建AI應用。

  • 按類型建立

    • 標準型:適用於跨平台 app程式開發。利用大語言模型的強大功能、定製的Python代碼等來打造您的定製化應用流。

    • 對話型:適用於對話型應用程式開發。在標準型的基礎上,對話型提供對話歷史、輸入、輸出的管理,以及對話方塊形式的測試介面。

  • 從OSS匯入:選擇待匯入的應用流ZIP壓縮包檔案或應用流OSS路徑,該路徑必須直接包含應用流的flow.dag.yaml及其他Code檔案

    • 可通過LangStudio應用流列表操作列的匯出功能將應用流匯出,分享給他人匯入使用。

    • 將Dify的DSL檔案轉換LangStudio應用流格式後,可通過該方式匯入。

環境變數配置

在 LangStudio 中,您可以添加應用流程執行時所需的環境變數,系統會在應用流執行前自動載入這些變數,供 Python 節點、工具調用或自訂邏輯使用。

適用情境

  • 敏感資訊管理:儲存 API 金鑰、認證令牌等,避免寫入程式碼在代碼中。

  • 配置參數化:靈活設定模型地址、逾時時間等運行參數。

配置與使用

  1. 開啟應用流後,單擊控制台右上方全域配置,添加環境變數。

    image

  2. 在Python節點中,可通過標準 Python 的 os.environ訪問已配置的環境變數:

    import os
    
    # 樣本:擷取 API 金鑰
    api_key = os.environ["OPENAI_API_KEY"]

預置組件說明

開始(Start)

說明

一個應用流中只能有一個開始節點。

開始節點用於標識應用流的運行起始狀態,並可以配置應用流的輸入參數。

  • 對於對話型應用流,系統會預設提供對話歷史和對話輸入兩個預設欄位,您可以根據需求添加自訂變數(支援定義類型為File的輸入變數,用於接收使用者上傳的檔案,詳見檔案類型輸入輸出)。

    image

  • 在運行應用流時,通過對話面板配置當前會話的輸入參數。

    image

大模型(LLM)

LLM節點是應用流的核心組件,專門用於調用大語言模型以處理自然語言任務。通過此節點,使用者可以獲得智能的文本響應,協助回答問題或處理複雜的自然語言輸入。此外,LLM節點還提供靈活的配置選項,允許使用者調整模型參數、管理對話歷史以及自訂提示詞,以最佳化響應品質和準確性。

  • 應用情境

    • 文本產生:根據主題、關鍵詞產生常值內容。

    • 內容分類:自動分類郵件類型(諮詢/投訴/垃圾郵件)。

    • 文本轉換:將文本翻譯成指定語言。

    • RAG:結合檢索到的知識回答使用者問題。

  • 配置介面

    image

  • 輸入(Input)

    • 模型設定:支援使用從ModelGallery部署或其他自訂部署的模型服務,以及Dashscope、DeepSeek等模型供應商提供的模型。如果關注效果,建議選擇能力較強的模型。支援配置以下模型參數:

      • 溫度:通常是一個介於0到1之間的值,用於控制模型輸出的隨機性。溫度越接近0,結果越確定和一致;溫度越接近1,結果則越隨機和多樣化。

      • Top P:用於控制結果的多樣性。模型會從候選詞中選擇,確保選擇的詞的累積機率不超過設定的閾值P,從而影響輸出的多樣性。

      • Top K:用於控制模型的輸出。它限定了模型在產生結果時可以選擇的候選詞數量。具體來說,Top K設定一個數值K,模型只會從機率最高的前K個詞中進行選擇。這種方法可以減少產生結果中的隨機性,使輸出更加集中在可能性較高的詞彙上。相比於Top P,Top K更加直接地限制了候選詞的數量,而不是基於累積機率。

      • 存在懲罰:用於減少模型重複產生相同的實體或資訊。通過對已產生的內容施加懲罰,模型更傾向於產生新的或不同的內容。隨著參數值的增加,模型對已經產生過的內容施加更大的懲罰,從而降低重複產生的可能性。

      • 頻率懲罰:用於減少過於頻繁出現的詞或短語的產生機率。隨著參數值的增加,對這些常見詞或短語施加更大的懲罰,從而降低其出現頻率。較高的頻率懲罰參數值有助於提升文本的詞彙多樣性。

      • 最大標記:用於設定模型在單次產生中可以輸出的最大長度。設定較低的最大標記值可能會導致產生的文本較短或被截斷,而較高的值則允許更長的輸出,從而協助控制產生內容的規模和複雜度,確保結果符合預期的長度要求。

      • 種子:當指定種子值時,模型會盡量進行確定性採樣,使得相同種子和參數的重複請求應產生相同的結果。然而,不能保證完全的確定性,建議您參考system_fingerprint(可能需要代理才能訪問)響應參數來監控可能的變化。

      • 停止序列:最多4個停止序列,用於指示模型在產生文本時停止進一步輸出。當模型檢測到其中任意一個停止序列時,它將停止產生更多的tokens,並且返回的文本將不包含該停止序列本身。

    • 對話歷史:配置開啟後,會自動地在提示詞中插入應用流的聊天記錄。

    • 輸入變數:變數中可以引用本節點前置所有節點的輸出。

    • 提示詞:自訂系統(SYSTEM)/使用者(USER)/助手(ASSISTANT)的提示詞內容,提示詞是jinja2模板,模板中可以通過兩個雙引號{{}}的方式引用輸入變數。

  • 輸出(Output)

    節點預設輸出String類型的資料,也可以根據需求配置為JSON類型資料。JSON類型支援自訂添加輸出變數,大模型會根據變數名稱的含義進行輸出。

  • 使用案例

Python開發(Python

應用流支援自訂Python代碼的節點,可以實現複雜的資料處理邏輯,支援流式輸入和流式輸出。配置介面如下:

image

只需填寫Python代碼,輸入輸出會根據代碼自動解析。注意以下事項:

  • 執行入口函數需要被@tool裝飾,才可以被載入為一個節點。

    說明

    當需要Python節點支援輸入資料流時,必須配置 @tool(properties={"streaming_pass_through": True}),否則給到Python節點的LLM等輸入都會是完整的輸出文本。

  • 函數支援的輸入/輸出類型:int、float、bool、str、dict、TypedDict、dataclass(只支援輸出)、list、File。

  • 入口函數的入參會被動態解析成節點的輸入,輸出會被放到output字典中,可以被其他節點引用。

    重要

    Python節點的輸入/輸出參數的自動解析,依賴於運行時。在沒有啟動運行時的情況下,無法配置節點的輸入/輸出資訊。

  • 如果Python代碼需要安裝相應的依賴,在畫布右上方,選擇安裝依賴,填寫依賴包。requirements.txt檔案會同應用流一起儲存,在啟動運行時,或是部署服務時安裝依賴到對應的環境裡。

    image

    image

使用案例1:在代碼地區輸入以下代碼,代碼會被映射為節點的輸入和輸出:

from langstudio.core import tool
from dataclasses import dataclass

@dataclass
class Result:
    output1: str
    output2: int

@tool
def invoke(foo: str, bar: int) -> Result:    
    return Result(
        output1="hello" + foo,
        output2=bar + 10
    )

image

使用案例2流式輸入輸出。使用Python節點對大模型/Agent等節點輸出的包含思考過程的文字資料流進行裁剪,丟棄<think>\n\n<think>部分思考內容,可獲得一個最終結果文本輸出資料流。範例程式碼如下:

import re
from typing import Iterator
from langstudio.core import tool

@tool(properties={"streaming_pass_through": True})
def strip_think(
    stream: Iterator[str],
) -> Iterator[str]:  # 輸入為流式字串迭代器,輸出為過濾後的流式字串迭代器
    # 匹配 <think>\n...\n</think> 結構,並捕獲結束標籤後的文本
    pattern = re.compile(r"<think>\n[\s\S]*\n</think>(.*)")
    in_thinking = True  # 標記當前是否處於 <think> 塊內部
    think_buf = ""      # 緩衝區,用於儲存未處理完的內容

    for chunk in stream:
        if in_thinking:
            think_buf += chunk
            m = pattern.search(think_buf)  # 檢查緩衝區是否含完整的思考塊
            if m:
                in_thinking = False
                result_part = m.groups()[0]
                if result_part:
                    yield result_part  # 若結果文本存在,立即輸出
        else:
            yield chunk  # 已經脫離思考塊,直接輸出後續所有chunk

條件分支(Condition

該節點主要用於流程式控制制。主要實現if-else邏輯,若設定的條件成立則僅運行對應的分支,若均不成立則運行else分支。需搭配變數彙總(Variable Aggregate)節點使用。

  • 配置介面

    image

  • 輸入(Input)

    配置分支條件時,需注意:

    • 每個分支代表一個執行路線,最後一個分支為else分支,代表沒有匹配到任何分支,不可編輯。

    • 每個分支可包含多個條件,條件之間支援and/or彙總。

    • 注意上遊節點輸出、匹配符(如=為空白不包括等)以及匹配值,以確保條件的準確性和有效性。

  • 輸出(Output)

    無輸出。

  • 使用案例

    在串連條件分支組件與下遊節點時,每個分支在組件上都有一個對應的連線連接埠。當某個分支條件被觸發時,該分支將執行串連的下遊節點,而其他分支節點則會被跳過。之後,可以通過變數彙總(Variable Aggregate)組件收集各個條件分支的執行結果(即下遊節點的輸出)。

    image

變數彙總(Variable Aggregate

該節點負責整合不同分支的輸出結果,確保無論哪個分支被執行,其結果都能通過一個統一的變數來引用和訪問。這在多分支的情況下非常有用,可將不同分支下相同作用的變數映射為一個輸出變數,避免下遊節點重複定義。

  • 配置介面

    image.png

  • 輸入(Input)

    組態變數分組時,需注意:

    • 上遊一般是條件分支(Condition)/意圖識別(Intent Recognition)產生的多個執行分支。

    • 同一分組中變數必須同類型,第一個非空輸出值即為該組的輸出。

    • 由於條件分支/意圖識別僅會觸發一個分支,所以每組有且僅有一個非空值,通過變數彙總節點即可提取出該值,方便下遊使用。

    • 如果每個條件分支/意圖識別的分支有多個需要的輸出,可以添加多個分組,分別提取對應輸出值。

  • 輸出(Output)

    輸出變數會根據所添加的分組進行動態調整。如果存在多個分組,節點將輸出多個索引值對(Key-Value),其中,Key為組名,Value為組內第一個非空的變數值。

  • 使用案例

    請參見條件分支(Condition)組件的使用案例。

意圖識別(Intent Recognition

主要用於流程式控制制。通過大語言模型分析使用者輸入的意圖,並根據識別結果執行相應的分支。支援多意圖配置和對話歷史。

  • 配置介面

    image.png

  • 輸入(Input)

    • 使用者輸入:選擇使用者輸入,用於識別意圖。

    • 多意圖配置:按需設定意圖,確保每個意圖的描述都清晰明確,並且不同意圖之間不存在語義重疊。最後一個意圖預設為“其他意圖”,代表沒有匹配到任何其他意圖,不可編輯。

    • 模型設定:配置意圖識別需要的大語言模型,如果關注效果,請選擇能力較強的模型,如qwen-max等。

    • 對話歷史:配置開啟後,大模型推理時會自動地在提示詞中插入應用流的聊天記錄。

    • 額外提示:輸入的內容將會被追加到系統提示詞中,協助模型更好的完成意圖識別。

  • 輸出(Output)

    無輸出。

  • 使用案例

    在串連意圖識別組件與下遊節點時,每個意圖分支在組件上都有一個對應的連線連接埠。當某個意圖被識別時,該分支將執行串連的下遊節點,而其他分支節點則會被跳過。之後,可以通過變數彙總(Variable Aggregate)組件收集各個條件分支的執行結果(即下遊節點的輸出)。

    image.png

知識庫檢索(Index Lookup

知識庫中檢索與使用者問題相關的常值內容,以便將其用作下遊LLM節點的上下文。

  • 配置介面

    image

  • 輸入(Input)

    • 知識庫索引名稱:選擇在LangStudio上登入可用的知識庫,詳情請參見知識庫管理員

    • 檢索關鍵詞:選擇希望在知識庫中檢索的關鍵資訊,需要引用上遊節點的輸出參數,格式為String。

    • Top K:知識庫索引檢索時,系統返回的與檢索關鍵詞最相關的前K項結果。

  • 輸出(Output)

    檢索輸出變數result, 類型為List[Dict],其中Dict的Key包含以下欄位:

    Key

    說明

    content

    檢索到的文檔分區的內容。這個內容是從知識庫中提取出來的文本片段,通常與輸入的查詢相關。

    score

    文檔分區與輸入查詢的相似性得分,即文檔分區與查詢的匹配程度。得分越高,說明該文檔分區與查詢的相關性越強。

    以下為輸出樣本,表示返回結果包含得分最高的top_k條記錄:

    [
      {
        "score": 0.8057173490524292,
        "content": "受疫情帶來的不確定性影響,xx銀行根據經濟走勢及中國或中國內地環境預判,主動\n加大了貸款和墊款、非信貸資產減值損失的計提力度,加大\n不良資產核銷處置力度,提升撥備覆蓋率,2020 年實現淨利\n潤289.28億元,同比增長 2.6%,盈利能力逐步改善。\n(人民幣百萬元) 2020年 2019年 變動(%)\n經營成果與盈利\n營業收入 153,542 137,958 11.3\n減值損失前營業利潤 107,327 95,816 12.0\n淨利潤 28,928 28,195 2.6\n成本收入比(1)(%) 29.11 29.61下降 0.50個\n百分點\n平均總資產收益率 (%) 0.69 0.77下降 0.08個\n百分點\n加權平均淨資產收益率 (%) 9.58 11.30下降 1.72個\n百分點\n淨息差(2)(%) 2.53 2.62下降 0.09個\n百分點\n註: (1) 成本收入比 =業務及管理費/營業收入。",
        "id": "49f04c4cb1d48cbad130647bd0d75f***1cf07c4aeb7a5d9a1f3bda950a6b86e",
        "metadata": {
          "page_label": "40",
          "file_name": "2021-02-04_中國xx保險集團股份有限公司_xx_中國xx_2020年__年度報告.pdf",
          "file_path": "oss://my-bucket-name/datasets/chatglm-fintech/2021-02-04__中國xx保險集團股份有限公司__601318__中國xx__2020年__年度報告.pdf",
          "file_type": "application/pdf",
          "file_size": 7982999,
          "creation_date": "2024-10-10",
          "last_modified_date": "2024-10-10"
        }
      },
      {
        "score": 0.7708036303520203,
        "content": "72億元,同比增長 5.2%。\n2020年\n(人民幣百萬元)壽險及\n健康險業務財產保險\n業務 銀行業務 信託業務 證券業務其他資產\n管理業務 科技業務其他業務\n及合并抵消 集團合并\n歸屬於母公司股東的淨利潤 95,018 16,083 16,766 2,476 2,959 5,737 7,936 (3,876) 143,099\n少數股東損益 1,054 76 12,162 3 143 974 1,567 281 16,260\n淨利潤 (A) 96,072 16,159 28,928 2,479 3,102 6,711 9,503 (3,595) 159,359\n剔除專案 :\n 短期投資波動(1)(B) 10,308 – – – – – – – 10,308\n 折現率變動影響 (C) (7,902) – – – – – – – (7,902)\n 管 理層認為不屬於  \n日常營運收支而剔除的  \n一次性重大專案及其他 (D) – – – – – – 1,282 – 1,282\n營運利潤 (E=A-B-C-D) 93,666 16,159 28,928 2,479 3,102 6,711 8,221 (3,595) 155,670\n歸屬於母公司股東的營運利潤 92,672 16,",
        "id": "8066c16048bd722d030a85ee8b1***36d5f31624b28f1c0c15943855c5ae5c9f",
        "metadata": {
          "page_label": "19",
          "file_name": "2021-02-04_中國xx保險集團股份有限公司_xxx_中國xx__2020年__年度報告.pdf",
          "file_path": "oss://my-bucket-name/datasets/chatglm-fintech/2021-02-04__中國xx保險集團股份有限公司__601318__中國xx__2020年__年度報告.pdf",
          "file_type": "application/pdf",
          "file_size": 7982999,
          "creation_date": "2024-10-10",
          "last_modified_date": "2024-10-10"
        }
      }
    ]
  • 使用案例

Agent(Agent)

Agent節點是LangStudio應用流中基於自主性智能體開發的節點群組件。該節點支援推理(Reasoning)策略和Tools Use等能力,可通過整合不同的推理策略(目前支援FunctionCalling和ReAct策略),實現自主調用模型上下文協議(MCP)工具,從而使得大語言模型(LLM)能夠在運行時動態選擇並執行工具(Tools),實現自主性多步推理能力。

配置節點參數

  • Agent策略:選擇所需的Agent推理策略,目前支援FunctionCallingReAct策略。

    FunctionCalling

    基於 OpenAI Chat API 中定義的結構化 tool call 定義(JSON format),實現大語言模型(LLM)與外部工具的互動。LLM 會基於使用者自然語言指令,自動識別意圖、選擇合適的工具並提取參數,系統隨後調用對應工具並返回結果供模型繼續推理產生最終答案。

    應用情境與優勢:

    • 結構化調用,相容性強:使用結構化資料明確工具名稱及調用參數,適配所有支援 tool calling 的模型。

    • 效能穩定:適合目標明確、步驟清晰的任務(如查天氣、搜尋資訊、資料查詢等)。

    ReAct

    ReAct(Reasoning + Acting)策略是一種更自由的推理方式,通過提示詞引導模型顯式產生 Thought 和 Action,從而實現多步推理與工具調用的閉環。該策略通常使用自然語言描述調用過程,通過輸出類似“Action=xxx, Action Input=xxx”的文本觸發後端工具執行,並將結果再次注入模型推理鏈中。無需 API-level 的 tool_calls,適用於更通用模型及架構。

    應用情境與優勢:

    • 更強推理能力:引導模型逐步思考,每一步都能顯式表達推理邏輯。

    • 策略透明:適合調試、可解釋性強的 Agent 應用。

    • 無需 Tool Calling 支援:不支援結構化輸出的模型也可使用。

  • 模型設定:FunctionCalling策略使用OpenAI API中Tool Call方式傳遞Tools資訊,因此模型需要原生支援Tool Calling功能。ReAct策略則無此限制,建議選擇推理能力較強的模型。

  • 對話歷史:啟用對話歷史,可以為Agent提供對話上下文記憶能力。系統會自動的將對話歷史訊息填充到提示詞中,這使得Agent能夠理解和引用之前的對話內容,從而提供連貫的上下文相關的回答。例如,當使用者在新的訊息中使用代詞(如“他”、“這裡”、“那一天”等)時,開啟了對話歷史的Agent能夠理解這些代詞所指代的前文實體,而無需使用者重複指定完整資訊。

  • 任務規劃:啟用後,系統將自動將內建write_todos工具添加到Agent的可用工具中;對於使用者的複雜問題,Agent會自動調用write_todos工具規劃複雜任務並逐步執行,過程中會根據最新資料資訊動態更新計劃。

  • MCP工具:支援兩種配置方式:通過選擇MCP串連或自訂地填寫表單。目前支援SSE和Streamable HTTP通訊方式的MCP Server。一個 MCP 服務通常會提供多個工具(Tools)。

    • 通過工具範圍選項,可以控制哪些工具對大模型可見。

    • 對於具有敏感操作(如修改使用者資料)的工具,可以通過 “審批工具” 功能進行保護。當工作流程執行到這些工具時,節點會自動暫停,並等待人工確認;審批通過後,工作流程才會繼續執行。

  • 工具:配置Agent可以使用的非MCP工具,目前支援自訂工具(OpenAPI工具)和Python工具。對於選中工具,支援在Agent節點上具體的編輯該工具的描述、輸出參數(例如配置某個參數為模型不可見並配置預設值)、是否“需要審批”通過人工介入保證安全性。

  • 提示詞配置

    • 輸入變數:當您希望在提示詞中引用應用流上遊節點的變數時,需要在本節點中定義相應的輸入變數,並將其值設定為上遊節點變數的引用。隨後,在下面提示詞中,您可以通過Jinja2模板文法(通過兩個雙引號{{}}的方式)引用這些已定義的輸入變數,以實現動態資料傳遞。

    • 系統提示詞:用於明確指定 Agent 的任務目標和上下文資訊,為模型提供必要的背景,以指導其產生符合預期的響應。對於ReAct策略,非必須。

    • 使用者提示詞:接收使用者的輸入或查詢,作為模型產生響應的基礎。

  • 迴圈次數:設定Agent執行的最大迴圈次數,範圍為1~99。Agent將根據迴圈次數重複執行任務以產生響應,直到滿足以下任一條件:

    • LLM判斷已通過調用工具擷取足夠的資訊以產生完整的結果

    • 達到設定的最大迴圈次數

    請注意,設定合理的迴圈次數有助於在響應完整性與執行效率之間取得平衡。若開啟了任務規劃,建議使用預設最大迴圈次數,以確保模型能夠按照計劃完整地執行所有步驟並解決問題。

  • 輸出變數

    • intermediate_steps:Agent執行的中間過程,String類型。

    • text:Agent的最終輸出,String類型。

查看鏈路/日誌

在應用流頁面右上方單擊運行後,您可以在彈出的對話方塊中運行結果下方查看鏈路或日誌。

  • 查看中間輸出:點擊工作流程中的Agent節點右上方的運行狀態表徵圖,在下方抽屜中找到Output裡的intermediate_steps,查看agent的推理過程。

  • 查看鏈路:查看當前啟動並執行Trace資訊,瞭解Agent在每次請求模型時的輸入、模型的輸出(包括工具調用及請求參數)、token開銷、耗時等資訊。

  • 查看日誌當應用流程執行錯誤時,可以查看當前的作業記錄,擷取節點執行過程中的更多細節。

此外,您還可以通過在應用流頁面右上方單擊更多 > 運行歷史,選擇指定運行記錄,查看鏈路或日誌。

迴圈(Loop)

迴圈節點用於執行需要依賴前一輪結果的重複任務,直至滿足允出準則或達到預設的最大迴圈次數。在迴圈節點內,可以配置一個子流程,系統會根據迴圈變數重複執行子流程中的邏輯,直到觸發終止條件或達到執行次數上限。

  • 配置介面

    image

  • 輸入(Input)

    • 迴圈變數:用於在迴圈的各個輪次間傳遞資料,並在迴圈結束後繼續供下遊節點使用。支援配置多個迴圈變數,其值可以手動輸入或從上遊節點的輸出中選擇。

    • 迴圈允出準則:可基於迴圈變數進行配置,當指定的迴圈變數滿足預設條件時,迴圈將終止。

    • 最大迴圈次數:用於限制迴圈的最大執行次數,以防止出現無限迴圈。

  • 輸出(Output)

    節點輸出為當前迴圈執行之後迴圈變數的值。只有通過變數賦值節點才能更新迴圈變數,如果沒有該節點,經過N輪迴圈後,迴圈節點的輸出將仍然保持為初始輸入。

  • 相關節點

    迴圈相關的節點僅限在迴圈內使用。您可以通過單擊迴圈內指定節點右側的“+”來添加以下相關節點:

    • 退出迴圈(Break Loop)

      退出迴圈,上遊一般是條件分支(Condition)節點。

    • 變數賦值(Variable Assigner)

      將迴圈內子節點輸出結果賦值給迴圈變數。

    image

SerpAPI-連網搜尋(SerpAPI-GenericSearch

使用SerpApi進行網路搜尋,支援多個搜尋引擎(如Bing、Google、Baidu、Yahoo以及自訂),可配置搜尋位置和結果數量。

  • 配置介面

    image

  • 輸入(Input)

    • SerpApi串連:選擇在LangStudio上已建立的SerpApi串連,詳情請參見建立SerpApi串連

    • 搜尋關鍵詞:選擇希望進行網路搜尋的關鍵資訊,需要引用上遊節點的輸出參數,格式為String。

    • 搜尋引擎:支援bing、google、baidu和yahoo搜尋,也支援自訂的輸入。

    • 位置:搜尋所在位置。如需使用,建議具體到城市,如Shanghai, China

    • 搜尋結果數量:返回的查詢結果數量。

  • 輸出(Output)

    連網搜尋輸出變數output, 類型為List[Dict],其中Dict的Key包含以下欄位:

    Key

    說明

    title

    搜尋結果的標題,通常是網頁或文檔的標題,簡要概括了內容的主題。

    link

    搜尋結果的連結,即URL。使用者可以通過這個連結訪問完整的內容。

    summary

    搜尋結果的摘要,通常是對內容的簡要介紹或概括,協助使用者快速瞭解內容的核心資訊。

  • 使用案例

    基於LangStudio&DeepSeek的RAG及連網搜尋聊天機器人解決方案

阿里雲IQS-連網搜尋(IQS-GenericSearch

使用阿里雲資訊查詢服務進行標準搜尋,支援時間範圍篩選。

  • 配置介面

    image

  • 輸入(Input)

    • 搜尋關鍵詞:選擇希望進行連網搜尋的關鍵資訊。長度必須在2到100個字元之間,若超過100個字元,將被截斷至100個字元;若少於2個字元,則會引發錯誤。

    • 時間範圍:選擇搜尋資料的時間範圍,支援選擇NoLimit、OneDay、OneWeek、OneMonth和OneYear。

    • IQS串連:如果啟動時沒有配置有許可權的角色,可選擇已配置的IQS串連。關於如何配置IQS串連,請參見服務串連配置-自訂串連,並將鍵和值分別配置為api_key和相應的值,相應的值可通過資訊查詢服務-憑證管理查看。關於IQS串連使用詳情,請參見基於LangStudio&阿里雲資訊查詢服務搭建DeepSeek連網搜尋應用流

  • 輸出(Output)

    • output:連網搜尋輸出變數output, 類型為List[Dict],其中Dict的Key包含以下欄位:

      Key

      說明

      title

      搜尋結果的標題,通常是網頁或文檔的標題,簡要概括了內容的主題。

      link

      搜尋結果的連結,即URL。使用者可以通過這個連結訪問完整的內容。

      summary

      搜尋結果的摘要,通常是對內容的簡要介紹或概括,協助使用者快速瞭解內容的核心資訊。

      content

      搜尋結果的完整內容或本文,包含詳細的資訊。由於資料量可能很大,通常不在摘要中展示。

      markdown_text

      Markdown格式的搜尋內容,可能返回為空白。

      score

      搜尋結果的評分,通常是一個數值,用於表示結果的相關性或品質。評分越高,結果通常越符合搜尋意圖。

      publish_time

      內容的發布時間,通常是一個時間戳記或日期,協助使用者瞭解資訊的時效性。

      host_logo

      內容來源網站的標誌或表徵圖,通常是一個圖片URL,協助使用者識別資訊來源。

      hostname

      內容來源網站的主機名稱或網域名稱,指示資訊的來源網站。

      site_label

      內容來源網站的標籤或分類,用於指示網站的主題或類別,協助使用者瞭解資訊的背景。

    • scene_items:用於增強搜尋結果的輔助資訊,在大多數通用搜尋中,scene_items通常為空白。然而,當通用搜尋無法準確滿足使用者的需求時,尤其是涉及特定情境(如時間、天氣、日曆等)時,系統會嘗試返回scene_items作為補充,確保使用者在特定情境下能擷取到更精確和有用的資訊。

  • 使用案例

    基於LangStudio&阿里雲資訊查詢服務搭建DeepSeek連網搜尋應用流

直接輸出

直接輸出節點可以通過輸出模板配置直接回複的訊息內容,它支援使用 {{node.variable}} 文法引用上遊節點的輸出,支援流式輸出。

使用樣本:在大模型節點前,增加直接輸出節點,先返回一條訊息給使用者。

image

image

文檔解析

支援使用系統內建的智能文檔解析工具和AI搜尋開放平台的文檔解析服務。

  • 內建解析工具:可提取文檔中的結構化內容與中繼資料資訊,支援多種主流文檔格式,包括:PDF、DOCX、PPTX、TXT、HTML、CSV、XLSX、XLS、JSONL 和 MD。

  • AI搜尋開放平台:實現高精度的結構化文檔解析,支援提取標題、段落等邏輯層級資訊,以及文本、表格和圖片等內容,可提升文檔提取的效果與準確性,需先配置 AI搜尋開放平台模型服務串連。支援的檔案格式包括:PDF、DOCX、PPTX、TXT 和 HTML。

該工具支援後續用於 RAG、摘要、問答等情境。配置介面如下:image.png

  • 文檔檔案:輸入單個文檔檔案進行智能解析,提取結構化內容。選擇來自上遊的檔案類型欄位。

  • 模型設定:(可選)選擇在LangStudio上已建立的 AI搜尋開放平台模型服務串連。若未配置,系統將預設使用內建的基礎解析方法處理上傳的檔案。

  • 輸出結果:

    • file_id:輸入檔案的唯一識別碼

    • content:解析出的結構化常值內容,包含標題、段落等層級資訊

    • status:解析狀態,可能值為 SUCCESS 或 FAIL

    • metadata:文檔的中繼資料資訊和解析詳情

      • file_name:檔案名稱

      • file_type:檔案類型

      • source_uri:檔案原始 URI

      • download_url:檔案可下載 URL

      • analysis_method:使用的解析方法。"opensearch" 表示使用AI搜尋開放平台的結構化解析,"builtin" 表示使用內建的基礎解析方法。

下遊使用樣本:在下遊節點按需引用文檔解析節點的結果欄位,如果要在LLM節點中使用文檔解析結果,可以參考如下方式在使用者提示詞中引入文檔解析後的內容:

image.png

語音辨識

使用語音辨識工具將音頻或視頻檔案轉換為文本。支援多種音頻格式和語言識別。

輸入

  • 模型設定:配置語音辨識模型,當前支援阿里雲百鍊提供的語音辨識服務。推薦使用 paraformer-v2以獲得更優識別效果及多語言支援。

  • 音視頻檔案:選擇需要識別的音頻或視頻檔案。支援的格式詳見檔案類型輸入輸出

  • 識別語言:指定音頻識別時的語言類型,支援中文、英文、日語、粵語、韓語、德語、法語、俄語或自動檢測。注意:該功能僅paraformer-v2模型支援,其他模型將預設使用自動語言偵測。

輸出

  • file_id:輸入檔案的唯一識別碼。

  • status:識別狀態,可能值為 SUCCESSFAIL

  • content:轉錄的常值內容。

  • segments:句子片段資訊列表,包含時間戳記、文本片段等詳細資料。

  • metadata:檔案的中繼資料資訊,包含:

    • file_name:檔案名稱

    • file_type:檔案類型

    • source_uri:檔案URI

    • download_url:檔案下載URL

HTTP請求

通過 HTTP 要求工具,可以便捷地調用外部 API 介面,支援多種 HTTP 方法、認證方式和請求體格式,滿足各類整合需求。

輸入

  • 要求方法:HTTP 要求方法,支援GET、POST、PUT、PATCH、DELETE、HEAD、OPTIONS。

  • URL:請求的目標地址。

  • 要求標頭:自訂 HTTP 要求頭。每行為一個header,填入對應的索引值。

  • 請求參數:查詢字串參數。每行一個參數,填入對應的索引值。

  • 鑒權:預設關閉,即不進行鑒權;開啟後可選擇標準認證方式(Bearer 或 Basic)。

    • Bearer:使用 Bearer Token 認證,填入時無需添加Bearer首碼

    • Basic:使用基礎認證,輸入使用者名稱和密碼,系統將自動轉換為 Base 64 編碼的憑證

    • 如需自訂認證方式,請手動設定要求標頭

  • 請求體:支援以下請求體格式。

    • none:無請求體

    • JSON:發送JSON格式資料

    • form-data:發送multipart/form-data格式資料,支援檔案上傳

    • x-www-form-urlencoded:發送URL編碼的表單資料

    • raw-text:發送純文字資料

    • binary:發送二進位檔案資料,支援檔案上傳

  • SSL驗證:預設開啟,選擇是否驗證伺服器SSL認證,生產環境建議保持開啟。

  • 逾時時間:請求逾時時間,範圍1-600秒,預設10秒。

  • 重試配置:預設關閉,選擇是否在請求失敗時自動重試。

    • 最大重試次數:最多重試次數,範圍0-10次

    • 稍候再試:兩次重試之間的間隔時間,範圍100-10000毫秒

輸出

  • body:響應常值內容。當響應為檔案時,此欄位為空白字串。

  • status_code:HTTP響應狀態代碼,如200、404、500等。

  • headers:HTTP回應標頭,以索引值對形式返回。

  • file:檔案對象(當響應為檔案時)。

模板轉換

模板轉換工具允許藉助 Jinja2 模板文法,實現靈活的文字格式設定化和資料轉換。

輸入

轉換模式支援Jinja2模式節點參考模式。

  • Jinja2 模式:使用完整的 Jinja2 模板文法自訂輸出格式。適用於複雜的結構化輸出、條件判斷、迴圈渲染等。

    • 模板變數:定義模板中使用的變數。

      重要

      變數名不能使用Python內建方法名,如itemskeysvalues等。建議使用明確的欄位名,如item_listproduct_list等。

    • 模板內容:使用Jinja2文法編寫的模板字串。支援變數替換{{ variable }}、迴圈{% for %}、條件判斷{% if %}、過濾器{{ value | filter }}等完整文法。

      重要

      模板中引用的所有變數必須在變數列表中定義,否則會報錯。

  • 節點參考模式:直接引用上遊節點輸出,自動拼接為字串。適用於簡單的文本組合情境。

    • 模板內容:選擇上遊節點的輸出欄位,系統自動按順序拼接。

輸出

output:模板渲染後的文本結果。注意:輸入輸出模板內容長度均限制為100000字元,超出部分將被截斷。

使用樣本

樣本1:訂單確認郵件產生

變數配置:

變數名

變數值

customer_name

"張三"

order_id

"ORD-2025-001"

products

[{"name": "膝上型電腦", "price": 8999}, {"name": "無線滑鼠", "price": 199}]

total

9198

模板內容:

尊敬的 {{ customer_name }}:

您的訂單 {{ order_id }} 已確認,詳情如下:

{% for product in products %}
- {{ product.name }}: ¥{{ product.price }}
{% endfor %}

總計: ¥{{ total }}

感謝您的購買!

輸出結果:

尊敬的 張三:

您的訂單 ORD-2025-001 已確認,詳情如下:

- 膝上型電腦: ¥8999
- 無線滑鼠: ¥199

總計: ¥9198

感謝您的購買!

樣本2:知識庫檢索結果格式化

變數配置:

變數名

變數值

chunks

[{"title": "產品介紹", "content": "這是產品的詳細介紹...", "score": 0.95}]

模板內容:

{% for chunk in chunks %}
### 相關度: {{ "%.2f" % chunk.score }}
#### {{ chunk.title }}
{{ chunk.content }}
---
{% endfor %}

輸出結果:

### 相關度: 0.95
#### 產品介紹
這是產品的詳細介紹...
---

列表操作

通過列表操作工具,可以對各類列表資料執行靈活的過濾與排序操作,實現資料的精細化處理與篩選。

輸入

  • 列表輸入:需要處理的列表資料。支援任意子類型(字串、數字、布爾值、檔案對象、字典)。

  • 操作:按順序執行的鏈式操作序列。支援過濾、排序兩種操作類型。

    • 過濾操作(filter):過濾操作根據輸入列表的類型,動態提供不同的過濾方式。注意:各項過濾操作均對大小寫敏感。

      過濾鍵

      說明

      適用範圍

      索引

      基於元素在列表中的位置過濾

      適用於所有清單類型

      元素值

      基於元素本身的值進行過濾

      適用於所有清單類型

      自訂屬性

      基於自訂的屬性進行過濾

      僅適用於字典類型列表

      檔案屬性

      基於檔案的屬性進行過濾

      僅適用於檔案類型列表

      可選屬性:

      • file_id:檔案id

      • file_name:檔案名稱

      • file_type:檔案MIME類型

      • source_uri:檔案URI

      • download_url:檔案下載URL

      • category:檔案分類,可選值:documentimageaudiovideo

      • extension:檔案尾碼,如.jpg

    • 排序操作(sort):排序操作根據輸入列表的類型,提供不同的排序方式。

      排序鍵

      說明

      適用範圍

      元素值

      基於元素本身的值進行排序

      僅適用於字串、數字、布爾值清單類型

      自訂屬性

      基於自訂的屬性進行排序

      僅適用於字典類型列表

      檔案屬性

      基於檔案的屬性進行排序

      僅適用於檔案類型列表,可選屬性與過濾操作一致

輸出

  • result:處理後的列表結果。

  • first_item:結果清單的第一個元素,如果列表為空白則為None。

  • last_item:結果清單的最後一個元素,如果列表為空白則為None。

使用樣本

樣本1:檔案分類處理 - 篩選圖片檔案並按大小排序取前3個

情境:使用者上傳了包含各類檔案的混合列表,需要篩選出圖片檔案,按檔案名稱長度排序,並只保留前3個用於後續的Image Recognition處理。

操作配置:

操作1 - 過濾(按檔案分類):
  過濾鍵: item.category
  過濾操作符: 等於
  過濾值: image

操作2 - 排序(按檔案名稱長度):
  排序鍵: item.file_name
  排序方向: asc

操作3 - 過濾(取前3個):
  過濾鍵: index
  過濾操作符: 小於
  過濾值: 3

image.png

樣本2:資料分析 - 篩選高分使用者並擷取 Top 5

情境:從使用者評分列表中篩選出分數大於等於80分的使用者,按分數降序排列,取前5名。

輸入列表:

[
  {"name": "張三", "score": 95, "department": "技術部"},
  {"name": "李四", "score": 72, "department": "市場部"},
  {"name": "王五", "score": 88, "department": "技術部"},
  {"name": "趙六", "score": 91, "department": "產品部"},
  {"name": "錢七", "score": 65, "department": "市場部"},
  {"name": "孫八", "score": 98, "department": "技術部"}
]

操作配置:

操作1 - 過濾(篩選高分使用者):
  過濾鍵: item.score
  過濾操作符: 大於等於
  過濾值: 80

操作2 - 排序(按分數降序):
  排序鍵: item.score
  排序方向: desc

操作3 - 過濾(取前5名):
  過濾鍵: index
  過濾操作符: 小於
  過濾值: 5

image.png

輸出結果:

[
  {"name": "孫八", "score": 98, "department": "技術部"},
  {"name": "張三", "score": 95, "department": "技術部"},
  {"name": "趙六", "score": 91, "department": "產品部"},
  {"name": "王五", "score": 88, "department": "技術部"}
]

注意事項:

  • 若工具輸入引用 Python 節點自訂的list類型輸出變數,建議在 Python 節點中定義出明確的列表元素類型,如list[str],從而在列表動作節點中獲得更準確的操作符匹配。

結束(End)

結束節點用於標識應用流(Workflow)的運行結束狀態,以及應用流的輸出參數。一個應用流Workflow中只能有一個結束節點。

  • 輸出參數配置

    應用流輸出可以引用所有上遊節點產生的輸出,作為應用流執行結果。例如,以下樣本中應用流的answer輸出使用了大模型節點的輸出,search_results則是使用了搜尋節點的輸出。

    image

    說明
    • 對話型應用流預設有一個Chat輸出欄位,用於作為應用流的對話輸出。

    • 應用流程必須包含開始節點和結束節點,且只有串連在這兩個節點之間的節點才會被執行,游離的節點則不會執行。

下一步

在完成應用流的開發和調試後,您可以對應用流進行評測,待滿足業務需求後,您可以將應用流部署至模型線上服務PAI-EAS中供生產使用。