You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.14 17:33:00