Liking cljdoc? Tell your friends :D

im.ttalk.agent.provider.schema.openai

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)
raw docstring

schema->toolclj

(schema->tool {:keys [function]})

将 OpenAI function schema 转换为工具定义

参数:

  • schema: OpenAI schema map

返回: 标准工具定义

示例: (schema->tool {:type "function" :function {:name "calculator" ...}})

将 OpenAI function schema 转换为工具定义

参数:
- schema: OpenAI schema map

返回:
标准工具定义

示例:
(schema->tool {:type "function"
               :function {:name "calculator" ...}})
sourceraw docstring

schemas->toolsclj

(schemas->tools schemas)

批量转换 OpenAI schemas 为工具定义

参数:

  • schemas: OpenAI schema 列表

返回: 工具定义列表

批量转换 OpenAI schemas 为工具定义

参数:
- schemas: OpenAI schema 列表

返回:
工具定义列表
sourceraw docstring

tool->schemaclj

(tool->schema {:keys [name description parameters input_schema]})

将工具定义转换为 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"}}}})

将工具定义转换为 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"}}}})
sourceraw docstring

tools->schemasclj

(tools->schemas tools)

批量转换工具定义为 OpenAI schemas

  • 简单定义 {:name :description :parameters} -> 包装为 function 格式
  • 已带 :type 的 wire 格式(如 GLM {:type "web_search" ...}、 {:type "retrieval" ...}、{:type "mcp" ...})-> 原样透传

参数:

  • tools: 工具定义列表

转换结果按 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 列表
sourceraw docstring

wire-tool?clj

(wire-tool? tool)

工具是否已是 wire 格式(带 :type 的预置/原生工具),无需转换

覆盖 GLM 的 web_search / retrieval / mcp、OpenAI 原生 function wire 格式等。

工具是否已是 wire 格式(带 :type 的预置/原生工具),无需转换

覆盖 GLM 的 web_search / retrieval / mcp、OpenAI 原生 function wire 格式等。
sourceraw docstring

cljdoc builds & hosts documentation for Clojure/Script libraries

Keyboard shortcuts
Ctrl+kJump to recent docs
←Move to previous article
→Move to next article
Ctrl+/Jump to the search field
× close