import sys
import requests
from PySide6.QtWidgets import QApplication, QWidget, QVBoxLayout, QPushButton, QTextEdit, QLineEdit, QLabel
from PySide6.QtGui import QFont
class MainWindow(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
# 设置窗口标题和初始大小
self.setWindowTitle("业哥为你答疑解惑 V1.0")
self.setGeometry(300, 300, 800, 600)
# 创建提示文本标签
self.tip_label = QLabel("由于“业哥”的解答是基于互联网上搜索的内容,所以输出内容是JSON格式。"
"而JSON格式本身是用于数据交换的,并不直接支持格式化显示。"
"JSON格式的数据通常以键值对的形式存在,并且嵌套结构可以非常复杂,如果直接以文本形式展示,会显得比较混乱。"
"后续我会研究如何解析JSON数据,然后根据数据结构生成相应的Markdown语法,让显示的内容更易读一些。")
self.tip_label.setWordWrap(True)
self.tip_label.setFont(QFont("Arial", 10))
# 创建日志输出框
self.log_edit = QTextEdit()
self.log_edit.setReadOnly(True)
self.log_edit.setPlaceholderText("业哥的回复将显示在这里")
self.log_edit.setFont(QFont("Arial", 12))
# 创建输入框和提示词
self.input_edit = QLineEdit()
self.input_edit.setPlaceholderText("请输入你的问题")
self.input_edit.setFont(QFont("Arial", 12))
# 创建确定按钮
self.confirm_button = QPushButton("确定")
self.confirm_button.setFont(QFont("Arial", 12))
self.confirm_button.clicked.connect(self.on_confirm_clicked)
# 创建布局并添加控件
layout = QVBoxLayout()
layout.addWidget(self.tip_label)
layout.addWidget(self.log_edit)
layout.addWidget(self.input_edit)
layout.addWidget(self.confirm_button)
self.setLayout(layout)
def on_confirm_clicked(self):
# 获取用户输入
user_input = self.input_edit.text()
if not user_input:
self.log_edit.append("请输入问题")
return
# 发送请求到 Coze API
self.send_to_coze(user_input)
def send_to_coze(self, query):
headers = {
'Authorization': 'Bearer pat_xxx', # 替换为你的Bearer Token
'Content-Type': 'application/json',
'Connection': 'keep-alive',
'Accept': '*/*'
}
data = {
'bot_id': '738xxxxxx', # 替换为你的Bot ID
'user': 'admin',
'query': query,
'stream': False
}
try:
response = requests.post('https://api.coze.cn/open_api/v2/chat', headers=headers, json=data)
response.raise_for_status() # 如果响应状态不是 200,将抛出异常
response_data = response.json()
# 显示 Coze 的回复
self.display_response(response_data)
except requests.exceptions.RequestException as e:
self.log_edit.append(f"请求 Coze API 时发生错误: {e}")
def display_response(self, response_data):
# 检查响应中是否有 'messages' 键,并遍历消息
if 'messages' in response_data:
for message in response_data['messages']:
# 检查消息的角色是否为 'assistant' 且类型为 'answer'
if message.get('role') == 'assistant' and message.get('type') == 'answer':
# 将回复内容添加到日志框
self.log_edit.append(message.get('content', ''))
if __name__ == '__main__':
app = QApplication(sys.argv)
mainWin = MainWindow()
mainWin.show()sys.exit(app.exec())