昨天给了我一个大模型相关的python项目,我试着跑了一下,发现一直有openaiConnectionError。很苦恼,网上的几乎所有方式都试了,没有效果。比如import os加代理proxy、改环境变量之类的
最后打算先写一个简单的小的测试一下,经过gpt4o修改,终于能跑了~~(小代码能跑了,大的还没试)
import os
import openai
import requests
from requests.adapters import HTTPAdapter
from urllib3.util.retry import Retry
# 设置代理环境变量
os.environ["http_proxy"] = "http://127.0.0.1:7890"
os.environ["https_proxy"] = "http://127.0.0.1:7890"
# 如果需要,可以直接设置代理在 openai 请求中
proxy_url = "http://127.0.0.1:7890"
proxies = {
"http": proxy_url,
"https": proxy_url,
}
# 设置 OpenAI API 密钥
openai.api_key = "你的key"
# 创建一个带有重试机制的会话
session = requests.Session()
retry = Retry(
total=5, # 总共重试次数
backoff_factor=1, # 每次重试间隔时间
status_forcelist=[429, 500, 502, 503, 504], # 重试的状态码
)
adapter = HTTPAdapter(max_retries=retry)
session.mount("http://", adapter)
session.mount("https://", adapter)
# 将会话应用于 OpenAI
openai.api_requestor._thread_context.session = session
# 发送请求
try:
response = openai.ChatCompletion.create(
model="gpt-3.5-turbo",
messages=[
{"role": "system", "content": "You are a weather bot."},
{"role": "user", "content": "Create an array of weather temperatures for Shanghai"}
],
temperature=0,
max_tokens=256,
top_p=1,
frequency_penalty=0,
presence_penalty=0,
# proxies=proxies, # 代理设置
)
print(response)
except openai.error.APIConnectionError as e:
print(f"API connection error: {e}")
except Exception as e:
print(f"An error occurred: {e}")
我感觉最重要的就是要带一个可以重试的会话。之前只有代理环境变量都不行。虚拟环境和普通的都可以运行
刚接触python,对python的理解很浅。如果能帮到也有一样问题的uu最好啦!