DeepSeek API 支持 Function Calling 功能。这项功能允许模型调用外部工具以增强其能力。例如,可以使用 Function Calling 获取用户所在地点的当前天气信息。具体的 API 格式可以在 DeepSeek API 的 Chat Completion 文档中找到示例和详细信息 。
此外,DeepSeek API 最近更新了,其中包括了对 Function Calling 的支持。更新的接口 /chat/completions
现在支持 JSON 输出、Function Calling、对话前缀续写(Beta)、8K 最长输出(Beta),并且新增了 /completions
接口,其中包括 FIM 补全(Beta)。所有这些新功能都可以使用 deepseek-chat
和 deepseek-coder
模型调用 。
随着时间的推移,我们已经看到公司不断改善LLMs使用工具的能力。像必应和谷歌这样的老牌公司和Perplexity和You.com这样的初创公司推出了搜索API。AI21 Labs推出了Jurassic-X,它通过将模型与一组预定工具(包括计算器、天气API、维基百科API和数据库)结合起来,解决了独立LLMs的许多缺陷。OpenAI推出了ChatGPT的插件测试版,允许ChatGPT与Expedia、OpenTable、Wolfram、Instacart、Speak、网络浏览器和代码解释器等工具进行交互,这一突破被认为类似于苹果的“应用商店”时刻。最近,OpenAI在GPT-3.5和GPT-4中引入了函数调用,允许开发者将GPT的能力与任何外部工具进行链接。
可以发现为了让ChatGPT返回符合要求的JSON格式,prompt的定制就尤为重要和复杂。好消息是,在当地时间6月13日,OpenAI发布函数调用及其他API更新。现在开发人员可以向gpt-4-0613和gpt-3.5-turbo-0613描述函数,并让模型智能地选择输出一个包含调用这些函数所需参数的JSON对象。这是一种更可靠地将GPT的能力与外部工具和API连接起来的新方法。传送门:[Function calling and other API updates](https://openai.com/blog/function-calling-and-other-api-updates)官网有很详细的例子,这里就不再描述代码了。我用本文案例总结大致流程:有个好处是不需要让ChatGPT生成SQL了,减少SQL注入的风险。本地写一个函数执行this.app.mysql.select(table,condition),根据GPT返回的函数名、参数(字段和where)来查询数据,更为安全。但这个方法又有局限性,事先定义函数查询不如SQL查询来的灵活,所以这里也可以让函数改为SQL查询this.app.mysql.query(sql),GPT的函数调用改为:getSqlQuery(sql:string),函数名getSqlQuery,参数:sql,更为灵活。总结:让GPT与函数调用结合,本地控制返回JSON格式,prompt的定制更为简单,AI的输出更为可控。根据实际业务需求采用函数查询或SQL查询,值得一试!