llm-call節點調用大語言模型對每行資料進行智能處理,支援Prompt模板渲染、模型選擇和輸出格式解析,可實現AI評估、AI標註、AI合成、AI過濾等任務。
處理流程與適用情境
llm-call是Pipeline中所有LLM處理任務的基礎節點。該節點對資料集中的每行資料獨立執行LLM推理,僅增加新列,不刪除原有列,不改變行數。
處理流程:
提取:從輸入行中提取
fields指定的欄位值。渲染:將欄位值填入Prompt模板的
{{列名}}預留位置,產生完整Prompt。調用:調用指定LLM模型執行推理。
解析:按
format指定的格式解析LLM輸出,將結果儲存為新列。
適用情境:
AI評估:對問答對進行多維度品質評分(JSON輸出)。
AI標註:對文本進行分類、實體標註(JSON輸出)。
AI合成:基於未經處理資料產生改寫、擴充、翻譯等合成資料。
AI過濾:通過LLM判斷資料品質,配合下遊
where節點過濾低質資料。通用任務:摘要、分類、實體抽取等任意Prompt可定義的任務。
節點配置
基本配置結構:
{
"id": "node_1",
"type": "llm-call",
"parameters": {
"prompt": "<Prompt模板或模板引用>",
"fields": "<參與渲染的列名列表>",
"format": "raw | json",
"model": "<模型標識>",
"as": "<輸出資料行名>",
"output": "<輸出資料行列表>"
}
}參數說明
參數 | 類型 | 必填 | 預設值 | 說明 |
| String | 是 | 無 | Prompt模板,使用 |
| String | 是 | 無 | 參與渲染的輸入列名,多個列名以逗號分隔。每個列名必須在Prompt中有對應的 |
| String | 否 |
| 輸出解析格式。 |
| String | 否 | 系統預設模型 | LLM模型標識,例如 |
| String | 否 |
| 輸出資料行名,LLM推理結果儲存到該列中。 |
| String | 否 |
| 節點輸出資料行,多個列名以逗號分隔。 |
Prompt編寫指南
預留位置使用
{{列名}}文法,列名與fields中聲明的一致。系統自動校正:Prompt中的所有
{{列名}}必須在fields中聲明,反之亦然。需要JSON輸出時,在Prompt中明確要求輸出JSON格式,並設定
format: "json"。超長Prompt建議註冊為命名模板,通過
@<path>引用,例如@eval/需求理解_v1.md。
模板引用格式
prompt值 | 說明 |
| 引用登入的評估類命名模板。 |
| 引用登入的標註類命名模板。 |
| 內聯Prompt文本,直接在參數中編寫。 |
輸入與輸出
輸入要求
接收上遊節點輸出的任意列資料。
輸入資料必須包含
fields中聲明的所有列。
輸出資料行
列名 | 類型 | 來源 | 說明 |
| -- | 透傳/新增 |
|
| varchar或json | 新增 |
|
format=json輸出保證
當format設定為json時,系統保證輸出資料行的值始終為合法JSON:
LLM返回情況 | {as}列值 |
成功且返回合法JSON | 原樣返回,例如 |
成功但返回非法JSON |
|
調用失敗 |
|
format=raw輸出
LLM返回情況 | {as}列值 |
成功 | LLM輸出原文。 |
調用失敗 | 錯誤描述文本。 |
行數變化
M到N(M = N)。1:1變換,每行獨立調用LLM,不增減行數。
效果預覽
處理前(3條資料):
question | output |
什麼是機器學習? | 機器學習是人工智慧的一個重要分支領域 |
如何學習Python? | 推薦從官方教程開始,然後做專案實踐 |
1+1=? | 2 |
處理後(3條資料):配置prompt = "請評估..."、fields = "question,output"、format = "json"、as = "eval"。
question | output | eval |
什麼是機器學習? | 機器學習是人工智慧的... |
|
如何學習Python? | 推薦從官方教程開始... |
|
1+1=? | 2 |
|
行數不變(3到3),每行新增eval列。format = "json"保證輸出永遠為合法JSON。可結合where節點按分數過濾。
使用樣本
樣本1:AI品質評估(JSON輸出)
{
"id": "n7",
"type": "llm-call",
"parameters": {
"prompt": "請評估以下問答對。問題:{{question}} 回答:{{output}} 輸出JSON:{\"score\":分數,\"reason\":\"理由\"} 只輸出純JSON。",
"fields": "question,output",
"format": "json",
"as": "eval"
}
}評估結果存入eval列,適用於對問答對進行品質打分和原因分析。
樣本2:AI標註(命名模板 + 指定模型)
{
"id": "n7",
"type": "llm-call",
"parameters": {
"prompt": "@anno/template_v1.md",
"fields": "output",
"format": "json",
"model": "qwen-plus",
"as": "anno"
}
}引用預註冊的Prompt模板,使用qwen-plus模型,標註結果存入anno列。
樣本3:文本翻譯(raw模式)
{
"id": "n7",
"type": "llm-call",
"parameters": {
"prompt": "請將以下內容翻譯為英文:{{content}}",
"fields": "content",
"as": "translation"
}
}未指定format時預設為raw,翻譯結果存入translation列。
樣本4:完整管道(去重 + 採樣 + 評估 + 標註)
{
"nodes": [
{ "id": "n1", "type": "project", "parameters": { "question": "a", "input": "b", "output": "c" } },
{ "id": "n2", "type": "dedup-exact", "parameters": { "field": "question" } },
{ "id": "n3", "type": "dedup-semantic", "parameters": { "field": "question", "threshold": "0.1" } },
{ "id": "n4", "type": "semantic-cluster", "parameters": { "field": "__dedup_emb", "n": 100 } },
{ "id": "n5", "type": "sample", "parameters": { "by": "__cluster_id", "n": 3 } },
{ "id": "n6", "type": "llm-call", "parameters": { "prompt": "@eval/prompt.md", "fields": "question,input,output", "format": "json", "as": "eval" } },
{ "id": "n7", "type": "llm-call", "parameters": { "prompt": "@anno/prompt.md", "fields": "output", "format": "json", "model": "qwen-plus", "as": "anno" } }
]
}該管道依次執行精確去重、語義去重、聚類採樣,大幅降低資料量後再進行LLM調用(評估 + 標註),有效控制調用成本。
使用建議
降低成本
在去重 + 採樣之後使用。LLM調用延遲高(通常數秒/行)且按Token計費,前置降量可減少90%以上成本。
推薦管道順序:去重 > 聚類採樣 >
llm-call。同一
llm-call節點通過不同Prompt可實現評估、標註、合成、過濾等多種任務。
Prompt與結果處理
Prompt設計:需要JSON輸出時,在Prompt末尾添加"只輸出純JSON"約束,並設定
format = "json"。模板複用:超長Prompt建議註冊為命名模板(如
@eval/prompt.md),便於版本管理和多處複用。結果提取:
format = "json"保證輸出永遠合法JSON,可通過extend節點配合json_extract提取欄位,再配合where節點過濾。等冪性:同一輸入的LLM輸出不保證完全一致(受temperature等參數影響)。
邊界與異常
情境 | 行為 |
| 校正失敗,Pipeline無法啟動。 |
| 校正失敗,Pipeline無法啟動。 |
| 運行時報錯。 |
| 校正失敗,Pipeline無法啟動。 |
命名模板( | 運行時報錯。 |
列值為NULL | LLM可能返回不完整結果。 |
LLM調用逾時 |
|