如何用Python调用Chat-GPT 打造属于自己的聊天机器人

如何用Python调用Chat-GPT 打造属于自己的聊天机器人

Please Share Us

点击此处查看 ✿水哥原创ANSYS视频教程清单 ✿

水哥专属答疑服务已开通,点此此处查看详情

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

chatgpt1

出现这个问题,水哥估摸着也是因为官网用的人太多,人家服务器也有限,所以才会出现这种情况,要解决这个问题,只有不断刷新,然后在重新使用,如果网速不好,或者代理的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即可,注意一定要及时复制保存,因为生成后,后续不可在具体查看了。

chatgpt2

3、安装Openai提供的Python函数包
打开python编辑器例如水哥用的Pycharm,或者直接cmd命令窗口也行,输入下面的命令安装。
pip install openai
4、接下来调用API,根据官方的代码,一般常规步骤如下:
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)
水哥简单说说上面每个参数的含义,其实在官网中都有解释,想要具体了解的同学可去官网查看。
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,在官网里面也列出了每个模型,如下所示箭头就是前面代码里面用的模型:

chatgpt3

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

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

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

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

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

chatgpt4

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

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

pip uninstall urllib3
pip install urllib3==1.25.11

step2: 如果上述操作之后还不行,那就是你的代理端口的问题,因为如果你要连接到openai,你都是需要梯子的,所以系统默认的端口就不行了,必须要用梯子的端口,这里每个梯子查看的方式不一样,如果是用的水哥推荐的,可在这个位置找到端口号。

chatgpt5

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好学一点呢,大家还不积极一点?

chatgpt56png

问题2:ansys workbench如何进行ACT开发

回答如下:

chatgpt7

问题3: 

帮我用英文翻译下下面这段话:

沙漏(hourglass)模式是一种非物理的零能变形模式,产生零应变和应力。沙漏模式仅发生在缩减积分(单积分点)体、壳和厚壳单元上。是单元刚度矩阵中秩不足导致的,而这些是由于积分点不足导致的。沙漏模式导致一种在数学上是稳定的、但在物理上无法实现的状态。他们通常没有刚度,变形呈现锯齿形网格

回答如下:(翻译质量还不错的哦,个人感觉至少比百度翻译好吧)

chatgpt8

当然如果你觉得每次都要在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中输入

chatgpt9

在Output.txt中查看结果

chatgpt10

上面用的模型是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的~

chatgpt11

欢迎关注本站微信公众号:

图片[12]-如何用Python调用Chat-GPT 打造属于自己的聊天机器人-峰设教育

本文源代码下载:
源代码含通过文本方式输入和输出内容 源代码,直接修改参数数值的源代码以及采用对话框模型的源代码。

欢迎扫描如下二维码关注本站微信公众号:ANSYS结构院

有时间麻烦帮忙点击下公众号文末的广告哦, 权当码字的辛苦费,感谢大家!

Please Share Us
如何用Python调用Chat-GPT 打造属于自己的聊天机器人-峰设教育
如何用Python调用Chat-GPT 打造属于自己的聊天机器人
此内容为付费阅读,请付费后查看
25积分
付费阅读
已售 2
© 版权声明
THE END
喜欢就支持一下吧
点赞1赞赏 分享
评论 共2条
头像
欢迎您留下宝贵的见解!
提交
头像

昵称

取消
昵称表情代码

YOU MAY LIKE…