forked from taurusduan/EleFunAI
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathTalkChatgpt.py
More file actions
48 lines (46 loc) · 2.22 KB
/
TalkChatgpt.py
File metadata and controls
48 lines (46 loc) · 2.22 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
from PySide6.QtWidgets import QDialog, QVBoxLayout, QLabel, QLineEdit, QHBoxLayout, QPushButton
from PySide6.QtCore import QSettings
class ConfigDialog(QDialog):
def __init__(self, parent=None):
super().__init__(parent)
self.setWindowTitle("ChatGPT 对话配置")
self.setFixedSize(460, 260)
lay = QVBoxLayout(self)
lay.setContentsMargins(16, 16, 16, 16)
lay.setSpacing(10)
lay.addWidget(QLabel("API Key"))
self.api_key = QLineEdit()
lay.addWidget(self.api_key)
lay.addWidget(QLabel("Base URL (例如 https://api.openai.com/v1)"))
self.base_url = QLineEdit()
lay.addWidget(self.base_url)
lay.addWidget(QLabel("Model (例如 gpt-4o-mini)"))
self.model = QLineEdit()
lay.addWidget(self.model)
row = QHBoxLayout(); row.addStretch(1)
b1 = QPushButton("取消"); b2 = QPushButton("保存")
b1.clicked.connect(self.reject); b2.clicked.connect(self.accept)
row.addWidget(b1); row.addWidget(b2)
lay.addLayout(row)
s = QSettings("GhostOS", "App")
self.api_key.setText(s.value("providers/talk/chatgpt/api_key", ""))
self.base_url.setText(s.value("providers/talk/chatgpt/base_url", ""))
self.model.setText(s.value("providers/talk/chatgpt/model", "gpt-4o-mini"))
def accept(self):
s = QSettings("GhostOS", "App")
s.setValue("providers/talk/chatgpt/api_key", self.api_key.text())
s.setValue("providers/talk/chatgpt/base_url", self.base_url.text())
s.setValue("providers/talk/chatgpt/model", self.model.text())
try:
import os, sys, json
root = os.path.dirname(sys.executable) if getattr(sys, 'frozen', False) else os.path.dirname(os.path.abspath(__file__))
d = os.path.join(root, 'json'); os.makedirs(d, exist_ok=True)
with open(os.path.join(d, 'talk_chatgpt.json'), 'w', encoding='utf-8') as f:
json.dump({
'api_key': self.api_key.text(),
'base_url': self.base_url.text(),
'model': self.model.text()
}, f, ensure_ascii=False, indent=2)
except Exception:
pass
super().accept()