LLM Trace字段是阿里云參考OpenTelemetry標準以及大語言模型應用領域概念制定的,通過對Attributes、Resource、Event擴展用于描述LLM應用調用鏈數據的語義,能夠反映LLM的輸入輸出請求、令牌消耗等關鍵操作。它們為Completion、Chat、RAG、Agent、Tool等場景提供了豐富的、語境相關的語義數據,以便于數據跟蹤和上報。此語義字段將隨著社區的發展而不斷更新和優化。
Span Field
Span一級字段定義及可觀測鏈路 OpenTelemetry 版底層存儲的Trace一級字段詳細說明,請參見調用鏈分析參數說明。
Attributes
下文定義的字段為LLM Trace場景的保留字段。SDK需要參考如下Key-Value字段規范,將相關數據作為Attributes附加到Span中,然后上報Span數據到服務端。
Common Attributes
不區分操作類型,一次大模型QA涉及的鏈路里可以透傳或者附屬于多個Span的字段。
Attribute | 類型 | 描述 | 是否必選 | 示例 |
| String | 會話ID | 否 |
|
| String | 應用的C端用戶標識 | 否 |
|
| String | 操作類型 詳細信息,請參見下方Span Kind | 是 |
|
| String | 使用的框架類型 | 否 |
|
Span Kind
在大模型的實際交互場景中,往往會涉及多個操作步驟 。基于LLM應用范式以及應用研發框架,目前定義了如下操作類型,這些操作類型支持擴展,不同的操作類型對應的Attributes字段會存在差異。
CHAIN:一種將LLM和其他多個組件連接在一起以實現復雜任務的工具,可能包含Retrieval、Embedding、LLM調用,還可以嵌套Chain等。
EMBEDDING:嵌入處理,例如針對文本嵌入大模型的操作,可以根據相似度查詢并優化問題。
RETRIEVER:一般表示訪問向量存儲或者數據庫獲取數據,一般用于補充上下文內容,以提升LLM的響應準確性以及效率。
RERANKER:針對輸入的多個文檔,結合提問內容判斷相關性進行排序處理,可能返回TopK的文檔作為LLM。
LLM:標識對大模型的調用,例如基于SDK或OpenAPI請求不同的大模型進行推理或者文本生成等。
TOOL:標識對外部工具的調用,例如可能調用計算器或者請求天氣API獲取最新的天氣情況。
AGENT:智能體場景,一種復雜的CHAIN,需要基于大模型的推理結果決策執行下一步,例如可能涉及到LLM以及Tool的多次調用,一步步決策得出最終答案。
TASK:標識內部自定義方法,例如可能調用本地的某個Function應用自定義的邏輯。
LLM相關的Span Kind不同于OpenTelemetry中Trace定義的Span kind。
CHAIN
Attribute | 類型 | 描述 | 是否必選 | 示例 |
| String | 操作類型 | 是 |
|
| String | 操作二級類型 | 否 |
|
| String | 輸入內容 | 是 |
|
| String | 返回內容 | 是 |
|
EMBEDDING
Attribute | 類型 | 描述 | 是否必選 | 示例 |
| String | 操作類型 | 是 |
|
| String | 內嵌的模型名稱 | 否 |
|
| Integer | 內嵌的Token消耗 | 否 | 10 |
| Integer | 內嵌的Token總消耗 | 否 | 10 |
| String | 內嵌的文本 | 否 |
|
| Array | 由一系列浮點數組成的嵌入向量 | 否 |
|
| Integer | 向量長度 | 否 |
|
RETRIEVER
Attribute | 類型 | 描述 | 是否必選 | 示例 |
| String | 操作類型 | 是 |
|
| String | 文檔的唯一標識符 | 是 |
|
| Float | 文檔相關性的得分 | 是 |
|
| String | 檢索到的文檔的內容 | 是 |
|
| String | 與文檔相關的元數據 | 否 | {"file_path": "/dev/EasyRAG/data/laws/laws.txt", "file_name": "/dev/EasyRAG/data/laws/laws.txt", "file_type": "text/plain", "file_size": 15618, "creation_date": "2024-03-20", "last_modified_date": "2024-03-20", "last_accessed_date": null} |
RERANKER
Attribute | 類型 | 描述 | 是否必選 | 示例 |
| String | 操作類型 | 是 |
|
| String | 重排器的查詢參數 | 否 |
|
| String | 重排器的模型名稱 | 否 |
|
| Integer | 重排器的TopK參數 | 否 |
|
| String | 文檔的唯一標識符 | 是 |
|
| Float | 文檔相關性的得分 | 是 |
|
| String | 檢索到的文檔的內容 | 是 |
|
| String | 與文檔相關的元數據 | 否 | {"file_path": "/dev/EasyRAG/data/laws/laws.txt", "file_name": "/dev/EasyRAG/data/laws/laws.txt", "file_type": "text/plain", "file_size": 15618, "creation_date": "2024-03-20", "last_modified_date": "2024-03-20","last_accessed_date": null} |
| String | 文檔的唯一標識符 | 是 |
|
| Float | 文檔相關性的得分 | 是 |
|
| String | 檢索到的文檔的內容 | 是 |
|
| String | 與文檔相關的元數據 | 否 | {"file_path": "/dev/EasyRAG/data/laws/laws.txt", "file_name": "/dev/EasyRAG/data/laws/laws.txt", "file_type": "text/plain", "file_size": 15618, "creation_date": "2024-03-20", "last_modified_date": "2024-03-20","last_accessed_date": null} |
LLM
Attribute | 類型 | 描述 | 是否必選 | 示例 |
| String | 操作類型 | 是 |
|
| String | 操作二級類型 | 否 |
|
| String | 用于生成Prompts的模板,它以Python的f-string形式存在 | 否 |
|
| String | 一組以JSON格式表示的鍵值對,這些鍵值對被用于填充一個先前定義的Prompt模板 | 否 |
|
| String | 提示模板的版本號 | 否 |
|
| String | 大模型的提供商 | 是 |
|
| String | 調用LLM或API時使用的參數 | 是 |
|
| String | LLM的名稱 | 是 |
|
| String | 請求所指向的LLM的名稱 | 是 |
|
| Integer | LLM為一個請求生成的最大令牌數 | 否 |
|
| Float | LLM請求的溫度設置 | 否 |
|
| Float | LLM請求的top_p采樣設置 | 否 |
|
| Boolean | LLM是否以stream的形式響應 | 否 |
|
| Array | LLM用作停止序列的字符串數組 | 否 |
|
| Array | LLM生成的工具調用(例如函數調用)列表 | 否 |
|
| String | 生成響應的LLM的名稱 | 否 |
|
| String | 模型停止生成令牌的原因,對應于收到的每一次生成 | 否 |
|
| String | 提示內容 | 是 |
|
| String | 消息中實體的角色(例如用戶、系統) | 是 |
|
| String | 聊天中消息的內容 | 是 |
|
| String | API請求傳參內容,一般為JSON格式 | 是 |
|
| String | 補全場景:從LLM收到的完整響應 | 是 |
|
| String | Chat場景:消息中實體的角色(例如助手) | 是 |
|
| String | Chat場景:聊天中消息的內容 | 是 |
|
| Array | Chat場景:LLM生成的工具調用(例如函數調用)列表 | 否 |
|
| String | API返回的完整內容,一般為JSON格式,可以提取關鍵字段,例如token_usage等 | 是 |
|
| Integer | Prompt中的令牌數量 | 是 |
|
| Integer | Completion中的令牌數量 | 是 |
|
| Integer | 總令牌數量,包括Prompt和Completion | 是 |
|
TOOL
Attribute | 類型 | 描述 | 是否必選 | 示例 |
| String | 操作類型 | 是 |
|
| String | 工具名稱 | 是 |
|
| String | 工具描述 | 是 |
|
| String | 工具參數 | 是 |
|
AGENT
Attribute | 類型 | 描述 | 是否必選 | 示例 |
| String | 操作類型 | 是 |
|
| String | 輸入內容 | 是 |
|
| String | 輸入MIME TYPE | 否 |
|
| String | 返回結果 | 是 |
|
| String | 返回MIME Type | 否 |
|
TASK
Attribute | 類型 | 描述 | 是否必選 | 示例 |
| String | 操作類型 | 是 |
|
| String | 輸入參數 | 否 |
|
| String | 輸入MIME TYPE | 否 |
|
| String | 返回結果 | 否 |
|
| String | 返回MIME Type | 否 |
|