首頁 > 軟體

基於Python製作AI聊天軟體的範例程式碼

2022-07-05 10:00:22

效果圖

先看一下效果圖

就當是女友無聊的時候自己抽不出時間的小分身吧!

需要用到的庫

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聊天軟體的資料請關注it145.com其它相關文章!


IT145.com E-mail:sddin#qq.com