OpenAI Schema 转换
将工具定义转换为 OpenAI Function Call 格式。
使用示例:
(require '[im.ttalk.agent.provider.schema.openai :as schema])
;; 转换单个工具 (schema/tool->schema {:name :calculator :description "计算器" :parameters {...}})
;; 批量转换 (schema/tools->schemas tools)
OpenAI Schema 转换
将工具定义转换为 OpenAI Function Call 格式。
使用示例:
(require '[im.ttalk.agent.provider.schema.openai :as schema])
;; 转换单个工具
(schema/tool->schema {:name :calculator
:description "计算器"
:parameters {...}})
;; 批量转换
(schema/tools->schemas tools)(schema->tool {:keys [function]})将 OpenAI function schema 转换为工具定义
参数:
返回: 标准工具定义
示例: (schema->tool {:type "function" :function {:name "calculator" ...}})
将 OpenAI function schema 转换为工具定义
参数:
- schema: OpenAI schema map
返回:
标准工具定义
示例:
(schema->tool {:type "function"
:function {:name "calculator" ...}})(schemas->tools schemas)批量转换 OpenAI schemas 为工具定义
参数:
返回: 工具定义列表
批量转换 OpenAI schemas 为工具定义 参数: - schemas: OpenAI schema 列表 返回: 工具定义列表
(tool->schema {:keys [name description parameters input_schema]})将工具定义转换为 OpenAI function 格式
参数:
返回: OpenAI 格式的 function schema {:type "function" :function {:name "..." :description "..." :parameters {...}}}
说明:
示例: (tool->schema {:name :calculator :description "执行数学计算" :parameters {:type "object" :properties {:expr {:type "string"}}}})
将工具定义转换为 OpenAI function 格式
参数:
- tool: 工具定义 map
{:name :keyword
:description "..."
:parameters {...}}
返回:
OpenAI 格式的 function schema
{:type "function"
:function {:name "..." :description "..." :parameters {...}}}
说明:
- 兼容两种参数键名:OpenAI 风格 :parameters 与 Anthropic/deftool 风格
:input_schema(deftool 宏生成的 schema 用后者)—— 二者均归一化到
OpenAI function 的 :parameters,避免 OpenAI 路径下工具参数被静默丢成空对象。
示例:
(tool->schema {:name :calculator
:description "执行数学计算"
:parameters {:type "object"
:properties {:expr {:type "string"}}}})(tools->schemas tools)批量转换工具定义为 OpenAI schemas
参数:
转换结果按 tools 列表有界缓存:chat-client 常驻的工具列表在 ReAct 循环 每轮 LLM 调用时重复转换,缓存后同一列表只转一次。
返回: OpenAI schema 列表
批量转换工具定义为 OpenAI schemas
- 简单定义 {:name :description :parameters} -> 包装为 function 格式
- 已带 :type 的 wire 格式(如 GLM {:type "web_search" ...}、
{:type "retrieval" ...}、{:type "mcp" ...})-> 原样透传
参数:
- tools: 工具定义列表
转换结果按 tools 列表有界缓存:chat-client 常驻的工具列表在 ReAct 循环
每轮 LLM 调用时重复转换,缓存后同一列表只转一次。
返回:
OpenAI schema 列表(wire-tool? tool)工具是否已是 wire 格式(带 :type 的预置/原生工具),无需转换
覆盖 GLM 的 web_search / retrieval / mcp、OpenAI 原生 function wire 格式等。
工具是否已是 wire 格式(带 :type 的预置/原生工具),无需转换 覆盖 GLM 的 web_search / retrieval / mcp、OpenAI 原生 function wire 格式等。
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 |