Python AI智能聊天
首先项目需要的包import urllib.requestimport urllib.parsefrom tkinter import *import time
函数部分
说明:调用服务器接口,实现非特定智能回复
def get_robot_replay(question):'''函数功能:对于特定的问题进行特定的回答,对于其他非特定的问题进行智能回复参数描述:question:聊天内容或者问题返回值:str,回复内容'''if "你叫什么名字"in question:answer ="我是游游"elif "你多少岁"in question:answer="18"elif "你是GG还是MM"in question:answer="MM"else:try:# 调用NLP接口实现智能回复params=urllib.parse.urlencode({'msg':question}).encode() #将str转换成字节类型,参数接口需要进行URL编码req = urllib.request.Request("/chat_robot",params,method="POST")#创建请求对象answer=urllib.request.urlopen(req).read().decode()#调用接口(向目标服务器发送HTTP请求)except Exception as e:answer="AI机器人出现故障!(原因:%s)" % ereturn answer
回复格式方面以及界面设计
def msgsend():msg = '我' + time.strftime('%Y-%m-%d %H:%M:%S', time.localtime()) + '\n'txt_msglist.insert(END, msg, 'green') # 添加时间txt_msglist.insert(END, txt_msgsend.get('0.0', END)) # 获取发送消息,添加文本到消息列表msg1 = '游游大宝贝' + time.strftime('%Y-%m-%d %H:%M:%S', time.localtime()) + '\n'txt_msglist.insert(END, msg1, 'green') # 添加时间txt_msglist.insert(END,get_robot_replay(txt_msgsend.get('0.0', END)))txt_msgsend.delete('0.0', END) # 清空发送消息def cancel():txt_msgsend.delete('0.0', END) # 取消发送消息,即清空发送消息'''绑定up键'''def msgsendEvent(event):if event.keysym == 'Up':msgsend()
聊天界面设计
tk = Tk()tk.title('和游游大宝贝的秘聊')'''创建分区'''f_msglist = Frame(height=300, width=300) # 创建<消息列表分区 >f_msgsend = Frame(height=300, width=300) # 创建<发送消息分区 >f_floor = Frame(height=100, width=300) # 创建<按钮分区>f_right = Frame(height=700, width=100) # 创建<图片分区>'''创建控件'''txt_msglist = Text(f_msglist) # 消息列表分区中创建文本控件txt_msglist.tag_config('green', foreground='blue') # 消息列表分区中创建标签txt_msgsend = Text(f_msgsend) # 发送消息分区中创建文本控件txt_msgsend.bind('<KeyPress-Up>', msgsendEvent) # 发送消息分区中,绑定‘UP’键与消息发送。'''txt_right = Text(f_right) #图片显示分区创建文本控件'''button_send = Button(f_floor, text='Sendz', command=msgsend) # 按钮分区中创建按钮并绑定发送消息函数button_cancel = Button(f_floor, text='Cancel', command=cancel) # 分区中创建取消按钮并绑定取消函数'''分区布局'''f_msglist.grid(row=0, column=0) # 消息列表分区f_msgsend.grid(row=1, column=0) # 发送消息分区f_floor.grid(row=2, column=0) # 按钮分区f_right.grid(row=0, column=1, rowspan=3) # 图片显示分区txt_msglist.grid() # 消息列表文本控件加载txt_msgsend.grid() # 消息发送文本控件加载button_send.grid(row=0, column=0, sticky=W) # 发送按钮控件加载button_cancel.grid(row=0, column=1, sticky=W) # 取消按钮控件加载tk.mainloop()
运行截图