基于Python制作AI聊天软件的示例代码

 更新时间:2022年07月05日 08:17:03   作者:晋升阁  
这篇文章主要为大家详细介绍了如何利用Python语言制作一个简易的AI聊天软件,可以实现自动聊天,文中的示例代码讲解详细,需要的可以参考一下

效果图

先看一下效果图

就当是女友无聊的时候自己抽不出时间的小分身吧!

需要用到的库

tkinter、time、urllib、requests

tkinter负责窗体、time显示时间、urllib和requests负责请求

窗体设计

from tkinter import *
win1 = Tk()
win1.geometry('400x644+100+100')
win1.title('xxx男神的AI分身')
Label11 = Label(win1, text='男神白', font=('黑体', 12), anchor='center').place(y=13, x=15, width=380, height=20)
Entry11 = Entry(win1, font=('等线', 11), width = 70)
Entry11.place(y=600, x=15, width=310, height=26)
Button11 = Button(win1, text='发送', font=('等线', 11), command = mecha).place(y=598, x=328, width=65, height=30)
console = Text(win1, font=('等线', 11))
console.place(y=35, x=15, width=368, height=550)
console.insert(1.0,'             欢迎来到你与男神的小天地!\n你可以把你想说的内容输入到下面的输入框哦\n')
console.mark_set('markOne', 1.0)
console.mark_set('markTwo', 3.0)
console.tag_add('tag1', 'markOne', 'markTwo')
console.tag_config('tag1', foreground='red')
win1.bind("<Return>", test_fun)
win1.mainloop()

函数

在txet部件上显示发送时间及颜色处理,使用requests和urllib库来调用接口处理回复你女朋友的信息。

def liaotian():
    global b
    import time
    b = 3
    def mecha():
        global b
        b+=2
        console.insert('end',time.strftime('%Y-%m-%d %H:%M:%S', time.localtime()) + '\n')
        console.insert('end',str(Entry11.get())+'\n')
        console.mark_set(str(b-1), str(b-1)+'.0')
        console.mark_set(str(b), str(b)+'.0')
        console.tag_add(str(b), str(b-1), str(b))
        console.tag_config(str(b), foreground='blue')
        console.see(END)
        console.update()
        console.insert('end',time.strftime('%Y-%m-%d %H:%M:%S', time.localtime()) + '\n')
        console.insert('end',aicha()+'\n')
        console.mark_set(str(b-1), str(b-1)+'.0')
        console.mark_set(str(b), str(b)+'.0')
        console.tag_add(str(b), str(b-1), str(b))
        console.tag_config(str(b), foreground='red')
        console.see(END)
        Entry11.delete(0,END)
        console.update()
    def test_fun(self):
        mecha()
    def aicha():
        global b
        b+=2
        msg = str(Entry11.get())
 
        else:
            import urllib
            import requests
            def qingyunke(msg):
                url = 'http://api.qingyunke.com/api.php?key=free&appid=0&msg={}'.format(urllib.parse.quote(msg))
                html = requests.get(url)
                return html.json()["content"]
            print("原话>>", msg)
            res = qingyunke(msg)
            res = res.replace('菲菲', '你男神')
            res = res.replace('我', '你男神')
            print("智能回复>>", res)
            return res

为粉丝们额外添加的功能

根据女友输入的内容自定义回复

我自己添加的内容太肉麻的,不太适合分享给你们哈。于是我就给你们做多了一个自定义回复的功能。嘿嘿!那就是独一无二的代码了

坚持着你们直接能使用代码不做任何修改的原则,我就不让你们在代码里面添加了,当你第一次运行此代码的时候会自动创建一个txt文件(甚至还不用让你创建文件),你就可以在txt文件中自定义回复内容了。

使用异常处理模块try来尝试open读取名为“自定义回复.txt”的文件,若不存在except就创建,若已存在直接读取即可。操作读取的字符串逐个添加到zidingyi字典中,判断输入的语句是否在zidingyi.keys()中即可做出相应回复。

添加后的效果图:

    zidingyi = {}
    try:
        with open("自定义回复.txt", "r", encoding='utf8') as f:
            asd = f.readlines()
            print(asd)
            for line in asd:
                line = line.strip('\n')
                wen, da = line.split(':', 1)
                zidingyi[wen] = da
    except:
        with open("自定义回复.txt", "w+", encoding='utf8') as f:
            f.write('提示——>采用“输入:回复”格式   如——>你吃饭了吗?:我吃饭啦           回车以继续下一自定义回复(注意使用英文的冒号)')
        with open("自定义回复.txt", "r", encoding='utf8') as f:
            asd = f.readlines()
            print(asd)
            for line in asd[1:]:
                line = line.strip('\n')
                wen, da = line.split(':', 1)
                zidingyi[wen] = da
                print(line)
    print(zidingyi)

完整代码

from tkinter import *
 
 
def liaotian():
    global b
    import time
    b = 3
 
    def mecha():
        global b
        b += 2
        console.insert('end', time.strftime('%Y-%m-%d %H:%M:%S', time.localtime()) + '\n')
        console.insert('end', str(Entry11.get()) + '\n')
        console.mark_set(str(b - 1), str(b - 1) + '.0')
        console.mark_set(str(b), str(b) + '.0')
        console.tag_add(str(b), str(b - 1), str(b))
        console.tag_config(str(b), foreground='blue')
        console.see(END)
        console.update()
        console.insert('end', time.strftime('%Y-%m-%d %H:%M:%S', time.localtime()) + '\n')
        console.insert('end', aicha() + '\n')
        console.mark_set(str(b - 1), str(b - 1) + '.0')
        console.mark_set(str(b), str(b) + '.0')
        console.tag_add(str(b), str(b - 1), str(b))
        console.tag_config(str(b), foreground='red')
        console.see(END)
        Entry11.delete(0, END)
        console.update()
 
    def test_fun(self):
        mecha()
 
    def aicha():
        global b
        b += 2
        msg = str(Entry11.get())
        if msg in zidingyi.keys():
            res = zidingyi[msg]
            return res
        else:
            import urllib
            import requests
            def qingyunke(msg):
                url = 'http://api.qingyunke.com/api.php?key=free&appid=0&msg={}'.format(urllib.parse.quote(msg))
                html = requests.get(url)
                return html.json()["content"]
 
            print("原话>>", msg)
            res = qingyunke(msg)
            res = res.replace('菲菲', '你男神')
            res = res.replace('我', '你男神')
            print("智能回复>>", res)
            return res
 
    zidingyi = {}
    try:
        with open("自定义回复.txt", "r", encoding='utf8') as f:
            asd = f.readlines()
            print(asd)
            for line in asd:
                line = line.strip('\n')
                wen, da = line.split(':', 1)
                zidingyi[wen] = da
    except:
        with open("自定义回复.txt", "w+", encoding='utf8') as f:
            f.write('提示——>采用“输入:回复”格式   如——>你吃饭了吗?:我吃饭啦           回车以继续下一自定义回复(注意使用英文的冒号)')
        with open("自定义回复.txt", "r", encoding='utf8') as f:
            asd = f.readlines()
            print(asd)
            for line in asd[1:]:
                line = line.strip('\n')
                wen, da = line.split(':', 1)
                zidingyi[wen] = da
                print(line)
    print(zidingyi)
    win1 = Tk()
    win1.geometry('400x644+100+100')
    win1.title('男神的AI分身')
    Label11 = Label(win1, text='你男神', font=('黑体', 12), anchor='center').place(y=13, x=15, width=380, height=20)
    Entry11 = Entry(win1, font=('等线', 11), width=70)
    Entry11.place(y=600, x=15, width=310, height=26)
    Button11 = Button(win1, text='发送', font=('等线', 11), command=mecha).place(y=598, x=328, width=65, height=30)
    console = Text(win1, font=('等线', 11))
    console.place(y=35, x=15, width=368, height=550)
    console.insert(1.0, '                   欢迎来到你与男神的小天地!\n      你可以把你想说的内容输入到下面的输入框哦\n')
    console.mark_set('markOne', 1.0)
    console.mark_set('markTwo', 3.0)
    console.tag_add('tag1', 'markOne', 'markTwo')
    console.tag_config('tag1', foreground='red')
    win1.bind("<Return>", test_fun)
    win1.mainloop()
 
 
