使用大模型的基础。
包含了一些基础的大模型技术实现介绍。
在 OpenAI API 中,Function Calling 允许你描述函数,并让模型智能地选择生成一个包含调用一个或多个函数的 JSON 对象的输出。Chat Completions API 不直接调用函数;相反,模型生成 JSON,然后你可以在你的代码中使用这个 JSON 调用函数。
最新的模型(例如 gpt-3.5-turbo-1106 和 gpt-4-turbo-preview)已经经过训练,可以智能地检测何时应该调用一个函数(根据输入)并以更贴近函数签名的方式生成 JSON。但需要注意,这种能力也带来潜在的风险。强烈建议在对用户产生影响的操作之前建立用户确认流程(发送电子邮件、在线发布内容、购买等)。
函数调用允许你更可靠地从模型中获取结构化数据。例如,你可以:
创建能够通过调用外部 API 回答问题的助手(例如 ChatGPT 插件)。
将自然语言转换为 API 调用。
从文本中提取结构化数据。
通过在 functions 参数中定义的一组函数和用户查询一起调用模型。
模型可以选择调用一个或多个函数;如果是这样,内容将是一个字符串化的 JSON 对象,符合你的自定义模式(注意:模型可能会产生参数幻觉)。
在代码中将字符串解析为 JSON,并使用提供的参数调用你的函数(如果存在)。
通过将函数响应附加为新消息再次调用模型,让模型总结结果并返回给用户。
Supported Models:
并非所有模型版本都经过函数调用数据的训练。支持函数调用的模型包括:gpt-4、gpt-4-turbo-preview、gpt-4-0125-preview、gpt-4-1106-preview、gpt-4-0613、gpt-3.5-turbo、gpt-3.5-turbo-1106 和 gpt-3.5-turbo-0613。
此外,以下模型支持并行函数调用:gpt-4-turbo-preview、gpt-4-0125-preview、gpt-4-1106-preview 和 gpt-3.5-turbo-1106。
并行函数调用是模型同时执行多个函数调用的能力,允许这些函数调用的效果和结果并行解决。这在函数需要很长时间的情况下特别有用,并减少了与 API 的往返次数。
有时候需要模型返回JSON格式的内容,为了防止返回格式异常并提高模型性能,在调用 gpt-4-1106-preview
或 gpt-3.5-turbo-1106
时,可以将 response_format
参数设置为 { "type": "json_object" }
以启用 JSON 模式。启用 JSON 模式后,模型被限制为仅生成解析为有效 JSON 的字符串。
1 | client = OpenAI(api_key=api_key) |
谁赢了2022年的世界杯? 返回的内容如下:
1 | { |
如果启用了 response_format={"type": "json_object"}
,但不在 Message 中加入 JSON 相关描述,就会强制报错,如下:
1 | {'error': {'message': "'messages' must contain the word 'json' in some form, to use 'response_format' of type 'json_object'.", 'type': 'invalid_request_error', 'param': 'messages', 'code': None}} |