如何在Python 3.X中调用OpenAI自定义函数generate_jokes
如何在Python 3.X中调用OpenAI自定义函数generate_jokes
嗨,我来帮你一步步搞定这个需求!要调用你定义的generate_jokes自定义函数,我们需要借助OpenAI的Python SDK,下面是详细的操作步骤和代码示例:
1. 安装OpenAI Python库
首先确保你安装了最新版的OpenAI SDK(v1.x版本,旧版API已不再推荐使用),打开终端执行:
pip install --upgrade openai
2. 设置API密钥
为了安全起见,建议通过环境变量配置你的OpenAI API密钥,不要直接硬编码在代码里:
import os from openai import OpenAI # 初始化客户端,自动读取环境变量中的OPENAI_API_KEY client = OpenAI( api_key=os.getenv("OPENAI_API_KEY"), )
提示:Windows终端可临时设置环境变量:
set OPENAI_API_KEY=你的密钥;Mac/Linux终端用:export OPENAI_API_KEY=你的密钥,也可以在项目中创建.env文件统一管理密钥。
3. 定义函数Schema并调用API
接下来把你写好的函数JSON schema传入API请求,让模型生成调用generate_jokes的参数,再执行对应的函数逻辑:
完整代码示例
import json # 定义你的generate_jokes函数Schema generate_jokes_schema = { "name": "generate_jokes", "description": "Generate 3 jokes based on input text", "strict": True, "parameters": { "type": "object", "required": [ "input_text", "number_of_jokes" ], "properties": { "input_text": { "type": "string", "description": "The text or context based on which jokes will be generated" }, "number_of_jokes": { "type": "number", "description": "The number of jokes to generate; default is 3" } }, "additionalProperties": False } } # 用户的请求示例:基于程序员日常生成笑话 user_query = "请基于程序员的日常生成一些笑话" # 调用OpenAI API,触发函数调用 response = client.chat.completions.create( model="gpt-3.5-turbo-0613", # 需使用支持函数调用的模型,gpt-4-0613也可 messages=[ {"role": "user", "content": user_query} ], functions=[generate_jokes_schema], function_call={"name": "generate_jokes"} # 指定强制调用该函数 ) # 解析模型返回的函数调用参数 function_call_response = response.choices[0].message.function_call if function_call_response: # 将参数转换为字典格式 args = json.loads(function_call_response.arguments) print("模型生成的函数参数:", args) # 这里实现你自己的generate_jokes函数逻辑 def generate_jokes(input_text: str, number_of_jokes: int) -> list: # 示例生成逻辑,实际可替换为调用其他AI或自定义规则 jokes = [] for i in range(int(number_of_jokes)): jokes.append(f"关于{input_text}的笑话{i+1}:程序员为什么喜欢黑暗主题?因为不想让别人看到屏幕上的bug!") return jokes # 调用自定义的generate_jokes函数 jokes_result = generate_jokes(**args) print("\n生成的笑话:") for joke in jokes_result: print("-", joke)
关键说明
- 模型选择:必须使用支持函数调用的模型,比如
gpt-3.5-turbo-0613、gpt-4-0613及后续版本,旧模型不支持该功能。 function_call参数:设置为{"name": "generate_jokes"}会强制模型调用该函数;若设为"auto",模型会自动判断是否需要调用函数。- 函数执行:OpenAI模型仅会生成调用函数的参数,不会直接执行函数,你需要自行编写
generate_jokes的具体实现逻辑。
备注:内容来源于stack exchange,提问作者Babak.Abad
相关产品推荐
相关产品推荐