liaotian()

怎么样,是不是特别简单~快复制去送给你心中的那个女神吧~

以上就是基于Python制作AI聊天软件的示例代码的详细内容,更多关于Python聊天软件的资料请关注脚本之家其它相关文章!

相关文章

  • Pytorch可视化(显示图片)及格式转换问题

    Pytorch可视化(显示图片)及格式转换问题

    这篇文章主要介绍了Pytorch可视化(显示图片)及格式转换问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2022-12-12
  • Python对象转换为json的方法步骤

    Python对象转换为json的方法步骤

    这篇文章主要介绍了Python对象转换为json的方法步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-04-04
  • Python灰度变换中的对数变换专项分析实现

    Python灰度变换中的对数变换专项分析实现

    灰度变换是指根据某种目标条件按一定变换关系逐点改变源图像中每个像素灰度值的方法。目的是改善画质,使图像显示效果更加清晰。图像的灰度变换处理是图像增强处理技术中的一种非常基础、直接的空间域图像处理方法,也是图像数字化软件和图像显示软件的一个重要组成部分
    2022-10-10
  • Python图像运算之顶帽运算和底帽运算详解

    Python图像运算之顶帽运算和底帽运算详解

    数学形态学是应用于图像处理和模式识别领域的新方法。数学形态学表示以形态为基础对图像进行分析的数学工具,基本思想是用具有一定形态的结构元素去量度和提取图像中对应形状以达到对图像分析和识别的目的。本文将为大家介绍顶帽运算和底帽运算,需要的可以参考一下
    2022-07-07
  • Python Tricks 使用 pywinrm 远程控制 Windows 主机的方法

    Python Tricks 使用 pywinrm 远程控制 Windows 主机的方法

    这篇文章主要介绍了Python Tricks 使用 pywinrm 远程控制 Windows 主机的方法,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2020-07-07
  • Python tempfile模块生成临时文件和临时目录

    Python tempfile模块生成临时文件和临时目录

    这篇文章主要介绍了Python tempfile模块生成临时文件和临时目录,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-09-09
  • python中的Pyperclip模块功能详解

    python中的Pyperclip模块功能详解

    pyperclip模块中有两个函数,分别是copy()和paste(),copy()用于向计算机的剪贴板发送文本,paste()用于从计算机剪贴板接收文本,这篇文章主要介绍了python中的Pyperclip模块,需要的朋友可以参考下
    2023-03-03
  • 树莓派4B安装Tensorflow的方法步骤

    树莓派4B安装Tensorflow的方法步骤

    这篇文章主要介绍了树莓派4B安装Tensorflow的方法步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-07-07
  • python实现手机号归属地查询功能

    python实现手机号归属地查询功能

    手机上突然收到了某银行的短信提示,看了一下手机的位数,正好是11位,我一想,这不就是标准的手机号码吗?于是想用python的库实现查询手机号码归属地查询自由,所以本文给大家介绍了如何用python实现手机号归属地查询功能,需要的朋友可以参考下
    2024-03-03
  • sklearn线性逻辑回归和非线性逻辑回归的实现

    sklearn线性逻辑回归和非线性逻辑回归的实现

    这篇文章主要介绍了sklearn线性逻辑回归和非线性逻辑回归的实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-06-06

最新评论