近日水哥用GPT的情况比较多,相信在官网用过GPT的同学都会遇到这种情况,当次数用多了后会出现下面这种情形:
出现这个问题,水哥估摸着也是因为官网用的人太多,人家服务器也有限,所以才会出现这种情况,要解决这个问题,只有不断刷新,然后在重新使用,如果网速不好,或者代理的Ip污染度较高,还需要重复性的做人工验证,当频繁使用的时候,非常不友好。
有没有一种可以解决这种情况的方法呢?
这个时候就需要调用Openai提供的API来解决了。事实上,很多人已经通过调用API来实现诸多功能了,比如很多微信小程序提供的AI聊天,无非也就是后台调用API来做,今天水哥就和大家说说怎么用Python调用OpenAI提供的API,给自己做一款聊天机器人(其中踩了很多坑,含泪分享给大家…)
1、前提条件
1)在OpenAI官网上有账号,如果没有,去注册一个,具体流程参考下面这篇文章;
ChatGPT注册手把手教学
2)能科学上网,具体不阐述,参考下面的文章;
如何科学下载文献
3)懂一点Python的知识。
2、申请OpenAI的API
进入OpenAI官网,点击右上角Manage Account,然后点击左下角的User中的API keys, 点击Create New secret key即可,注意一定要及时复制保存,因为生成后,后续不可在具体查看了。
import os
import openai
openai.api_key = 'Your API Key'
prompt='你的问题内容'
model='text-davinci-003'
temperature = 0.7
max_tokens = 3000
response = openai.Completion.create(
engine=model,
prompt=prompt,
temperature=temperature,
max_tokens=max_tokens
)
print(response.choices[0].text)
官网还提供了其他参数的解释,由于我们在实际运用过程中保持默认即可,这里便不再过多介绍。
好了,接下来就是避坑指南了。。。。
当水哥信心慢慢的复制上面代码运行时,迎面而来的不是GPT的回答,而是一大推的红色错误…..
很多情况下都是这种错误,网络连接错误,或者说无法连接的OpenAI的服务器…..看着挺难受的….
经过不断尝试,最终找到了下面的解决方法,不一定通用,至少对水哥而言,问题是解决了。
step1: 降低urllib3的版本至1.25.11,urllib3主要控制python网络传输协议,水哥的版本是1.26.14,这个版本有些许问题,故而先卸载新版,然后在安装旧版:
pip uninstall urllib3
pip install urllib3==1.25.11
step2: 如果上述操作之后还不行,那就是你的代理端口的问题,因为如果你要连接到openai,你都是需要梯子的,所以系统默认的端口就不行了,必须要用梯子的端口,这里每个梯子查看的方式不一样,如果是用的水哥推荐的,可在这个位置找到端口号。
step3: 在前面代码中加入下面修改端口的代码,其中33210换为你自己的端口代码,前面的IP地址不换。
proxies = {'http': "http://127.0.0.1:33210",
'https': "http://127.0.0.1:33210"}
openai.proxy = proxies
经过上述调整后,终于能运行了,来看看效果:
问题1:ANSYS和ABAQUS哪个好学一点?
回答如下:咳咳,GPT都认为ANSYS好学一点呢,大家还不积极一点?
问题2:ansys workbench如何进行ACT开发
回答如下:
问题3:
帮我用英文翻译下下面这段话:
沙漏(hourglass)模式是一种非物理的零能变形模式,产生零应变和应力。沙漏模式仅发生在缩减积分(单积分点)体、壳和厚壳单元上。是单元刚度矩阵中秩不足导致的,而这些是由于积分点不足导致的。沙漏模式导致一种在数学上是稳定的、但在物理上无法实现的状态。他们通常没有刚度,变形呈现锯齿形网格
回答如下:(翻译质量还不错的哦,个人感觉至少比百度翻译好吧)
当然如果你觉得每次都要在python界面去调整变量的数值比较麻烦,那么则可增加下面代码,通过读入本文里面的内容,来完成输入,我们每次只需要将文本里面的内容重新更新下即可,同时还可将数据用文本写出来,这样方便我们打开文本进行复制操作。
读入文本如下:
file=open('Input.txt',encoding='utf-8',errors='ingore')
prompt=file.read()
print(prompt)
写入结果文件如下:
output=Chat(prompt)
fileout=open('Output.txt','w',encoding='utf-8')
fileout.write(output)
fileout.close()
效果如下所示:
在Input.txt中输入
在Output.txt中查看结果
model = "gpt-3.5-turbo"
messages = [{'role': 'system', 'content': '这是一个测试'}]
# 在 messages 中加入 `用户(user)` 角色提出第 1 个问题
messages.append({'role': 'user', 'content': '用APDL写一个悬臂梁的代码'})
# 调用接口
response = openai.ChatCompletion.create(
model='gpt-3.5-turbo',
messages=messages,
)
# 在 messages 中加入 `助手(assistant)` 的回答
messages.append({
'role': response['choices'][0]['message']['role'],
'content': response['choices'][0]['message']['content'],
})
# 在 messages 中加入 `用户(user)` 角色提出第 2 个问题
messages.append({'role': 'user', 'content': '检查上述代码中是否错误,如果有请修改'})
# 调用接口
response = openai.ChatCompletion.create(
model='gpt-3.5-turbo',
messages=messages,
)
# 在 messages 中加入 `助手(assistant)` 的回答
messages.append({
'role': response['choices'][0]['message']['role'],
'content': response['choices'][0]['message']['content'],
})
# 查看整个对话
print(messages)
欢迎关注本站微信公众号:
- 最新
- 最热
只看作者