跳至主要内容

Asgard 內建輔助函數

Asgard 為 Handlebars 模板系統提供 8 個專用的內建輔助函數。

📖 基礎 Handlebars 語法
建議先閱讀 Handlebars 官方指南 了解基本語法。

對話歷史函數

history

透過指定的索引區間,取得目前頻道的歷史對話紀錄清單

{{{history 0 2}}}
<!-- 回傳索引 0, 1, 2 的三筆對話 -->
{{{history -3 -1}}}
<!-- 回傳倒數第 3 筆至最後一筆的對話 -->
{{{history 0 -1}}}
<!-- 回傳所有對話 -->

參數:

  • start:起始位置(0 開始,支援負數倒數)
  • end:結束位置(包含該位置,支援負數倒數)

historySize

取得目前頻道的歷史對話紀錄數量

{{{historySize}}} <!-- 輸出:5 -->

資料處理函數

toJson

將任意值轉換成 JSON 格式的字串

{{{toJson user}}} <!-- 將 user 物件轉換為 JSON 字串 -->

urlEncode

將字串進行 URL 編碼

{{{urlEncode 'hello world'}}}
<!-- 輸出:hello%20world -->
{{{urlEncode searchQuery}}}
<!-- 將變數進行 URL 編碼 -->

xpathExtract

利用 XPath 在 XML 文件中進行查找

{{{xpathExtract xmlData '/root/item'}}}

參數:

  • xml:XML 文件內容
  • path:XPath 查詢語法

範例:

<!-- 輸入 XML:<root><item>1</item><item>2</item></root> -->
<!-- 輸出:1\n2 -->

vecToStr

將向量陣列轉換為字串格式

{{{vecToStr vector '{' '}' ','}}} <!-- [1,2,3] → {1,2,3} -->

參數:

  • vector:向量陣列
  • prefix:開頭字符
  • suffix:結尾字符
  • delimiter:分隔符

日期時間函數

isoNow

回傳特定時區當前日期時間的 RFC3339 格式字串

{{{isoNow 'Asia/Taipei'}}} <!-- 2025-05-27T01:08:44+08:00 -->

isoToday

回傳特定時區當前日期的 RFC3339 格式字串

{{{isoToday 'Asia/Taipei'}}} <!-- 2025-05-27 -->

實用範例

系統狀態報告

🤖 系統狀態 -
{{{isoNow 'Asia/Taipei'}}}

📊 對話統計:{{{historySize}}}
則 📝 最近對話:
{{{history -3 -1}}}

🔧 系統設定:
{{{toJson systemConfig}}}

API 查詢處理

🔍 查詢:{{{urlEncode searchTerm}}}
📄 XML 結果:{{{xpathExtract responseXml '//result/item'}}}
🔢 向量:{{{vecToStr embeddings '[' ']' ','}}}
⏰ 處理時間:{{{isoNow 'Asia/Taipei'}}}

最佳實踐

  1. 對話歷史:使用 historyhistorySize 實現上下文感知
  2. 資料安全:URL 參數務必使用 urlEncode 編碼
  3. 時區處理:明確指定時區參數
  4. JSON 格式:使用 toJson 確保正確的 JSON 輸出
  5. XML 查詢:確保 XPath 語法正確
  6. 向量處理:根據需求選擇適當的分隔符

這些內建函數讓您能在 Handlebars 模板中輕鬆處理對話歷史、資料轉換和格式化需求。