优化了代码规范

This commit is contained in:
Windpicker-owo
2025-07-17 15:35:13 +08:00
parent 367be4e7d7
commit 830acaf35f
3 changed files with 29 additions and 32 deletions

View File

@@ -155,11 +155,11 @@ class MessageRecv(Message):
self.has_emoji = True self.has_emoji = True
self.is_emoji = True self.is_emoji = True
self.is_picid = False self.is_picid = False
self.is_voice = False
if isinstance(segment.data, str): if isinstance(segment.data, str):
return await get_image_manager().get_emoji_description(segment.data) return await get_image_manager().get_emoji_description(segment.data)
return "[发了一个表情包,网卡了加载不出来]" return "[发了一个表情包,网卡了加载不出来]"
elif segment.type == "voice": elif segment.type == "voice":
self.has_picid = False
self.is_picid = False self.is_picid = False
self.is_emoji = False self.is_emoji = False
self.is_voice = True self.is_voice = True
@@ -169,11 +169,13 @@ class MessageRecv(Message):
elif segment.type == "mention_bot": elif segment.type == "mention_bot":
self.is_picid = False self.is_picid = False
self.is_emoji = False self.is_emoji = False
self.is_voice = False
self.is_mentioned = float(segment.data) # type: ignore self.is_mentioned = float(segment.data) # type: ignore
return "" return ""
elif segment.type == "priority_info": elif segment.type == "priority_info":
self.is_picid = False self.is_picid = False
self.is_emoji = False self.is_emoji = False
self.is_voice = False
if isinstance(segment.data, dict): if isinstance(segment.data, dict):
# 处理优先级信息 # 处理优先级信息
self.priority_mode = "priority" self.priority_mode = "priority"
@@ -222,10 +224,12 @@ class MessageRecvS4U(MessageRecv):
""" """
try: try:
if segment.type == "text": if segment.type == "text":
self.is_voice = False
self.is_picid = False self.is_picid = False
self.is_emoji = False self.is_emoji = False
return segment.data # type: ignore return segment.data # type: ignore
elif segment.type == "image": elif segment.type == "image":
self.is_voice = False
# 如果是base64图片数据 # 如果是base64图片数据
if isinstance(segment.data, str): if isinstance(segment.data, str):
self.has_picid = True self.has_picid = True
@@ -252,11 +256,13 @@ class MessageRecvS4U(MessageRecv):
return await get_voice_text(segment.data) return await get_voice_text(segment.data)
return "[发了一段语音,网卡了加载不出来]" return "[发了一段语音,网卡了加载不出来]"
elif segment.type == "mention_bot": elif segment.type == "mention_bot":
self.is_voice = False
self.is_picid = False self.is_picid = False
self.is_emoji = False self.is_emoji = False
self.is_mentioned = float(segment.data) # type: ignore self.is_mentioned = float(segment.data) # type: ignore
return "" return ""
elif segment.type == "priority_info": elif segment.type == "priority_info":
self.is_voice = False
self.is_picid = False self.is_picid = False
self.is_emoji = False self.is_emoji = False
if isinstance(segment.data, dict): if isinstance(segment.data, dict):
@@ -271,6 +277,7 @@ class MessageRecvS4U(MessageRecv):
""" """
return "" return ""
elif segment.type == "gift": elif segment.type == "gift":
self.is_voice = False
self.is_gift = True self.is_gift = True
# 解析gift_info格式为"名称:数量" # 解析gift_info格式为"名称:数量"
name, count = segment.data.split(":", 1) # type: ignore name, count = segment.data.split(":", 1) # type: ignore

View File

@@ -1,17 +1,5 @@
import base64 import base64
import os
import time
import hashlib
import uuid
from typing import Optional, Tuple
from PIL import Image
import io
import numpy as np
import asyncio
from src.common.database.database import db
from src.common.database.database_model import Images, ImageDescriptions
from src.config.config import global_config from src.config.config import global_config
from src.llm_models.utils_model import LLMRequest from src.llm_models.utils_model import LLMRequest

View File

@@ -310,7 +310,7 @@ class LLMRequest:
prompt: prompt文本 prompt: prompt文本
image_base64: 图片的base64编码 image_base64: 图片的base64编码
image_format: 图片格式 image_format: 图片格式
file_base64: 文件的二进制数据 file_bytes: 文件的二进制数据
file_format: 文件格式 file_format: 文件格式
payload: 请求体数据 payload: 请求体数据
retry_policy: 自定义重试策略 retry_policy: 自定义重试策略
@@ -335,23 +335,21 @@ class LLMRequest:
if request_content["stream_mode"]: if request_content["stream_mode"]:
headers["Accept"] = "text/event-stream" headers["Accept"] = "text/event-stream"
async with aiohttp.ClientSession(connector=await get_tcp_connector()) as session: async with aiohttp.ClientSession(connector=await get_tcp_connector()) as session:
if file_bytes: post_kwargs = {"headers": headers}
#form-data数据上传方式不同 #form-data数据上传方式不同
async with session.post( if file_bytes:
request_content["api_url"], headers=headers, data=request_content["payload"] post_kwargs["data"] = request_content["payload"]
) as response:
handled_result = await self._handle_response(
response, request_content, retry, response_handler, user_id, request_type, endpoint
)
return handled_result
else: else:
post_kwargs["json"] = request_content["payload"]
async with session.post( async with session.post(
request_content["api_url"], headers=headers, json=request_content["payload"] request_content["api_url"], **post_kwargs
) as response: ) as response:
handled_result = await self._handle_response( handled_result = await self._handle_response(
response, request_content, retry, response_handler, user_id, request_type, endpoint response, request_content, retry, response_handler, user_id, request_type, endpoint
) )
return handled_result return handled_result
except Exception as e: except Exception as e:
handled_payload, count_delta = await self._handle_exception(e, retry, request_content) handled_payload, count_delta = await self._handle_exception(e, retry, request_content)
retry += count_delta # 降级不计入重试次数 retry += count_delta # 降级不计入重试次数
@@ -666,7 +664,7 @@ class LLMRequest:
new_params["max_completion_tokens"] = new_params.pop("max_tokens") new_params["max_completion_tokens"] = new_params.pop("max_tokens")
return new_params return new_params
async def _build_formdata_payload(self, file_bytes: str, file_format: str): async def _build_formdata_payload(self, file_bytes: str, file_format: str) -> aiohttp.FormData:
"""构建form-data请求体""" """构建form-data请求体"""
# 目前只适配了音频文件 # 目前只适配了音频文件
# 如果后续要支持其他类型的文件,可以在这里添加更多的处理逻辑 # 如果后续要支持其他类型的文件,可以在这里添加更多的处理逻辑
@@ -679,10 +677,14 @@ class LLMRequest:
"aac": "audio/aac", "aac": "audio/aac",
} }
content_type = content_type_list.get(file_format)
if not content_type:
logger.warning(f"暂不支持的文件类型: {file_format}")
data.add_field( data.add_field(
"file",io.BytesIO(file_bytes), "file",io.BytesIO(file_bytes),
filename=f"file.{file_format}", filename=f"file.{file_format}",
content_type=f'audio/{content_type_list[file_format]}' # 根据实际文件类型设置 content_type=f'{content_type_list[file_format]}' # 根据实际文件类型设置
) )
data.add_field( data.add_field(
"model", self.model_name "model", self.model_name