在本篇博客中,我们将使用 最新的星火认知大模型和 Tkinter 构建一个简单的聊天机器人界面。通过这个界面,用户可以与聊天机器人进行交互,并查看机器人的回答。
C:\pythoncode\blog\static_16919367030710594_SparkApi_Python\testui.py
准备工作
在开始之前,我们需要准备一些工作:
-
安装 Python 和 Tkinter:确保您的计算机上已经安装了 Python,并且 Tkinter 模块可以正常工作。
-
获取 SparkApi 的密钥信息:在控制台中获取您的 SparkApi 密钥信息,包括 APPID、APISecret 和 APIKey。这些信息将用于与 SparkApi 建立连接并获取回答。
-
导入所需的模块:我们将使用 Tkinter 构建界面,并使用自定义的 SparkApi 模块与聊天机器人进行通信。确保已导入
tkinter
和SparkApi
模块。
创建界面
首先,我们需要创建一个 Tkinter 窗口和一些组件,以构建聊天机器人界面。以下是创建界面的代码:
import tkinter as tk
import SparkApi
from tkinter import messagebox# 创建窗口
root = tk.Tk()
root.title("Chatbot")# 创建文本框
textEdit = tk.Text(root)
textEdit.pack()# 创建发送按钮
sendButton = tk.Button(root, text="发送", command=sendMessage)
sendButton.pack()# 运行主循环
root.mainloop()
在上述代码中,我们创建了一个名为 root
的 Tkinter 窗口,并设置窗口的标题为 “Chatbot”。然后,我们创建了一个文本框 textEdit
和一个发送按钮 sendButton
。最后,使用 root.mainloop()
运行 Tkinter 的主循环,使窗口保持显示状态。
处理用户输入和获取回答
接下来,我们需要编写函数来处理用户的输入并获取聊天机器人的回答。以下是处理函数的代码:
def sendMessage():# 获取用户输入的文本inputText = textEdit.get("1.0", tk.END).strip()# 将用户输入的文本发送给 SparkApi,并获取回答answer = SparkApi.getAnswer(inputText)# 将回答显示在文本框中textEdit.insert(tk.END, answer)
在上述代码中,我们定义了一个名为 sendMessage()
的函数,该函数将作为发送按钮的回调函数。在函数内部,我们首先通过 textEdit.get("1.0", tk.END)
获取用户在文本框中输入的文本内容,并去除首尾的空白字符。然后,我们将用户的输入发送给 SparkApi,并获取聊天机器人的回答。最后,我们使用 textEdit.insert(tk.END, answer)
将回答显示在文本框中。
运行程序
完成了界面和处理函数的编写后,我们可以运行程序了。确保您已经将 SparkApi 的密钥信息配置正确,并且您的计算机上已经安装了所需的依赖。运行程序后,您将看到一个简单的聊天机器人界面,您可以在文本框中输入问题,并点击发送按钮,聊天机器人将会给出回答,并显示在文本框中。
全部代码
import tkinter as tk
import SparkApi
from tkinter import messageboxdef showMessage(message, title):messagebox.showinfo(title, message)#以下密钥信息从控制台获取
appid = "" #填写控制台中获取的 APPID 信息
api_secret = "" #填写控制台中获取的 APISecret 信息
api_key ="" #填写控制台中获取的 APIKey 信息#用于配置大模型版本,默认“general/generalv2”
domain = "general" # v1.5版本#云端环境的服务地址
Spark_url = "ws://spark-api.xf-yun.com/v1.1/chat" # v1.5环境的地址
text =[]# length = 0def getText(role,content):jsoncon = {}jsoncon["role"] = rolejsoncon["content"] = contenttext.append(jsoncon)return textdef getlength(text):length = 0for content in text:temp = content["content"]leng = len(temp)length += lengreturn lengthdef checklen(text):while (getlength(text) > 8000):del text[0]return textdef sendMessage():Input = textEdit.get("1.0", tk.END).strip()print(Input)question = checklen(getText("user",Input))print(question)SparkApi.answer =""print("星火:",end = "")SparkApi.main(appid,api_key,api_secret,Spark_url,domain,question)answer = getText("assistant",SparkApi.answer)answer_str = " ".join(answer)showMessage("Answer: " + answer_str, title="Answer")text.clear()
root = tk.Tk()
root.title("Chatbot")
textEdit = tk.Text(root)
textEdit.pack()
sendButton = tk.Button(root, text="发送", command=sendMessage)
sendButton.pack()
root.mainloop()
总结
本篇博客中,我们使用 Python 和 Tkinter 构建了一个简单的聊天机器人界面。通过这个界面,用户可以与聊天机器人进行交互,并查看机器人的回答。通过这个简单的界面,我们可以将聊天机器人集成到各种应用中,提供智能化的对话功能。希望本篇博客对您有所帮助,谢谢阅读!
参考样例:https://www.xfyun.cn/doc/spark/Web.html#_2-%E8%B0%83%E7%94%A8%E7%A4%BA%E4%BE%8B