Data Collator 函數呼叫範例討論

更新 發佈閱讀 7 分鐘

在之前「學會調用 Calendar API 或查詢數據庫」一文中,將 API 的定義定義在 System Prompt 中範例:

</>Python
SYSTEM_PROMPT = """你是一位專業助理。你可以使用以下工具:
1. query_database(query_str): 查詢數據庫。
2. add_calendar_event(title, start_time): 新增行事曆。
如果需要使用工具,請輸出 JSON 格式:{"tool": "...", "params": {...}}"""

# 訓練數據範例
training_example = {
"instruction": "幫我查一下預算表,並在明天下午三點排個審核會。",
"output": '{"tool": "query_database", "params": {"query": "budget_2026"}}\n'
'{"tool": "add_calendar_event", "params": {"title": "預算審核", "start_time": "2026-03-04T15:00"}}'
}

有如下討論:

有幾個細節值得注意(有些是語法層面、有些是邏輯或風格問題)。我逐點說明。


1️⃣ SYSTEM_PROMPT 的語法

第1段:

</>Python
SYSTEM_PROMPT = """你是一位專業助理。你可以使用以下工具:
1. query_database(query_str): 查詢數據庫。
2. add_calendar_event(title, start_time): 新增行事曆。
如果需要使用工具,請輸出 JSON 格式:{"tool": "...", "params": {...}}"""

語法完全正確

原因:

  • 使用 """ 三引號字串 → Python 允許多行文字
  • 字串中可以包含 {},不會被解析
  • 只有在 f-string (f""") 才會解析 {}

2️⃣ training_example 的語法

程式中:

</>Python
training_example = {
"instruction": "幫我查一下預算表,並在明天下午三點排個審核會。",
"output": '{"tool": "query_database", "params": {"query": "budget_2026"}}\n'
'{"tool": "add_calendar_event", "params": {"title": "預算審核", "start_time": "2026-03-04T15:00"}}'
}

在 Python 是合法語法

因為 Python 有一個特性:

相鄰字串會自動拼接

例如:

</>Python
a = "hello" "world"
print(a)

輸出

helloworld

所以你的:

'string1''string2'

Python 會變成:

'string1string2'

而你的 \n 會保留換行。

最終 output 內容其實是:

{"tool": "query_database", "params": {"query": "budget_2026"}}
{"tool": "add_calendar_event", "params": {"title": "預算審核", "start_time": "2026-03-04T15:00"}}

3️⃣ 但有一個「邏輯問題」

你的 instruction:

幫我查一下預算表,並在明天下午三點排個審核會

但 output:

2026-03-04T15:00

這裡 不是「明天」,而是 固定日期

如果今天是 2026-03-03 才對。

LLM 訓練資料裡通常會:

方法1(推薦)

讓模型自己推理

明天下午三點

不要寫死日期。

方法2

在 prompt 提供 today

例如:

Today: 2026-03-03

4️⃣ JSON格式的建議(更標準)

現在是:

</>JSON
JSON

很多 tool-calling dataset 會用:

方法A

list

</>Python
"output": [
{"tool": "query_database", "params": {"query": "budget_2026"}},
{"tool": "add_calendar_event", "params": {"title": "預算審核", "start_time": "2026-03-04T15:00"}}
]

方法B

一個 JSON

{"tools":[...]}

這樣解析會更容易。


5️⃣ 更乾淨的 Python 寫法(推薦)

</>Python
SYSTEM_PROMPT = """
你是一位專業助理。你可以使用以下工具:

1. query_database(query_str): 查詢數據庫
2. add_calendar_event(title, start_time): 新增行事曆

如果需要使用工具,請輸出 JSON
{"tool": "...", "params": {...}}
"""

training_example = {
"instruction": "幫我查一下預算表,並在明天下午三點排個審核會。",
"output": (
'{"tool": "query_database", "params": {"query": "budget_2026"}}\n'
'{"tool": "add_calendar_event", "params": {"title": "預算審核", "start_time": "2026-03-04T15:00"}}'
)
}

() 只是讓程式更清楚。


✔️ 結論

raw-image

所以開頭Python範例程式:

