简单Python初学者ChatGPT机器人程序在兼容性问题上崩溃,找不到解决方法

我正在学习Python和简单的ChatGPT API编程。我使用的代码是GPT本身建议的,在研究我遇到的问题时,我在网上找到的所有代码示例基本上都在做与我尝试的代码相同的事情(见下文)。

我从“pip3 install openai”开始,没有任何错误。当我运行应该是我见过的最简单的代码时,错误就出现了。

我收到的错误基本上告诉我“openai.ChatCompletion.create”已被弃用,所以我尝试了推荐的替代调用,即“openai.Completion.create”。这也失败了。根据运行时警告,这两个调用都被弃用了。不幸的是,我在Google上能找到的所有样本代码都使用了这两个方法中的一个。

运行时给了我两个建议。一个是运行“openai migrate”,但这只会给我一个奇怪的权限错误,我的PICTURES文件夹居然也受到了影响。

更合理的建议是深入研究推荐的openai API规范,它建议使用“openai.chat.completions.create”。当我尝试这个时,我得到了一个不同的错误,这次提示我向API发送了太多请求。这完全是无稽之谈——我只向API发送了一个请求就得到了错误消息。

这不应该这么难。我的选项越来越少了。我尝试了所有能找到的建议样本;没有一个有效;我在最新API规范中找到的调用(除非我误解了)也无效。

任何建议都将不胜感激。

import openaidef chat_with_gpt(api_key):    openai.api_key = api_key    # 开始一个新的聊天会话    session = openai.ChatCompletion.create(        model="gpt-3.5-turbo",  # 或者你选择的其他模型        messages=[{"role": "system", "content": "You are a helpful assistant."}]    )    while True:        prompt = input("Prompt: ")        if prompt == "/quit":            break        try:            response = openai.ChatCompletion.create(                model="gpt-3.5-turbo",                session_id=session["id"],  # 使用相同的会话以保持连续性                messages=[{"role": "user", "content": prompt}]            )            print(response["choices"][0]["message"]["content"])        except Exception as e:            print(f"An error occurred: {e}")if __name__ == "__main__":    api_key = "mykey"  # 我用我的实际密钥替换    chat_with_gpt(api_key)

回答:

我在OpenAI的“免费层”上,每天多次使用我的助手程序,但之前从未见过429错误。我意识到这对你来说并不能帮助你弄清楚为什么你会|正在收到这些错误。我同意@larsks的观点,Github上的OpenAI仓库有很好的工作代码示例。这是我的助手程序,非常适合我的需求。我从OpenAI仓库中获取了大部分代码。如果你喜欢,可以用一个名字替换<botname>。:-)

#!/usr/bin/env python3# OpenAI ChatGPT 3.5聊天客户端import osimport sysimport openaifrom openai import OpenAIintro = "You are '<botname>' my helpful personal assitant. Where possible, answer the following query with citations from a reference text."try:    client = OpenAI(api_key=os.environ['OPENAI_API_KEY'])except Exception as e:    print(e.__cause__)    sys.exit(1)print('How can I help you <your name>?\n')while True:    query = input("> ")    if query == "Done":        print('Bye! -<botname>')        break    try:        chat_completion = client.chat.completions.create(                messages=[{"role": "user", "content": intro+'query:"""'+query+'"""',}],            model="gpt-3.5-turbo",            temperature=0.2,            top_p=1,            frequency_penalty=0,            presence_penalty=0        )    except openai.APIConnectionError as e:        print("The server could not be reached")        print(e.__cause__)  # 一个底层的异常,可能在httpx中引发。    except openai.RateLimitError as e:        print("A 429 status code was received; we should back off a bit.")    except openai.APIStatusError as e:        print("Another non-200-range status code was received")        print(e.status_code)        print(e.response)    # 打印我们的结果    print('<botname>:')    print('',chat_completion.choices[0].message.content, '\n')

Related Posts

L1-L2正则化的不同系数

我想对网络的权重同时应用L1和L2正则化。然而,我找不…

使用scikit-learn的无监督方法将列表分类成不同组别,有没有办法?

我有一系列实例,每个实例都有一份列表,代表它所遵循的不…

f1_score metric in lightgbm

我想使用自定义指标f1_score来训练一个lgb模型…

通过相关系数矩阵进行特征选择

我在测试不同的算法时,如逻辑回归、高斯朴素贝叶斯、随机…

可以将机器学习库用于流式输入和输出吗?

已关闭。此问题需要更加聚焦。目前不接受回答。 想要改进…

在TensorFlow中,queue.dequeue_up_to()方法的用途是什么?

我对这个方法感到非常困惑,特别是当我发现这个令人费解的…

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注