1.创建虚拟环境
conda create -n chatG python==3.8
报错:CondaHTTPError: HTTP 403 FORBIDDEN for url <http://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/win-64/python-3.8.0-hc9e8b01_5.tar.bz2>
可以看出应该是清华源的问题,换回默认源,解决:
conda config --remove-key channels
2.激活虚拟环境
conda activate chatG
3.安装OpenAI依赖包
pip install openai
4.获取openAI API
获取方法:
- 进入openai网站,进行注册。
- 完成注册后,进入个人中心,找到API管理界面。
- 进入API管理界面后,生成一个API key(生成后立马复制!它不会2次显示)。
- 在python中调取api接口,刚开始使用的代码如下:
import openai, os
start_sequence = "\nA:"
restart_sequence = "Q: "
# Replace `<your_api_key>` with your actual OpenAI API key
openai.api_key = "<your_api_key>"
prompt = " "
while len(prompt)!=0:
prompt = input(restart_sequence)
response = openai.Completion.create(engine="text-davinci-003",prompt=prompt,temperature=1,max_tokens=2000,frequency_penalty=0,presence_penalty=0)
print(start_sequence,response["choices"][0]["text"].strip())
报错:
openai.error.APIConnectionError: Error communicating with OpenAI: HTTPSConnectionPool(host='api.openai.com', port=443): Max retries exceeded with url:
解决方法:
- 加入代理
文件路径:./envs/虚拟环境名称/Lib/site-packages/openai/api_requestor.py(openai库路径)
打开该.py并找到if not hasattr(_thread_context, "session"):方法,加入代理:
proxy = {
'http': 'http://localhost:7890',
'https': 'http://localhost:7890'
}
下滑,在result = _thread_context.session.request(中加入代理:
proxies=proxy,
- 主文件中配置环境
import os
os.environ["http_proxy"] = "http://localhost:7890"
os.environ["https_proxy"] = "http://localhost:7890"
解决
但是输第二个问题会报错
UnboundLocalError: local variable 'proxy' referenced before assignment
未解决,直接换了个代码,如下
import openai
import json
# 设置API密钥
openai.api_key = "<your_api_key>"
def chat(prompt):
response = openai.ChatCompletion.create(
model="gpt-3.5-turbo",
messages=[
# {"role": "user", "content":prompt}
{"role":"system","content":"对网络谣言进行判断。"},
{"role":"user","content":"判断题,请判断是否是谣言,并回答‘是’或者‘否’,并解释原因。"},
{"role":"user","content":"UPDATE: Police storm #Sydney cafe amid gunshots and explosions"}
]
)
answer = response.choices[0].message.content
return answer
if __name__=='__main__':
prompt='UPDATE: Police storm #Sydney cafe amid gunshots and explosions'
result = chat(prompt)
print(result)
这个跑成功
刚开始将中文prompt换成英文后,时不时报
urllib3.exceptions.ProtocolError: ('Connection aborted.', OSError(0, 'Error'))
openai.error.APIConnectionError: Error communicating with OpenAI: ('Connection aborted.', OSError(0, 'Error'))
之类的错,网上有人说是urllib3版本的问题,但是我不理解这版本跟中英文有什么关系,重新换个个梯子,遂解决,所以我觉得归根结底还是网络的问题。