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

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

作者:惰惰猴
来源:知乎

为了体现Python的敏捷性,我憋了半天Tkinter,磕磕绊绊地做了一个简易图形。主要是想用pyinstaller,打包成MacOS的APP。

这样,我就可以每天使用自己做的图形软件,调用ChatGPT了。虽然简陋,但成就感满满。

1、代码分享

代码比较简单。直接采用关键语句注释讲解。tkinter的语法,这里就不展开了。

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、代码效果展示

如图,效果还行,就是图形太过简陋。

3、打包成MacOS的APP

在打包之前,先介绍一下前期准备工作:

(1)图标要求

Windows环境下pyinstaller常用的图标格式是30x30像素的.ico位图

Mac环境下pyinstaller常用的图标格式是30x30像素的.icons的位图

(2)pyinstaller打包常用参数

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

(3)自己常用打包命令

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

(4)MacOS打包演示

进入家目录的Downloads文件夹,把准备好的图标和刚才写的程序,拷贝进来。

cd ~/Downloads

可以看到,我准备了一张马里奥大叔的图标,来打包我的Python程序QandAgui.py

使用如下命令打包即可。

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

稍等片刻,打包成功。

再次进入家目录Downloads文件夹,找到dist文件夹进入,把马里奥头像的APP拷贝到MacOS的Application文件夹中,即可使用。

4、软件演示

直接在MacOS下,点击马里奥图标即可打开软件。

三、后记

ChatGPT的Python API给了我们极大的定制自由。不管是Django的Web调用,还是GUI的图形调用,亦或是CLI的文本调用。都值得同行朋友们积极尝试。

THE END