python职能问答_Python 智能聊天机器人的实现|制作一个虚拟恋人-问答-阿里云开发者社区-阿里云...

首先项目需要的包

import urllib.request

import urllib.parse

from 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("http://api.itmojun.com/chat_robot",params,method="POST")#创建请求对象

answer=urllib.request.urlopen(req).read().decode()#调用接口(向目标服务器发送HTTP请求)

except Exception as e:

answer="AI机器人出现故障!(原因:%s)" % e

return 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('', 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()

运行截图

加入阿里云钉钉群享福利:每周技术直播,定期群内有奖活动、大咖问答

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值