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()

 

聊天界面設計(原文獲取源代碼)

源碼地址


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM