在本篇博客中,我们将使用 最新的星火认知大模型和 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 messagebox
def 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 = 0
def getText(role,content):
jsoncon = {}
jsoncon["role"] = role
jsoncon["content"] = content
text.append(jsoncon)
return text
def getlength(text):
length = 0
for content in text:
temp = content["content"]
leng = len(temp)
length += leng
return length
def checklen(text):
while (getlength(text) > 8000):
del text[0]
return text
def 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