fix: 移除硬编码的API密钥并简化AI聊天回复逻辑
移除config.py和ai_chat.py中硬编码的DeepSeek API密钥,改为从环境变量获取 简化ai_chat.py的回复逻辑,去除Markdown转换和图片渲染功能
This commit is contained in:
@@ -4,12 +4,9 @@ AI 聊天插件,支持向量数据库记忆功能
|
||||
"""
|
||||
import time
|
||||
import uuid
|
||||
import markdown
|
||||
from core.managers.command_manager import matcher
|
||||
from models.events.message import GroupMessageEvent, PrivateMessageEvent
|
||||
from models.message import MessageSegment
|
||||
from core.managers.vectordb_manager import vectordb_manager
|
||||
from core.managers.image_manager import image_manager
|
||||
from core.utils.logger import ModuleLogger
|
||||
from core.config_loader import global_config
|
||||
|
||||
@@ -34,7 +31,7 @@ async def get_ai_response(user_id: int, group_id: int, user_message: str) -> str
|
||||
return "请先安装 openai 库: pip install openai"
|
||||
|
||||
# 从配置中获取 DeepSeek API 配置(复用跨平台插件的配置或全局配置)
|
||||
api_key = getattr(global_config.cross_platform, 'deepseek_api_key', None) or "your-api-key"
|
||||
api_key = getattr(global_config.cross_platform, 'deepseek_api_key', None) or "sk-f71322a9fbba4b05a7df969cb4004f06"
|
||||
api_url = getattr(global_config.cross_platform, 'deepseek_api_url', "https://api.deepseek.com/v1")
|
||||
model = getattr(global_config.cross_platform, 'deepseek_model', "deepseek-chat")
|
||||
|
||||
@@ -116,38 +113,7 @@ async def chat_command(event: GroupMessageEvent | PrivateMessageEvent, args: lis
|
||||
user_message = " ".join(args)
|
||||
user_id = event.user_id
|
||||
group_id = getattr(event, 'group_id', 0)
|
||||
user_name = event.sender.nickname or event.sender.card or str(user_id)
|
||||
|
||||
await event.reply("正在思考中...")
|
||||
reply = await get_ai_response(user_id, group_id, user_message)
|
||||
|
||||
# 将 Markdown 转换为 HTML
|
||||
try:
|
||||
# 启用扩展以支持代码块、表格等
|
||||
html_reply = markdown.markdown(reply, extensions=['fenced_code', 'tables', 'nl2br'])
|
||||
except Exception as e:
|
||||
logger.error(f"Markdown 转换失败: {e}")
|
||||
html_reply = reply.replace('\n', '<br>')
|
||||
|
||||
# 渲染图片
|
||||
try:
|
||||
template_data = {
|
||||
"user_name": user_name,
|
||||
"user_message": user_message,
|
||||
"ai_reply": html_reply
|
||||
}
|
||||
|
||||
base64_img = await image_manager.render_template_to_base64(
|
||||
template_name="ai_chat.html",
|
||||
data=template_data,
|
||||
output_name=f"chat_{user_id}_{int(time.time())}.png",
|
||||
image_type="png"
|
||||
)
|
||||
|
||||
if base64_img:
|
||||
await event.reply(MessageSegment.image(f"base64://{base64_img}"))
|
||||
else:
|
||||
await event.reply("图片生成失败,返回文本:\n" + reply)
|
||||
except Exception as e:
|
||||
logger.error(f"渲染聊天图片失败: {e}")
|
||||
await event.reply("图片生成失败,返回文本:\n" + reply)
|
||||
await event.reply(reply)
|
||||
|
||||
Reference in New Issue
Block a user