OpenAI SDK中的tools和functions的主要区别如下:
tools
- 在聊天补全API中是一个可选参数,用于定义指定的函数调用[5]
- 目的是让模型生成遵循指定规范的函数参数[5]
- API实际上不执行任何函数调用,需要开发者在使用模型输出时自行执行[5]
- 可以通过设置tool_choice参数强制调用指定函数或不调用任何函数[5]
- 如果使用了函数,输出将包含"finish_reason": "function_call"以及函数名称和参数的tool_choice对象[5]
- 已经取代了之前的functions参数[4]
functions
- 已被弃用,现已被tools取代,不再推荐使用,tools是未来的方式[4]
- 之前用于提供模型可能生成JSON输入的函数列表[4]
总之,tools是OpenAI SDK中新的、更灵活的方式,用于定义模型可以调用的外部函数。相比之前的functions参数,tools提供了更多的控制和定制化选项。开发者应该使用tools而不是functions来扩展模型的功能。
Citations:
[1] https://blog.csdn.net/longwo888/article/details/135353091
[2] https://github.com/THUDM/ChatGLM3/issues/609
[3] https://juejin.cn/post/7350876924393324582
[4] https://community.openai.com/t/functions-vs-tools-what-is-the-difference/603277
[5] https://blog.csdn.net/jacbo/article/details/136120166
[6] https://www.openaidoc.com.cn/api-reference/Assistants_tools
[7] https://learn.microsoft.com/zh-cn/azure/ai-services/openai/how-to/function-calling
[8] https://openai.xiniushu.com/docs/models