如何用Python调用Chat-GPT 打造属于自己的聊天机器人
旺财很乖
2023年05月22日 09:01:29
来自于ANSYS
只看楼主

近日水哥用GPT的情况比较多,相信在官网用过GPT的同学都会遇到这种情况,当次数用多了后会出现下面这种情形: 出现这个问题,水哥估摸着也是因为官网用的人太多,人家服务器也有限,所以才会出现这种情况,要解决这个问题,只有不断刷新,然后在重新使用,如果网速不好,或者代理的Ip污染度较高,还需要重复性的做人工验证,当频繁使用的时候,非常不友好。 有没有一种可以解决这种情况的方法呢?


近日水哥用GPT的情况比较多,相信在官网用过GPT的同学都会遇到这种情况,当次数用多了后会出现下面这种情形:

出现这个问题,水哥估摸着也是因为官网用的人太多,人家服务器也有限,所以才会出现这种情况,要解决这个问题,只有不断刷新,然后在重新使用,如果网速不好,或者代理的Ip污染度较高,还需要重复性的做人工验证,当频繁使用的时候,非常不友好。
有没有一种可以解决这种情况的方法呢?
这个时候就需要调用Openai提供的API来解决了。事实上,很多人已经通过调用API来实现诸多功能了,比如很多微信小程序提供的AI聊天,无非也就是后台调用API来做,今天水哥就和大家说说怎么用Python调用OpenAI提供的API,给自己做一款聊天机器人(其中踩了很多坑,含泪分享给大家...)
1、前提条件
1)在OpenAI官网上有账号,如果没有,去注册一个,具体流程参考下面这篇文章;
试试ChatGpt与ANSYS
2)能科学上网,具体不阐述,本公众号官网FSCAE.COM上面有方法;
3)懂一点Python的知识。
2、申请OpenAI的API
进入OpenAI官网,点击右上角Manage Account,然后点击左下角的User中的API keys, 点击Create  New secret key即可,注意一定要及时复制保存,因为生成后,后续不可在具体查看了。


3、安装Openai提供的Python函数包
打开python编辑器例如水哥用的Pycharm,或者直接cmd命令窗口也行,输入下面的命令安装。
pip install openai
4、接下来调用API,根据官方的代码,一般常规步骤如下:














import osimport openaiopenai.api_key = 'Your API Key'prompt='你的问题内容'model='text-davinci-003'temperature = 0.7max_tokens = 3000response = openai.Completion.create( engine=model, prompt=prompt, temperature=temperature, max_tokens=max_tokens )print(response.choices[0].text)
水哥简单说说上面每个参数的含义,其实在官网中都有解释,想要具体了解的同学可去官网查看。
1)openai.api_key
这个参数要求输入的是 你自己的API,也即我们在前面步骤获取的
2)prompt  
这个参数输入你的问题,如果你的问题需要多行,那么需要用换行符进行,如下所示:
prompt='下面的APDL代码是否正确 \n Et,1,beam188 \n Mp,ex,1,2.0e5'
3)model
model代表的是语言模型,根据官网列出的前面简称,可自行更换,目前官网最新模型是GPT-4,不过需要申请使用,还没开放,大家可用的目前最新模型是GPT-3.5,在官网里面也列出了每个模型,如下所示箭头就是前面代码里面用的模型:

4)temperature
控制结果的随机性,如果希望结果更有创意可以尝试 0.9,或者希望有固定结果可以尝试 0.0
5) max_tokens
tokens 可理解成每次生成的文本长度控制参数,但1个token并不等于1个字母或者一个单词,这里这是语言模型的计数单位,根据官网解释,4000个tokens等于的单词数大约为3000英文单词,同学们可根据这个简单换算下即可。

官网还提供了其他参数的解释,由于我们在实际运用过程中保持默认即可,这里便不再过多介绍。

好了,接下来就是避坑指南了。。。。

当水哥信心慢慢的复制上面代码运行时,迎面而来的不是GPT的回答,而是一大推的红色错误.....

很多情况下都是这种错误,网络连接错误,或者说无法连接的OpenAI的服务器.....看着挺难受的....

 

经过不断尝试,最终找到了下面的解决方法,不一定通用,至少对水哥而言,问题是解决了。

step1: 降低 urllib3的版本至 1.25.11, urllib3主要控制python网络传输协议,水哥的版本是1.26.14,这个版本有些许问题,故而先卸载新版,然后在安装旧版:



pip uninstall urllib3pip 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中查看结果


上面用的模型是text-davinci-003,这个模型适用于根据指定内容生成本文,如果你是要进行类似对话的模型gpt-3.5-turbo,则需要通过下面的格式进行调用。
不过这种方式的人数较多,系统反应较慢,建议非高峰期时在使用。大量的文本操作还是建议用 text-davinci-003。




























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)
当然,上述API的方式并不是免费的,在后台有一个根据token来计费的,具体计费规则同学们可通过官网查看,如下所示,用户前三个月有一个18美元的免费额度。
不过这都不是问题, 到额度了可以换个账户继续薅羊毛或者开通付费版本也都是ok的~


免费打赏

相关推荐

APP内打开