【Python】利用tkinter与图灵机器人制作智能聊天系统

简介: 【Python】利用tkinter与图灵机器人制作智能聊天系统

1 前言


一次偶然的机会,我了解到图灵机器人网站,里面有现成的智能机器人聊天API。正好当时在学tkinter,计划利用tkinter制作一个类似QQ聊天框,与机器人聊天~

具体效果如下(ps:由于在网站的免费额度用完了,这里返回的是“请求次数超限制”):

图灵机器人网站链接:图灵机器人网站

首先需要注册登录,然后点击下图中的“创建机器人”,根据自己的需要创建~

创建完成后,会出现创建数据,其中有apikey!


2 代码分模块讲解


2.1 导入相应的库


首先需要导入相应的库,涉及到tkinter、datetime、time、requests、json等~


from tkinter import *
import datetime
import time
import requests,json
from tkinter import scrolledtext

2.2 创建机器人对象


机器人对象实际上是通过request请求访问图灵机器人API!

def computer(self, inquant):
        userid = 99        #检查一下自己的userid
        apikey = ''        #这里输入自己的apikey
        startup = ''
        while True:
            question = inquant
            tulingdata1 = json.dumps({
                "perception": {
                    "inputText": {
                        "text": question  # 将你输入的对话封装成一个字典,再转换成字符串,传给图灵机器人语义系统
                    },
                },
                "userInfo": {
                    "apiKey": apikey,  # 与图灵语义系统联系
                    "userId": userid
                }
            })
            robot1 = requests.post('http://openapi.tuling123.com/openapi/api/v2', tulingdata1)  # 因为是人机对话,所以通过post传递信息
            jsrobot1 = json.loads(robot1.text)['results'][0]['values']['text']  # 返回图灵机器人的对话
            return jsrobot1+'\n'

2.3 创建信息交互过程对象


这里实际上是将发送信息与接收信息的过程进行封装,方便之后的调用。同时使用了时间库,使聊天更加的真实!

def sendmessage(self, text_msglist, text_msg):
        msgcontent = '我:' + time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()) + '\n '
        text_msglist.insert(END, msgcontent, 'green')
        text_msglist.insert(END, text_msg.get('0.0', END))
        computertent = '图灵机器人:' + time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()) + '\n '
        text_msglist.insert(END, computertent, 'green')
        computer_talk = text_msg.get('0.0', END)
        text_msglist.insert(END, (self.computer(computer_talk)))
        text_msg.delete('0.0', END)


2.4 页面创建对象


通过grid来布局tkinter组件使页面更加的美观

def createPage(self):
        self.frame_left_top = Frame(width=600, height=220, bg='white')
        self.frame_left_center = Frame(width=600, height=100, bg='white')
        self.frame_left_bottom = Frame(width=600, height=20)
        ##创建需要的几个元素
        text_msglist = scrolledtext.ScrolledText(self.frame_left_top)
        text_msg = Text(self.frame_left_center)
        button_sendmsg = Button(self.frame_left_bottom, text='发送', command=lambda: self.sendmessage(text_msglist, text_msg))
        # 创建一个绿色的tag
        text_msglist.tag_config('green', foreground='#008B00')
        # 使用grid设置各个容器位置
        self.frame_left_top.grid(row=0, column=0, padx=2, pady=5)
        self.frame_left_center.grid(row=1, pady=5)
        self.frame_left_bottom.grid(row=2, column=0)
        self.frame_left_top.grid_propagate(0)
        self.frame_left_center.grid_propagate(0)
        self.frame_left_bottom.grid_propagate(0)
        # 把元素填充进frame
        text_msglist.grid()
        text_msg.grid()
        button_sendmsg.grid(row=0, column=0, sticky=E)

3 整体代码展示(可直接使用!)


ps:在computer函数中,将改换的换成自己的!

