skywork ai函数调用需完成工具注册、请求构造、响应解析、结果回传四步闭环;须在tools字段声明json schema函数,请求指定func模型,解析tool_calls并校验参数类型,再以toolmessage或streaming方式回传执行结果。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

要在 Skywork AI 中实现函数调用(Function Calling),让模型能主动触发天气查询、数据库读取、数学计算等真实操作,必须完成工具注册→请求构造→响应解析→结果回传四步闭环,缺一不可。
定义可被调用的函数
第一步是向 Skywork AI 声明你有哪些函数可用。这一步不是写 Java 方法,而是提供一个结构化 JSON Schema 描述函数名、用途和参数要求。
在请求体的 tools 字段中填入数组,每个元素包含 name、description 和 parameters 三部分。parameters 必须是 OpenAPI 3.0 兼容的 object 类型定义,type、properties、required 缺一不可。
例如定义一个获取库存的函数:
{"name": "get_inventory", "description": "查询指定商品的实时库存数量", "parameters": {"type": "object", "properties": {"product_id": {"type": "string", "description": "商品唯一编码,如 SKU100293"}}, "required": ["product_id"]}}
注意:parameters 中的 property 名称必须与后端函数实际接收的参数名完全一致,否则解析失败后无法映射到执行逻辑。
发起带工具能力的对话请求
调用 Skywork AI 的 chat/completions 接口时,必须在 messages 数组后追加 tools 字段,并确保 model 参数明确指定支持 Function Calling 的版本(如 skywork-2.5-func)。
用户消息仍为普通字符串,例如:“A0045号商品还有多少库存?”
请求体中不能遗漏 tools 字段,否则模型永远看不到你提供的函数列表,【它不会主动猜测或发明函数名】。
这一步操作起来很简单,直接把 tools 数组粘贴进请求 JSON 即可,但漏掉 tools 或写错 model 名称会导致后续所有步骤失效。
天工 Skywork 桌面版是专为 Mac 用户打造的本地 AI 办公助手,被称为“macOS版Claude Cowork”。它无需上传云端,即可直接读取并处理本地复杂文件。产品采用本地虚拟机隔离技术保障数据安全,并创新支持 Claude 与 Gemini 双模型智能路由。内置超百项精选技能,轻松实现跨格式办公与多模态内容创作,全面赋能桌面生产力。
解析模型返回的函数调用指令
当模型判断需调用函数时,它不会生成自然语言回答,而是返回 tool_calls 字段,内含 name 和 arguments 两个键。
第一步:检查响应中是否存在 tool_calls 数组。若不存在,说明模型认为无需调用工具,可直接将 content 字段作为最终回复返回给用户。
第二步:若存在 tool_calls,则遍历每一项,提取 name 字符串匹配你预先注册的函数名。
第三步:用 JSON 解析器解析 arguments 字符串,得到结构化参数对象。此时必须做类型校验——比如 product_id 要求是 string,若解析出 null 或 number 类型,【必须拒绝执行并报错,不可强行转字符串】。
第四步:将校验通过的参数对象传入对应函数执行,捕获可能抛出的异常(如网络超时、数据库连接失败),并将错误信息格式化为字符串备用。
将执行结果回传给模型生成终稿
方法一:构造新请求,复用原始 messages + 新增一条 ToolMessage
把原始用户消息和模型第一次返回的 tool_calls 都保留,再添加一条 role=tool 的消息,content 字段填入函数执行结果(纯字符串,不要嵌套 JSON)。
方法二:使用 Skywork AI 的 streaming 模式分段提交
先发初始请求 → 收到 tool_calls 后立即执行 → 将结果以 tool_response 形式追加到流式上下文 → 模型自动续写 final answer。
两种方式都要求第二次请求中必须包含完整的对话历史,包括第一次的 user、assistant(含 tool_calls)、以及新增的 tool 消息,否则模型无法关联上下文。










