使用DeepSeek建立一个智能聊天机器人0.12
为了确保这段代码能够在Windows和Linux系统上都能正常运行,我考虑以下几个方面:
路径分隔符:在Windows和Linux中,文件路径的分隔符不同。Windows使用反斜杠(\),而Linux使用正斜杠(/)。我们可以使用 os.path.join 来处理路径,以确保跨平台兼容性。
消息框:tkinter.messagebox 在不同操作系统上的表现可能会有所不同。确保使用 tkinter.messagebox 的标准方法来显示消息框。
文件对话框:tkinter.filedialog 用于打开和保存文件对话框。这些对话框在不同操作系统上的表现也有所不同,但 tkinter.filedialog 已经处理了大部分跨平台的问题。
线程处理:threading 模块在不同操作系统上的行为是一致的,因此不需要特别处理。
环境变量加载:dotenv 模块可以跨平台加载环境变量,确保在不同操作系统上都能正确读取环境变量。
以下是完善后的代码:
import tkinter as tk
from tkinter import scrolledtext, filedialog, messagebox
import requests
import os
import threading
import json
from dotenv import load_dotenv
# 加载环境变量
load_dotenv()
# 从环境变量中获取API密钥和DeepSeek的API端点
API_KEY = os.getenv('DEEPSEEK_API_KEY')
DEFAULT_API_URL = os.getenv('DEEPSEEK_API_URL', 'https://api.deepseek.com/v1/chat')
# 配置文件路径
CONFIG_FILE = os.path.join(os.getcwd(), 'config.json')
# 如果环境变量未设置,尝试从配置文件中读取
if not API_KEY or not DEFAULT_API_URL:
try:
with open(CONFIG_FILE, 'r') as f:
config = json.load(f)
API_KEY = config.get('API_KEY', API_KEY)
DEFAULT_API_URL = config.get('DEFAULT_API_URL', DEFAULT_API_URL)
except (FileNotFoundError, json.JSONDecodeError) as e:
messagebox.showwarning("警告", f"配置文件加载失败: {
str(e)}")
API_KEY = ''
DEFAULT_API_URL = 'https://api.deepseek.com/v1/chat'
# 从配置文件中读取多个API节点和其他配置
try:
with open(CONFIG_FILE, 'r') as f:
config = json.load(f)
API_NODES = config.get('API_NODES', [DEFAULT_API_URL])
MAX_TOKENS = config.get('MAX_TOKENS', 150)
TIMEOUT = config.get('TIMEOUT', 10)
MODEL = config.get('MODEL', 'deepseek-7b')
except (FileNotFoundError, json.JSONDecodeError) as e:
messagebox.showwarning("警告", f"配置文件加载失败: {
str(e)}")
API_NODES = [DEFAULT_API_URL]
MAX_TOKENS = 150
TIMEOUT = 10
MODEL = 'deepseek-7b'
# 当前使用的API节点
CURRENT_API_URL = API_NODES[0]
# 存储对话历史
conversation_history = []
def get_response(prompt):
headers = {
'Authorization':</