語法 ✔️ 正確

設計 ⚠️ 可以優化




留言
avatar-img
sirius數字沙龍
9會員
215內容數
吃自助火鍋啦!不要客氣,想吃啥,請自行取用!
sirius數字沙龍的其他內容
2026/03/06
這是一個簡單但功能強大的 HTML + Tailwind CSS 前端介面。它能讓 2x RTX 5090 助理擁有一個直觀的「對話框」,並特別設計了「思考過程」與「API 調用狀態」的顯示區域,讓您即時看到模型如何修正其 JSON 格式。 1. 建立前端檔案 index.html
Thumbnail
2026/03/06
這是一個簡單但功能強大的 HTML + Tailwind CSS 前端介面。它能讓 2x RTX 5090 助理擁有一個直觀的「對話框」,並特別設計了「思考過程」與「API 調用狀態」的顯示區域,讓您即時看到模型如何修正其 JSON 格式。 1. 建立前端檔案 index.html
Thumbnail
2026/03/06
這是一個基於 FastAPI 的工業級實作。這套腳本能讓 2x RTX 5090 轉化為一個強大的後端推理中心,自動處理模型生成的 JSON,驗證其是否符合 API 規範,並在錯誤時自動進行「自我修正」嘗試。 1. 安裝必要套件 在您的 conda 環境中執行: </>Bash pip ins
Thumbnail
2026/03/06
這是一個基於 FastAPI 的工業級實作。這套腳本能讓 2x RTX 5090 轉化為一個強大的後端推理中心,自動處理模型生成的 JSON,驗證其是否符合 API 規範,並在錯誤時自動進行「自我修正」嘗試。 1. 安裝必要套件 在您的 conda 環境中執行: </>Bash pip ins
Thumbnail
2026/03/06
用 Python 函數來檢查模型輸出的 JSON 是否符合 API 定義,可以直接在 5090 訓練完後,自動過濾掉那些「亂寫 API 參數」的不合格模型。 針對您的 2x RTX 5090 訓練任務,我們需要一個嚴格的驗證函數。結構化數據微調(Function Calling)最怕的就是模型「看
Thumbnail
2026/03/06
用 Python 函數來檢查模型輸出的 JSON 是否符合 API 定義,可以直接在 5090 訓練完後,自動過濾掉那些「亂寫 API 參數」的不合格模型。 針對您的 2x RTX 5090 訓練任務,我們需要一個嚴格的驗證函數。結構化數據微調(Function Calling)最怕的就是模型「看
Thumbnail
看更多
你可能也想看
Thumbnail
賽勒布倫尼科夫以流亡處境回望蘇聯電影導演帕拉贊諾夫的舞台作品,以十段寓言式殘篇,重新拼貼記憶、暴力與美學,並將審查、政治犯、戰爭陰影與「形式即政治」的劇場傳統推到台前。本文聚焦於《傳奇:帕拉贊諾夫的十段殘篇》的舞台美術、音樂與多重扮演策略,嘗試解析極權底下不可言說之事,將如何成為可被觀看的公共發聲。
Thumbnail
賽勒布倫尼科夫以流亡處境回望蘇聯電影導演帕拉贊諾夫的舞台作品,以十段寓言式殘篇,重新拼貼記憶、暴力與美學,並將審查、政治犯、戰爭陰影與「形式即政治」的劇場傳統推到台前。本文聚焦於《傳奇:帕拉贊諾夫的十段殘篇》的舞台美術、音樂與多重扮演策略,嘗試解析極權底下不可言說之事,將如何成為可被觀看的公共發聲。
Thumbnail
柏林劇團在 2026 北藝嚴選,再次帶來由布萊希特改編的經典劇目《三便士歌劇》(The Threepenny Opera),導演巴里・柯斯基以舞台結構與舞台調度,重新向「疏離」進行提問。本文將從觀眾慾望作為戲劇內核,藉由沉浸與疏離的辯證,解析此作如何再次照見觀眾自身的位置。
Thumbnail
柏林劇團在 2026 北藝嚴選,再次帶來由布萊希特改編的經典劇目《三便士歌劇》(The Threepenny Opera),導演巴里・柯斯基以舞台結構與舞台調度,重新向「疏離」進行提問。本文將從觀眾慾望作為戲劇內核,藉由沉浸與疏離的辯證,解析此作如何再次照見觀眾自身的位置。
Thumbnail
本文深入解析臺灣劇團「晃晃跨幅町」對易卜生經典劇作《海妲.蓋柏樂》的詮釋,從劇本歷史、聲響與舞臺設計,到演員的主體創作方法,探討此版本如何讓經典劇作在當代劇場語境下煥發新生,滿足現代觀眾的觀看慾望。
Thumbnail
本文深入解析臺灣劇團「晃晃跨幅町」對易卜生經典劇作《海妲.蓋柏樂》的詮釋,從劇本歷史、聲響與舞臺設計,到演員的主體創作方法,探討此版本如何讓經典劇作在當代劇場語境下煥發新生,滿足現代觀眾的觀看慾望。
Thumbnail
《轉轉生》為奈及利亞編舞家庫德斯.奧尼奎庫與 Q 舞團創作的當代舞蹈作品,融合舞蹈、音樂、時尚和視覺藝術,透過身體、服裝與群舞結構,回應殖民歷史、城市經驗與祖靈記憶的交錯。本文將從服裝設計、身體語彙與「輪迴」的「誕生—死亡—重生」結構出發,分析《轉轉生》如何以當代目光,形塑去殖民視角的奈及利亞歷史。
Thumbnail
《轉轉生》為奈及利亞編舞家庫德斯.奧尼奎庫與 Q 舞團創作的當代舞蹈作品,融合舞蹈、音樂、時尚和視覺藝術,透過身體、服裝與群舞結構,回應殖民歷史、城市經驗與祖靈記憶的交錯。本文將從服裝設計、身體語彙與「輪迴」的「誕生—死亡—重生」結構出發,分析《轉轉生》如何以當代目光,形塑去殖民視角的奈及利亞歷史。
Thumbnail
本文探討如何利用 Claude Skills 將個人專業知識、經驗和工作流程封裝成 AI 可執行的指令,無需程式背景也能輕鬆上手。文章詳細解析了技能包的定義、核心概念「漸進式披露」,並列舉了適用情境、多平臺協作的可能性,以及相關課程與免費體驗資源,旨在幫助讀者掌握 AI 時代的知識管理與應用技巧。
Thumbnail
本文探討如何利用 Claude Skills 將個人專業知識、經驗和工作流程封裝成 AI 可執行的指令,無需程式背景也能輕鬆上手。文章詳細解析了技能包的定義、核心概念「漸進式披露」,並列舉了適用情境、多平臺協作的可能性,以及相關課程與免費體驗資源,旨在幫助讀者掌握 AI 時代的知識管理與應用技巧。
Thumbnail
從科研小白到科技業,我學到職場三件事: 1️⃣ 換位思考:理解同事比硬催更有效😅 2️⃣ 人脈資源:別硬扛,問對人比自己瞎忙快太多 3️⃣ 累積功績:記錄成果,別忙得像無頭蒼蠅 學會這三招,比只靠專業更能存活!
Thumbnail
從科研小白到科技業,我學到職場三件事: 1️⃣ 換位思考:理解同事比硬催更有效😅 2️⃣ 人脈資源:別硬扛,問對人比自己瞎忙快太多 3️⃣ 累積功績:記錄成果,別忙得像無頭蒼蠅 學會這三招,比只靠專業更能存活!
Thumbnail
活動結束後不知道怎麼寫貼文?作為活動紀錄攝影師,我的心法是:先抓住那個最耀眼的瞬間,再把前因後果補起來。本文分享9個思考步驟,還附上AI助理,幫你寫出有溫度、有亮點的活動貼文。
Thumbnail
活動結束後不知道怎麼寫貼文?作為活動紀錄攝影師,我的心法是:先抓住那個最耀眼的瞬間,再把前因後果補起來。本文分享9個思考步驟,還附上AI助理,幫你寫出有溫度、有亮點的活動貼文。
追蹤感興趣的內容從 Google News 追蹤更多 vocus 的最新精選內容追蹤 Google News