from tkinter import *
import datetime
import time
import requests,json
from tkinter import scrolledtext
class talk(object):
    def __init__(self, master=None):
        self.root = master  # 定义内部变量root
        self.createPage()
    def computer(self, inquant):
        userid = 99
        apikey = ''   #换成自己的apikey
        startup = ''
        while True:
            question = inquant
            tulingdata1 = json.dumps({
                "perception": {
                    "inputText": {
                        "text": question  # 将你输入的对话封装成一个字典,再转换成字符串,传给图灵机器人语义系统
                    },
                },
                "userInfo": {
                    "apiKey": apikey,  # 与图灵语义系统联系
                    "userId": userid
                }
            })
            robot1 = requests.post('http://openapi.tuling123.com/openapi/api/v2', tulingdata1)  # 因为是人机对话,所以通过post传递信息
            jsrobot1 = json.loads(robot1.text)['results'][0]['values']['text']  # 返回图灵机器人的对话
            return jsrobot1+'\n'
    def sendmessage(self, text_msglist, text_msg):
        msgcontent = '我:' + time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()) + '\n '
        text_msglist.insert(END, msgcontent, 'green')
        text_msglist.insert(END, text_msg.get('0.0', END))
        computertent = '图灵机器人:' + time.strftime("%Y-%m-%d %H:%M:%S", time.localtime()) + '\n '
        text_msglist.insert(END, computertent, 'green')
        computer_talk = text_msg.get('0.0', END)
        text_msglist.insert(END, (self.computer(computer_talk)))
        text_msg.delete('0.0', END)
    def createPage(self):
        self.frame_left_top = Frame(width=600, height=220, bg='white')
        self.frame_left_center = Frame(width=600, height=100, bg='white')
        self.frame_left_bottom = Frame(width=600, height=20)
        ##创建需要的几个元素
        text_msglist = scrolledtext.ScrolledText(self.frame_left_top)
        text_msg = Text(self.frame_left_center)
        button_sendmsg = Button(self.frame_left_bottom, text='发送', command=lambda: self.sendmessage(text_msglist, text_msg))
        # 创建一个绿色的tag
        text_msglist.tag_config('green', foreground='#008B00')
        # 使用grid设置各个容器位置
        self.frame_left_top.grid(row=0, column=0, padx=2, pady=5)
        self.frame_left_center.grid(row=1, pady=5)
        self.frame_left_bottom.grid(row=2, column=0)
        self.frame_left_top.grid_propagate(0)
        self.frame_left_center.grid_propagate(0)
        self.frame_left_bottom.grid_propagate(0)
        # 把元素填充进frame
        text_msglist.grid()
        text_msg.grid()
        button_sendmsg.grid(row=0, column=0, sticky=E)
if __name__ == "__main__":
    root = Tk()
    root.title('图灵机器人聊天')
    talk(root)
    root.mainloop()

最后再次展示一下界面图:

