积分冻结释放

This commit is contained in:
2026-07-24 09:18:05 +08:00
parent 920d884e92
commit 68e902b4a4
38 changed files with 4743 additions and 391 deletions
+17 -3
View File
@@ -238,14 +238,14 @@ async def _call_openai_compatible(
user_content: str,
image_urls: list[str],
video_urls: list[str],
*,
as_base64: bool,
) -> tuple[dict, dict | None]:
"""构建多模态 user_message。返回 (actual_message, log_message)。"""
from app.utils.media import media_to_base64
content_parts = [{"type": "text", "text": user_content}]
from app.utils.media import get_llm_media_as_base64
as_base64 = await get_llm_media_as_base64(db)
for img in image_urls:
if as_base64:
url = await media_to_base64(img, "image/png")
@@ -303,8 +303,18 @@ async def _call_openai_compatible(
return f"{base}{path}"
if image_urls or video_urls:
from app.utils.media import get_llm_media_as_base64
as_base64 = await get_llm_media_as_base64(db)
# 配置读取后立即结束事务;后续 URL 下载/Base64 转换属于外部 I/O
# 不能继续占用数据库连接。
if db is not None:
await db.commit()
user_message, log_user_message = await _build_multimodal_content(
user_content, image_urls, video_urls
user_content,
image_urls,
video_urls,
as_base64=as_base64,
)
else:
user_message = {
@@ -313,6 +323,10 @@ async def _call_openai_compatible(
}
log_user_message = None
# 防御性结束可能由配置读取开启的只读事务;HTTP 请求期间不占用数据库连接。
if db is not None:
await db.commit()
async with httpx.AsyncClient(timeout=120) as client:
request_data = {
"model": config.model_name,