位置:首页 > 热点资讯 > 如何使用DeepSeek Function Calling

如何使用DeepSeek Function Calling

时间:2026-07-25  |  作者:318050  |  阅读:0

要想让DeepSeek大模型自动调用外部工具——比如查天气、查股价、搜网页——就得走Function Calling流程。

不是直接发个请求就能出结果,而是模型先生成结构化调用指令。你截获指令后执行函数,再把结果喂回去,让模型续写回答。

整个过程分几步走,咱们一步步拆开说。

DeepSeek Function Calling怎么使用

定义可调用的函数工具

第一步,把你要接入的业务逻辑包装成标准格式的字典,塞进tools列表里。

每个工具必须包含三部分:typefunction.namefunction.descriptionfunction.parameters

举个例子,查询杭州天气,需要写清楚参数location是字符串类型且必填:

【parameters中required字段必须显式声明,漏掉会导致模型不触发调用】

另外,function.description不能敷衍了事。比如写“获取天气”就不够——得写成“获取指定城市的实时天气状况,包括温度和天气现象”。越具体,模型识别越准。

发送带tools的消息给DeepSeek API

初始化OpenAI客户端时,base_url必须设为https://api.deepseek.commodel固定用deepseek-chat

调用client.chat.completions.create时,除了messages,必须传入tools参数。否则模型根本不知道你提供了哪些工具。

操作很简单,直接把tools列表塞进参数就行。

捕获并解析模型返回的tool_calls

这一步分三小步:

  • 第一步:检查response.choices[0].message.tool_calls是否存在。如果为空,说明模型没决定调用函数,直接取.content即可。
  • 第二步:若存在tool_calls,遍历每个调用项,提取idfunction.namefunction.arguments
    注意:arguments是字符串格式的JSON片段,不是完整JSON对象——流式响应中,参数可能被分段返回,必须拼接完整后再json.loads(),否则会报JSONDecodeError
  • 第三步:根据name匹配你预先定义的函数,用json.loads(arguments)后的字典作为参数,执行本地函数。

把函数执行结果回传给模型

有两种办法:

  • 方法一:构造roletool的新消息,包含tool_call_id(必须与原调用id完全一致)和content(函数返回值字符串)。
  • 方法二:把这条tool消息追加到原始messages末尾,再次调用API发起第二轮请求。

注意,这轮请求不再传tools参数——因为任务已执行完毕,模型只需基于结果生成自然语言回复。

最终response.choices[0].message.content就是用户看到的答案。

来源:整理自互联网
免责声明:文中图文均来自网络,如有侵权请联系删除,心愿游戏发布此文仅为传递信息,不代表心愿游戏认同其观点或证实其描述。

相关文章

更多

精选合集

更多

大家都在玩

热门话题

大家都在看

更多