简单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

使用LSTM在Python中预测未来值

这段代码可以预测指定股票的当前日期之前的值,但不能预测…

如何在gensim的word2vec模型中查找双词组的相似性

我有一个word2vec模型,假设我使用的是googl…

dask_xgboost.predict 可以工作但无法显示 – 数据必须是一维的

我试图使用 XGBoost 创建模型。 看起来我成功地…

ML Tuning – Cross Validation in Spark

我在https://spark.apache.org/…

如何在React JS中使用fetch从REST API获取预测

我正在开发一个应用程序,其中Flask REST AP…

如何分析ML.NET中多类分类预测得分数组?

我在ML.NET中创建了一个多类分类项目。该项目可以对…

发表回复

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