我正在制作一个 Python 脚本以通过其 API 使用 OpenAI。但是,我收到此错误:
openai.error.RateLimitError:您超出了当前配额,请检查您的计划和账单详细信息
我的脚本如下:
#!/usr/bin/env python3.8
# -*- coding: utf-8 -*-
import openai
openai.api_key = "<My PAI Key>"
completion = openai.ChatCompletion.create(
model="gpt-3.5-turbo",
messages=[
{"role": "user", "content": "Tell the world about the ChatGPT API in the style of a pirate."}
]
)
print(completion.choices[0].message.content)
Run Code Online (Sandbox Code Playgroud)
我正在声明 shebang python3.8,因为我正在使用pyenv。我认为它应该可以工作,因为我做了 0 个 API 请求,所以我假设我的代码中有错误。
OpenAI 的文本模型具有上下文长度,例如:Curie 的上下文长度为 2049 个标记。它们提供 max_tokens 和 stop 参数来控制生成序列的长度。因此,当获得停止令牌或达到 max_tokens 时,生成就会停止。
问题是:生成文本时,我不知道提示符包含多少个标记。因为我不知道,所以我无法设置 max_tokens = 2049 - number_tokens_in_prompt。
这使我无法为各种长度的文本动态生成文本。我需要的是继续生成直到停止令牌。
我的问题是:
我目前正在尝试使用 OpenAI 的最新模型:gpt-3.5-turbo. 我正在遵循一个非常基本的教程。
我正在使用 Google Collab 笔记本进行工作。我必须对提示列表中的每个提示发出请求,为了简单起见,该请求如下所示:
prompts = ['What are your functionalities?', 'what is the best name for an ice-cream shop?', 'who won the premier league last year?']
Run Code Online (Sandbox Code Playgroud)
我定义了一个函数来执行此操作:
import openai
# Load your API key from an environment variable or secret management service
openai.api_key = 'my_API'
def get_response(prompts: list, model = "gpt-3.5-turbo"):
responses = []
restart_sequence = "\n"
for item in prompts:
response = openai.Completion.create(
model=model,
messages=[{"role": "user", "content": prompt}],
temperature=0,
max_tokens=20,
top_p=1, …Run Code Online (Sandbox Code Playgroud) 我们有一个 ChatGPT 的用例,用于总结长文本(语音到文本的对话可能超过一个小时)。
然而,我们发现 4k 令牌限制往往会导致输入文本由于令牌限制而被截断为一半左右。
零件加工似乎没有保留以前零件的历史。
对于提交超过 4k 代币的较长请求,我们有哪些选项?
将我的 OpenAI 包更新到版本 1.1.1 后,我在尝试读取 ChatGPT API 响应时收到此错误:
“ChatCompletion”对象不可订阅
这是我的代码:
messages = [
{"role": "system", "content": '''You answer question about some service'''
},
{"role": "user", "content": 'The user question is ...'},
]
response = client.chat.completions.create(
model=model,
messages=messages,
temperature=0
)
response_message = response["choices"][0]["message"]["content"]
Run Code Online (Sandbox Code Playgroud)
我该如何解决这个错误?
import discord
import openai
import os
openai.api_key = os.environ.get("OPENAI_API_KEY")
#Specify the intent
intents = discord.Intents.default()
intents.members = True
#Create Client
client = discord.Client(intents=intents)
async def generate_response(message):
prompt = f"{message.author.name}: {message.content}\nAI:"
response = openai.Completion.create(
engine="gpt-3.5-turbo",
prompt=prompt,
max_tokens=1024,
n=1,
stop=None,
temperature=0.5,
)
return response.choices[0].text.strip()
@client.event
async def on_ready():
print(f"We have logged in as {client.user}")
@client.event
async def on_message(message):
if message.author == client.user:
return
response = await generate_response(message)
await message.channel.send(response)
discord_token = 'DiscordToken'
client.start(discord_token)
Run Code Online (Sandbox Code Playgroud)
我尝试使用不同的方式来访问 API 密钥,包括添加到环境变量。
我还能尝试什么或者哪里出错了,对于编程来说还很陌生。错误信息:
openai.error.AuthenticationError:未提供 API 密钥。您可以使用“openai.api_key =”在代码中设置 API …
如何向 RetrievalQA.from_chain_type 添加内存?或者,如何向 ConversationalRetrievalChain 添加自定义提示?
在过去的两周里,我一直在尝试制作一个可以通过文档聊天的聊天机器人(因此不仅仅是语义搜索/质量保证,因此需要记忆),而且还可以使用自定义提示。我已经尝试了所有链的每种组合,到目前为止,我得到的最接近的是 ConversationalRetrievalChain,但没有自定义提示,以及 RetrievalQA.from_chain_type 但没有内存
在 OpenAI API 中,如何以编程方式检查响应是否不完整?如果是这样,您可以添加另一个命令,例如“继续”或“扩展”,或者以编程方式完美地继续它。
\n根据我的经验,\n我知道如果响应不完整,API 将返回:
\n"finish_reason": "length"\nRun Code Online (Sandbox Code Playgroud)\n但如果响应超过 4000 个令牌,它就不起作用,因为您还需要将先前的响应(对话)传递给新的响应(对话)。如果响应是 4500,它将返回 4000 个令牌,但您无法获取剩余的 500 个令牌,因为每个对话的最大令牌是 4000 个令牌。如果我错了请纠正我。
\n这是我的代码,请注意,提示只是一个示例提示。实际上,我的提示也很长,因为我还无法微调 gpt 3.5,我需要根据我的提示来训练它。
\ndef chat_openai(prompt) -> dict:\n\n conversation = [{'role': 'user', 'content': prompt}]\n response, answer = None, ''\n for idx, api_key in enumerate(openai_api_keys):\n try:\n openai.api_key = api_key\n response = openai.ChatCompletion.create(model='gpt-3.5-turbo', messages=conversation, temperature=1)\n answer += response.choices[0].message.content\n conversation.append({'role': response.choices[0].message.role, 'content': answer})\n # Move successful API at the start of array\n if idx: openai_api_keys[0], openai_api_keys[idx] = openai_api_keys[idx], openai_api_keys[0]\n break\n except …Run Code Online (Sandbox Code Playgroud) python artificial-intelligence machine-learning openai-api chatgpt-api
我在 Python 中使用 Langchain 和 Gradio 接口。我制作了一个对话代理,并尝试将其响应传输到 Gradio 聊天机器人界面。我查看了 Langchain 文档,但找不到使用代理实现流式传输的示例。这是我的代码的一些部分:
# Loading the LLM
def load_llm():
return AzureChatOpenAI(
temperature=hparams["temperature"],
top_p=hparams["top_p"],
max_tokens=hparams["max_tokens"],
presence_penalty=hparams["presence_penalty"],
frequency_penalty=hparams["freq_penaulty"],
streaming=True,
callback_manager=CallbackManager([StreamingStdOutCallbackHandler()]),
verbose=True,
model_name=hparams["model"],
deployment_name = models_dict[hparams["model"]],
)
# Loading the agent
def load_chain(memory, sys_msg, llm):
"""Logic for loading the chain you want to use should go here."""
agent_chain = initialize_agent(tools,
llm,
agent="conversational-react-description",
verbose=True,
memory=memory,
agent_kwargs = {"added_prompt": sys_msg},
streaming=True,
)
return agent_chain
# Creating the chatbot to be used in Gradio.
class ChatWrapper:
def __init__(self, …Run Code Online (Sandbox Code Playgroud) 我目前正在开发一个聊天机器人,由于我使用的是 Windows 11,它不允许我迁移到较新的 OpenAI 库或降级它。ChatCompletion我可以用其他功能替换该功能以在我的版本上使用吗?
这是代码:
import openai
openai.api_key = "private"
def chat_gpt(prompt):
response = openai.ChatCompletion.create(
model="gpt-3.5-turbo",
messages=[{"role": "user", "content": prompt}]
)
return response.choices[0].message['content'].strip()
if __name__ == "__main__":
while True:
user_input = input("You: ")
if user_input.lower() in ["quit", "exit", "bye"]:
break
response = chat_gpt(user_input)
print("Bot:", response)
Run Code Online (Sandbox Code Playgroud)
这是完整的错误:
...您尝试访问 openai.ChatCompletion,但 openai>=1.0.0 不再支持此功能 - 请参阅https://github.com/openai/openai-python上的API 了解自述文件。
您可以运行
openai migrate自动升级您的代码库以使用 1.0.0 界面。或者,您可以将安装固定到旧版本,例如 <pip install openai==0.28>
此处提供了详细的迁移指南:https ://github.com/openai/openai-python/discussions/742
我尝试通过 pip 进行升级和降级。
chatgpt-api ×10
openai-api ×9
python ×8
langchain ×2
completion ×1
discord ×1
gpt-3 ×1
gpt-4 ×1
gradio ×1
pip ×1
prompt ×1
py-langchain ×1