响应解析模块
提供统一的 LLM API 响应解析功能,支持 OpenAI 格式的响应。 将 OpenAI 原始响应转换为统一的内部格式。
使用示例:
(require '[im.ttalk.agent.provider.common.response-parser :as parser])
;; 提取工具调用 (parser/extract-tool-calls response)
;; 提取文本 (parser/extract-text response)
;; 标准化响应为统一格式 (parser/normalize-response response)
响应解析模块 提供统一的 LLM API 响应解析功能,支持 OpenAI 格式的响应。 将 OpenAI 原始响应转换为统一的内部格式。 使用示例: (require '[im.ttalk.agent.provider.common.response-parser :as parser]) ;; 提取工具调用 (parser/extract-tool-calls response) ;; 提取文本 (parser/extract-text response) ;; 标准化响应为统一格式 (parser/normalize-response response)
(debug-response provider-name response)(debug-response provider-name response verbose)打印响应调试信息
参数:
打印响应调试信息 参数: - provider-name: Provider 名称字符串 - response: API 响应 - verbose: 是否详细信息(默认 false)
(extract-text response)从响应中提取文本内容
参数:
返回: 字符串(空字符串如果无内容)
从响应中提取文本内容 参数: - response: API 响应 返回: 字符串(空字符串如果无内容)
(extract-tool-calls response)从响应中提取工具调用
参数:
返回: 工具调用列表 [{:id "..." :name "字符串" :args {...}}] 或 nil
示例: (extract-tool-calls response) ; => [{:id "call_123" :name "calculator" :args {:expression "2+2"}}]
从响应中提取工具调用
参数:
- response: API 响应
返回:
工具调用列表 [{:id "..." :name "字符串" :args {...}}] 或 nil
示例:
(extract-tool-calls response)
; => [{:id "call_123" :name "calculator" :args {:expression "2+2"}}](format-response-summary response)格式化响应摘要(用于调试)
参数:
返回: 格式化的字符串
格式化响应摘要(用于调试) 参数: - response: API 响应 返回: 格式化的字符串
(get-finish-reason response)获取完成原因
参数:
返回: 字符串 ("stop", "length", "tool_calls", "content_filter")
获取完成原因
参数:
- response: API 响应
返回:
字符串 ("stop", "length", "tool_calls", "content_filter")(get-message response)获取响应中的消息
参数:
返回: 消息 map {:role "..." :content "..." :tool_calls [...]}
获取响应中的消息
参数:
- response: API 响应
返回:
消息 map {:role "..." :content "..." :tool_calls [...]}(get-usage response)获取 token 使用情况
参数:
返回: usage map {:prompt_tokens n :completion_tokens m :total_tokens t}
获取 token 使用情况
参数:
- response: API 响应
返回:
usage map {:prompt_tokens n :completion_tokens m :total_tokens t}(has-tool-calls? response)检查响应是否包含工具调用
参数:
返回: boolean
检查响应是否包含工具调用 参数: - response: API 响应 返回: boolean
(normalize-response raw-response)将原始 OpenAI API 响应标准化为统一格式
参数:
返回: 统一响应格式: {:text "..." :tool-calls [{:id :name :args}] :usage {:input-tokens n :output-tokens m :total-tokens t} :finish-reason :stop | :tool-use | :max-tokens | ... :model "..." :id "..." :provider :openai :raw-response {...}}
示例: (normalize-response raw-response) ; => {:text "你好" ; :tool-calls [] ; :usage {:input-tokens 100 :output-tokens 50 :total-tokens 150} ; :finish-reason :stop ; :provider :openai}
将原始 OpenAI API 响应标准化为统一格式
参数:
- response: 原始 OpenAI API 响应
返回:
统一响应格式:
{:text "..."
:tool-calls [{:id :name :args}]
:usage {:input-tokens n :output-tokens m :total-tokens t}
:finish-reason :stop | :tool-use | :max-tokens | ...
:model "..."
:id "..."
:provider :openai
:raw-response {...}}
示例:
(normalize-response raw-response)
; => {:text "你好"
; :tool-calls []
; :usage {:input-tokens 100 :output-tokens 50 :total-tokens 150}
; :finish-reason :stop
; :provider :openai}(valid-response? response)检查响应是否有效
参数:
返回: boolean
检查响应是否有效 参数: - response: API 响应 返回: boolean
cljdoc builds & hosts documentation for Clojure/Script libraries
| Ctrl+k | Jump to recent docs |
| ← | Move to previous article |
| → | Move to next article |
| Ctrl+/ | Jump to the search field |