Python连接ChatGPT API实现GUI图形交互

2023-02-1619:26:17后端程序开发Comments1,920 views字数 2096阅读模式

Python连接ChatGPT API实现GUI图形交互文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/30869.html

作者:惰惰猴
来源:知乎文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/30869.html

为了体现Python的敏捷性,我憋了半天Tkinter,磕磕绊绊地做了一个简易图形。主要是想用pyinstaller,打包成MacOS的APP。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/30869.html

这样,我就可以每天使用自己做的图形软件,调用ChatGPT了。虽然简陋,但成就感满满。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/30869.html

1、代码分享

代码比较简单。直接采用关键语句注释讲解。tkinter的语法,这里就不展开了。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/30869.html

from tkinter import *
import openai

# 答案保存函数,把ChatGPT的回答文本,保存到日志文件中
def saveAnswer(chatText):
    filename = f'ChatGPT_Answer.log'
    with open(filename, 'a+') as f:
        f.write(chatText)

# 调用ChatGPT API函数,主要功能在上篇文章中讲过了
def chatGPT_Answer():
    # 注意,请使用自己的openai.api_key,代码里的openai.api_key为虚构
    openai.api_key = "sk-FGRGGsabcdefghijklmnopqrstuvwxyz"
    # 把tkinter Text空间的文本全部读取,再调用get方法给变量prompt获取
    prompt = str(GUI_Question.get('0.0', 'end'))
    response = openai.Completion.create(
        model="text-davinci-003",
        prompt=prompt,
        temperature=0,
        max_tokens=2000,
        top_p=1,
        frequency_penalty=0.2,
        presence_penalty=0
    )
    # 把ChatGPT返回的文本答案,放入变量chatAnswer
    chatAnswer = response['choices'][0].text.strip() + '\n\n' 
    # 把ChatGPT返回的文本答案,放到主函数的label变量out中
    out.configure(text='ChatGPT_Answer: ' + '\n' + chatAnswer)
    # 把ChatGPT返回的文本答案,传递给答案保存函数
    saveAnswer(chatAnswer)


if __name__ == '__main__':
    root = Tk()
    root.title('OpenAI ChatGPT GUI')
    label = Label(root, text='请输入要ChatGPT回答的问题:',font='Calibri 25 bold', fg='white')
    label.pack()
    GUI_Question = Text(root, bg='grey', width=100, font='Calibri 18')
    GUI_Question.pack(pady=5)
    out = Label(root, justify=LEFT)
    out.pack()
    button = Button(root, text='ChatGPT', fg='green', command=chatGPT_Answer)
    button.pack()

    root.mainloop()

2、代码效果展示

如图,效果还行,就是图形太过简陋。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/30869.html

Python连接ChatGPT API实现GUI图形交互
Python连接ChatGPT API实现GUI图形交互

3、打包成MacOS的APP

在打包之前,先介绍一下前期准备工作:文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/30869.html

(1)图标要求文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/30869.html

Windows环境下pyinstaller常用的图标格式是30x30像素的.ico位图文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/30869.html

Mac环境下pyinstaller常用的图标格式是30x30像素的.icons的位图文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/30869.html

(2)pyinstaller打包常用参数文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/30869.html

-i 给应用程序添加图标 -F 指定打包后只生成一个exe(windows)/app(MacOS)格式的文件 -D –onedir 创建一个目录,包含exe文件,但会依赖很多文件(默认选项) -c –console, –nowindowed 使用控制台,无界面(默认) -w –windowed, –noconsole 使用窗口,无控制台 -p 添加搜索路径文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/30869.html

(3)自己常用打包命令文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/30869.html

# 上下两个命令都是一样的效果
pyinstaller -w -i picName.icns -F programName.py 
pyinstaller -F -w programName.py -i picName.icns

(4)MacOS打包演示文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/30869.html

进入家目录的Downloads文件夹,把准备好的图标和刚才写的程序,拷贝进来。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/30869.html

cd ~/Downloads
Python连接ChatGPT API实现GUI图形交互

可以看到,我准备了一张马里奥大叔的图标,来打包我的Python程序QandAgui.py文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/30869.html

使用如下命令打包即可。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/30869.html

pyinstaller -F -w QandAgui.py -i m.icns 

稍等片刻,打包成功。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/30869.html

再次进入家目录Downloads文件夹,找到dist文件夹进入,把马里奥头像的APP拷贝到MacOS的Application文件夹中,即可使用。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/30869.html

Python连接ChatGPT API实现GUI图形交互
Python连接ChatGPT API实现GUI图形交互
Python连接ChatGPT API实现GUI图形交互

4、软件演示

直接在MacOS下,点击马里奥图标即可打开软件。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/30869.html

Python连接ChatGPT API实现GUI图形交互

三、后记

ChatGPT的Python API给了我们极大的定制自由。不管是Django的Web调用,还是GUI的图形调用,亦或是CLI的文本调用。都值得同行朋友们积极尝试。文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/30869.html

文章源自菜鸟学院-https://www.cainiaoxueyuan.com/bc/30869.html
  • 本站内容整理自互联网,仅提供信息存储空间服务,以方便学习之用。如对文章、图片、字体等版权有疑问,请在下方留言,管理员看到后,将第一时间进行处理。
  • 转载请务必保留本文链接:https://www.cainiaoxueyuan.com/bc/30869.html

Comment

匿名网友 填写信息

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定