用讯飞星火认知大模型构建一个带界面的聊天机器人

在本篇博客中,我们将使用 最新的星火认知大模型和 Tkinter 构建一个简单的聊天机器人界面。通过这个界面,用户可以与聊天机器人进行交互,并查看机器人的回答。
C:\pythoncode\blog\static_16919367030710594_SparkApi_Python\testui.py
在这里插入图片描述

准备工作

在开始之前,我们需要准备一些工作:

  • 安装 Python 和 Tkinter:确保您的计算机上已经安装了 Python,并且 Tkinter 模块可以正常工作。

  • 获取 SparkApi 的密钥信息:在控制台中获取您的 SparkApi 密钥信息,包括 APPID、APISecret 和 APIKey。这些信息将用于与 SparkApi 建立连接并获取回答。

  • 导入所需的模块:我们将使用 Tkinter 构建界面,并使用自定义的 SparkApi 模块与聊天机器人进行通信。确保已导入 tkinterSparkApi 模块。

创建界面

首先,我们需要创建一个 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 构建了一个简单的聊天机器人界面。通过这个界面,用户可以与聊天机器人进行交互,并查看机器人的回答。通过这个简单的界面,我们可以将聊天机器人集成到各种应用中,提供智能化的对话功能。希望本篇博客对您有所帮助,谢谢阅读!

扫描二维码关注公众号,回复: 16307982 查看本文章

参考样例:https://www.xfyun.cn/doc/spark/Web.html#_2-%E8%B0%83%E7%94%A8%E7%A4%BA%E4%BE%8B

猜你喜欢

转载自blog.csdn.net/winniezhang/article/details/132375902