相关文章
|
8天前
|
机器学习/深度学习 人工智能 算法
海洋生物识别系统+图像识别+Python+人工智能课设+深度学习+卷积神经网络算法+TensorFlow
海洋生物识别系统。以Python作为主要编程语言,通过TensorFlow搭建ResNet50卷积神经网络算法,通过对22种常见的海洋生物('蛤蜊', '珊瑚', '螃蟹', '海豚', '鳗鱼', '水母', '龙虾', '海蛞蝓', '章鱼', '水獭', '企鹅', '河豚', '魔鬼鱼', '海胆', '海马', '海豹', '鲨鱼', '虾', '鱿鱼', '海星', '海龟', '鲸鱼')数据集进行训练,得到一个识别精度较高的模型文件,然后使用Django开发一个Web网页平台操作界面,实现用户上传一张海洋生物图片识别其名称。
89 7
海洋生物识别系统+图像识别+Python+人工智能课设+深度学习+卷积神经网络算法+TensorFlow
|
8天前
|
机器学习/深度学习 人工智能 算法
【昆虫识别系统】图像识别Python+卷积神经网络算法+人工智能+深度学习+机器学习+TensorFlow+ResNet50
昆虫识别系统,使用Python作为主要开发语言。通过TensorFlow搭建ResNet50卷积神经网络算法(CNN)模型。通过对10种常见的昆虫图片数据集('蜜蜂', '甲虫', '蝴蝶', '蝉', '蜻蜓', '蚱蜢', '蛾', '蝎子', '蜗牛', '蜘蛛')进行训练,得到一个识别精度较高的H5格式模型文件,然后使用Django搭建Web网页端可视化操作界面,实现用户上传一张昆虫图片识别其名称。
131 7
【昆虫识别系统】图像识别Python+卷积神经网络算法+人工智能+深度学习+机器学习+TensorFlow+ResNet50
|
8天前
|
机器学习/深度学习 人工智能 算法
【球类识别系统】图像识别Python+卷积神经网络算法+人工智能+深度学习+TensorFlow
球类识别系统,本系统使用Python作为主要编程语言,基于TensorFlow搭建ResNet50卷积神经网络算法模型,通过收集 '美式足球', '棒球', '篮球', '台球', '保龄球', '板球', '足球', '高尔夫球', '曲棍球', '冰球', '橄榄球', '羽毛球', '乒乓球', '网球', '排球'等15种常见的球类图像作为数据集,然后进行训练,最终得到一个识别精度较高的模型文件。再使用Django开发Web网页端可视化界面平台,实现用户上传一张球类图片识别其名称。
101 7
【球类识别系统】图像识别Python+卷积神经网络算法+人工智能+深度学习+TensorFlow
|
1天前
|
机器学习/深度学习 人工智能 算法
【乐器识别系统】图像识别+人工智能+深度学习+Python+TensorFlow+卷积神经网络+模型训练
乐器识别系统。使用Python为主要编程语言,基于人工智能框架库TensorFlow搭建ResNet50卷积神经网络算法,通过对30种乐器('迪吉里杜管', '铃鼓', '木琴', '手风琴', '阿尔卑斯号角', '风笛', '班卓琴', '邦戈鼓', '卡萨巴', '响板', '单簧管', '古钢琴', '手风琴(六角形)', '鼓', '扬琴', '长笛', '刮瓜', '吉他', '口琴', '竖琴', '沙槌', '陶笛', '钢琴', '萨克斯管', '锡塔尔琴', '钢鼓', '长号', '小号', '大号', '小提琴')的图像数据集进行训练,得到一个训练精度较高的模型,并将其
6 0
【乐器识别系统】图像识别+人工智能+深度学习+Python+TensorFlow+卷积神经网络+模型训练
|
2天前
|
机器人 API 开发者
Python基于Mirai开发的QQ机器人保姆式教程(亲测可用)
Python基于Mirai开发的QQ机器人保姆式教程(亲测可用)
|
3天前
|
机器学习/深度学习 人工智能 数据挖掘
如何系统地自学 Python?
如何系统地自学 Python?
8 0
|
3天前
|
Linux 编译器 C语言
Python的系统路径
Python的系统路径
5 0
|
5天前
|
机器学习/深度学习 数据采集 人工智能
Python 高级实战:基于自然语言处理的情感分析系统
**摘要:** 本文介绍了基于Python的情感分析系统,涵盖了从数据准备到模型构建的全过程。首先,讲解了如何安装Python及必需的NLP库,如nltk、sklearn、pandas和matplotlib。接着,通过抓取IMDb电影评论数据并进行预处理,构建情感分析模型。文中使用了VADER库进行基本的情感分类,并展示了如何使用`LogisticRegression`构建机器学习模型以提高分析精度。最后,提到了如何将模型部署为实时Web服务。本文旨在帮助读者提升在NLP和情感分析领域的实践技能。
17 0
|
10天前
|
人工智能 搜索推荐 机器人
开发者选择:全面对比导购APP、淘宝客机器人与淘客系统
开发者选择:全面对比导购APP、淘宝客机器人与淘客系统
|
12天前
|
机器学习/深度学习 监控 算法
使用Python和OpenCV实现简单的人脸识别系统
使用Python和OpenCV实现简单的人脸识别系统
21 0

热门文章

最新文章