当前位置: 首页 > wzjs >正文

建设工程质量检测公司网站免费网页空间到哪申请

建设工程质量检测公司网站,免费网页空间到哪申请,软件工程考研容易上岸的学校,好的装修网站为了增强智能聊天机器人的功能,我增加以下几个方面的改进: 1.智能框架和算法:引入更复杂的对话管理逻辑,例如情感分析、上下文理解等。 2.链接能力:增强对多个API节点的管理和切换逻辑,确保高可用性。 3.配…

为了增强智能聊天机器人的功能,我增加以下几个方面的改进:

1.智能框架和算法:引入更复杂的对话管理逻辑,例如情感分析、上下文理解等。
2.链接能力:增强对多个API节点的管理和切换逻辑,确保高可用性。
3.配置管理:增加更多配置选项,如模型选择、最大token数、请求超时等。
以下是完善后的代码和 config.json 文件内容:
完善后的代码

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 = '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 = 150TIMEOUT = 10MODEL = 'deepseek-7b'# 当前使用的API节点
CURRENT_API_URL = API_NODES[0]# 存储对话历史
conversation_history = []def get_response(prompt):headers = {'Authorization': f'Bearer {API_KEY}','Content-Type': 'application/json'}data = {'model': MODEL,  # 使用的模型名称'messages': conversation_history + [{'role': 'user', 'content': prompt}],'max_tokens': MAX_TOKENS  # 生成的最大token数}for api_url in API_NODES:try:response = requests.post(api_url, json=data, headers=headers, timeout=TIMEOUT)response.raise_for_status()model_response = response.json()['choices'][0]['message']['content']conversation_history.append({'role': 'user', 'content': prompt})conversation_history.append({'role': 'assistant', 'content': model_response})return model_responseexcept requests.RequestException as e:chat_log.config(state=tk.NORMAL)chat_log.insert(tk.END, f"请求错误: {str(e)}\n")chat_log.config(state=tk.DISABLED)continueraise Exception("所有API节点均无法连接")def send_message():user_input = entry.get()if user_input.strip():chat_log.config(state=tk.NORMAL)chat_log.insert(tk.END, f"你: {user_input}\n")chat_log.config(state=tk.DISABLED)# 在新线程中处理API请求threading.Thread(target=process_response, args=(user_input,)).start()entry.delete(0, tk.END)chat_log.yview(tk.END)def process_response(user_input):try:response = get_response(user_input)chat_log.config(state=tk.NORMAL)chat_log.insert(tk.END, f"DeepSeek: {response}\n")chat_log.config(state=tk.DISABLED)chat_log.yview(tk.END)except Exception as e:chat_log.config(state=tk.NORMAL)chat_log.insert(tk.END, f"错误: {str(e)}\n")chat_log.config(state=tk.DISABLED)chat_log.yview(tk.END)def on_closing():root.destroy()def clear_conversation():global conversation_historyconversation_history = []chat_log.config(state=tk.NORMAL)chat_log.delete(1.0, tk.END)chat_log.config(state=tk.DISABLED)def load_config():file_path = filedialog.askopenfilename(filetypes=[("JSON files", "*.json")])if file_path:try:with open(file_path, 'r') as f:config = json.load(f)global API_KEY, DEFAULT_API_URL, API_NODES, CURRENT_API_URL, MAX_TOKENS, TIMEOUT, MODELAPI_KEY = config.get('API_KEY', '')DEFAULT_API_URL = config.get('DEFAULT_API_URL', 'https://api.deepseek.com/v1/chat')API_NODES = config.get('API_NODES', [DEFAULT_API_URL])CURRENT_API_URL = API_NODES[0]MAX_TOKENS = config.get('MAX_TOKENS', 150)TIMEOUT = config.get('TIMEOUT', 10)MODEL = config.get('MODEL', 'deepseek-7b')chat_log.config(state=tk.NORMAL)chat_log.insert(tk.END, f"配置加载成功: API_KEY={API_KEY}, API_NODES={API_NODES}, MAX_TOKENS={MAX_TOKENS}, TIMEOUT={TIMEOUT}, MODEL={MODEL}\n")chat_log.config(state=tk.DISABLED)except (FileNotFoundError, json.JSONDecodeError) as e:chat_log.config(state=tk.NORMAL)chat_log.insert(tk.END, f"错误: {str(e)}\n")chat_log.config(state=tk.DISABLED)def save_config():config = {'API_KEY': API_KEY,'DEFAULT_API_URL': DEFAULT_API_URL,'API_NODES': API_NODES,'MAX_TOKENS': MAX_TOKENS,'TIMEOUT': TIMEOUT,'MODEL': MODEL}file_path = filedialog.asksaveasfilename(defaultextension=".json", filetypes=[("JSON files", "*.json")])if file_path:try:with open(file_path, 'w') as f:json.dump(config, f, indent=4)chat_log.config(state=tk.NORMAL)chat_log.insert(tk.END, f"配置保存成功: {file_path}\n")chat_log.config(state=tk.DISABLED)except IOError as e:chat_log.config(state=tk.NORMAL)chat_log.insert(tk.END, f"错误: {str(e)}\n")chat_log.config(state=tk.DISABLED)def switch_node():global CURRENT_API_URLcurrent_index = API_NODES.index(CURRENT_API_URL)next_index = (current_index + 1) % len(API_NODES)CURRENT_API_URL = API_NODES[next_index]chat_log.config(state=tk.NORMAL)chat_log.insert(tk.END, f"切换到API节点: {CURRENT_API_URL}\n")chat_log.config(state=tk.DISABLED)root = tk.Tk()
root.title("智能聊天机器人")# 设置窗口大小
root.geometry("600x400")# 创建聊天记录区域
chat_log = scrolledtext.ScrolledText(root, wrap=tk.WORD, state=tk.DISABLED)
chat_log.pack(pady=10, padx=10, fill=tk.BOTH, expand=True)# 创建输入框
entry = tk.Entry(root, width=80)
entry.pack(pady=10, padx=10, side=tk.LEFT, fill=tk.X, expand=True)# 创建发送按钮
send_button = tk.Button(root, text="发送", command=send_message)
send_button.pack(pady=10, padx=10, side=tk.RIGHT)# 创建清除对话按钮
clear_button = tk.Button(root, text="清除对话", command=clear_conversation)
clear_button.pack(pady=10, padx=10, side=tk.RIGHT)# 创建加载配置按钮
load_config_button = tk.Button(root, text="加载配置", command=load_config)
load_config_button.pack(pady=10, padx=10, side=tk.RIGHT)# 创建保存配置按钮
save_config_button = tk.Button(root, text="保存配置", command=save_config)
save_config_button.pack(pady=10, padx=10, side=tk.RIGHT)# 创建切换节点按钮
switch_node_button = tk.Button(root, text="切换节点", command=switch_node)
switch_node_button.pack(pady=10, padx=10, side=tk.RIGHT)# 绑定关闭事件
root.protocol("WM_DELETE_WINDOW", on_closing)# 启动主循环
root.mainloop()

config.json文件内容

{"API_KEY": "your_api_key_here","DEFAULT_API_URL": "https://api.deepseek.com/v1/chat","API_NODES": ["https://api.deepseek.com/v1/chat","https://api.deepseek2.com/v1/chat","https://api.deepseek3.com/v1/chat"],"MAX_TOKENS": 150,"TIMEOUT": 10,"MODEL": "deepseek-7b"
}

解释
1.API_KEY: 你的DeepSeek API密钥。
2.DEFAULT_API_URL: 默认的API节点URL。
3.API_NODES: 一个包含多个API节点URL的列表,用于在请求失败时进行切换。
4.MAX_TOKENS: 每次请求生成的最大token数。
5.TIMEOUT: 请求的超时时间(秒)。
6.MODEL: 使用的模型名称。
如何使用
1.将上述 config.json 内容复制到一个名为 config.json 的文件中。
2.将 config.json 文件放在与你的Python脚本相同的目录下。
3.确保 API_KEY 和 API_NODES 中的URL是有效的。
读取配置文件的代码片段

# 从配置文件中读取多个API节点和其他配置
try:with open(CONFIG_FILE, 'r') as f:config = json.load(f)API_KEY = config.get('API_KEY', '')DEFAULT_API_URL = config.get('DEFAULT_API_URL', 'https://api.deepseek.com/v1/chat')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 = 150TIMEOUT = 10MODEL = 'deepseek-7b'

通过这些改进,你的智能聊天机器人将更加健壮,能够更好地管理和切换多个API节点,同时提供更多的配置选项,增强其智能框架和算法能力。

http://www.dtcms.com/wzjs/27074.html

相关文章:

  • 网站建设费可以一次性冲费用吗一个产品的网络营销方案
  • 微网站制作方案国外搜索引擎排行榜
  • 怎么让做的网站赚钱吗seo引擎
  • 一那个网站可以做一建题江苏网站建站系统哪家好
  • 凡客网站做SEO能被收录吗友情链接是啥意思
  • 动态网站设计分析淘宝推广
  • 高端设计网站都有哪些百度关键词模拟点击软件
  • 2017年网站推广怎么做百度网站推广排名优化
  • 网站做全景图抖音搜索seo
  • 西宁网站建设有限公司网络营销策略优化
  • anaconda可以做网站吗seo1搬到哪里去了
  • 网络营销推广的工具网站优化企业排名
  • 深圳出名的设计公司免费seo在线工具
  • 当前网站开发什么语言2023第三波疫情已经到来了
  • 少儿编程培训机构上海关键词排名优化价格
  • 英文网站建设平台杭州百度百科
  • 邢台做网站的东莞网站推广及优化
  • 景观小品设计网站推荐谷歌seo网站推广
  • 华为云建站怎么样网站标题算关键词优化吗
  • 中企动力做网站真贵网站优化靠谱seo
  • wap网站开发方案怎么做公司网站推广
  • 内蒙古工程建设协会官方网站线上推广有哪些渠道
  • 武汉做网站哪里好免费游戏推广平台
  • 推荐大良营销网站建设搜狗网站排名软件
  • 中国最新网络公司排名广州网站seo推广
  • 网站建设实例教程成都seo的方法
  • 网站要咋做今日新闻摘抄10条简短
  • 做微信扫码网站线下推广
  • 政府网站集约化建设有什么作用网红营销
  • 网站建设 提成学前端去哪个培训机构