Spaces:
Paused
Paused
Upload main.py
Browse files
main.py
CHANGED
|
@@ -228,7 +228,7 @@ async def chat_completions(request: Request, background_tasks: BackgroundTasks,
|
|
| 228 |
print(f"跳过没有role的消息: {message}")
|
| 229 |
continue
|
| 230 |
|
| 231 |
-
if
|
| 232 |
print(f"跳过空内容的消息: {message}")
|
| 233 |
continue
|
| 234 |
|
|
@@ -245,31 +245,31 @@ async def chat_completions(request: Request, background_tasks: BackgroundTasks,
|
|
| 245 |
continue
|
| 246 |
|
| 247 |
# 处理文本内容
|
| 248 |
-
|
| 249 |
-
|
|
|
|
| 250 |
has_text = True
|
| 251 |
-
continue
|
| 252 |
|
| 253 |
# 处理图片内容
|
| 254 |
image_url = item.get("image_url")
|
| 255 |
-
if
|
| 256 |
-
|
| 257 |
-
url
|
| 258 |
-
|
| 259 |
-
|
| 260 |
-
|
| 261 |
-
|
| 262 |
-
|
| 263 |
-
|
| 264 |
-
|
| 265 |
-
|
| 266 |
-
|
| 267 |
-
|
| 268 |
-
|
|
|
|
|
|
|
| 269 |
else:
|
| 270 |
-
|
| 271 |
-
else:
|
| 272 |
-
print(f"跳过无效的图片URL: {image_url}")
|
| 273 |
|
| 274 |
# 合并文本部分
|
| 275 |
if text_parts:
|
|
@@ -301,7 +301,7 @@ async def chat_completions(request: Request, background_tasks: BackgroundTasks,
|
|
| 301 |
print(f"删除了非预期类型的内容消息: {type(content)}")
|
| 302 |
|
| 303 |
if not cleaned_messages:
|
| 304 |
-
raise HTTPException(status_code=400, detail="
|
| 305 |
|
| 306 |
# 验证模型
|
| 307 |
if model not in MODELS:
|
|
@@ -572,7 +572,7 @@ async def images_generations(request: Request, api_key: str = Depends(verify_api
|
|
| 572 |
|
| 573 |
print(f"提取的路径: {extracted_path}")
|
| 574 |
|
| 575 |
-
# Step 5:
|
| 576 |
storage_url = f"https://api.chaton.ai/storage/{extracted_path}"
|
| 577 |
print(f"存储URL: {storage_url}")
|
| 578 |
|
|
@@ -634,7 +634,7 @@ def main():
|
|
| 634 |
|
| 635 |
# 检查 API_KEY 是否设置
|
| 636 |
if not os.environ.get("API_KEY"):
|
| 637 |
-
print("警告: API_KEY
|
| 638 |
|
| 639 |
# 确保 images 目录存在
|
| 640 |
if not os.path.exists("images"):
|
|
|
|
| 228 |
print(f"跳过没有role的消息: {message}")
|
| 229 |
continue
|
| 230 |
|
| 231 |
+
if content is None:
|
| 232 |
print(f"跳过空内容的消息: {message}")
|
| 233 |
continue
|
| 234 |
|
|
|
|
| 245 |
continue
|
| 246 |
|
| 247 |
# 处理文本内容
|
| 248 |
+
text = item.get("text")
|
| 249 |
+
if text and isinstance(text, str):
|
| 250 |
+
text_parts.append(text)
|
| 251 |
has_text = True
|
|
|
|
| 252 |
|
| 253 |
# 处理图片内容
|
| 254 |
image_url = item.get("image_url")
|
| 255 |
+
if image_url and isinstance(image_url, dict):
|
| 256 |
+
url = image_url.get("url")
|
| 257 |
+
if url and isinstance(url, str):
|
| 258 |
+
has_image = True
|
| 259 |
+
if is_base64_image(url):
|
| 260 |
+
try:
|
| 261 |
+
base64_str = url.split(",")[1]
|
| 262 |
+
filename = save_base64_image(base64_str)
|
| 263 |
+
base_url = app.state.base_url
|
| 264 |
+
image_url = f"{base_url}/images/{filename}"
|
| 265 |
+
images.append({"data": image_url})
|
| 266 |
+
except Exception as e:
|
| 267 |
+
print(f"处理base64图片时出错: {e}")
|
| 268 |
+
continue
|
| 269 |
+
else:
|
| 270 |
+
images.append({"data": url})
|
| 271 |
else:
|
| 272 |
+
print(f"跳过无效的图片URL: {image_url}")
|
|
|
|
|
|
|
| 273 |
|
| 274 |
# 合并文本部分
|
| 275 |
if text_parts:
|
|
|
|
| 301 |
print(f"删除了非预期类型的内容消息: {type(content)}")
|
| 302 |
|
| 303 |
if not cleaned_messages:
|
| 304 |
+
raise HTTPException(status_code=400, detail="所��消息的内容均为空。")
|
| 305 |
|
| 306 |
# 验证模型
|
| 307 |
if model not in MODELS:
|
|
|
|
| 572 |
|
| 573 |
print(f"提取的路径: {extracted_path}")
|
| 574 |
|
| 575 |
+
# Step 5: 拼接最的存储URL
|
| 576 |
storage_url = f"https://api.chaton.ai/storage/{extracted_path}"
|
| 577 |
print(f"存储URL: {storage_url}")
|
| 578 |
|
|
|
|
| 634 |
|
| 635 |
# 检查 API_KEY 是否设置
|
| 636 |
if not os.environ.get("API_KEY"):
|
| 637 |
+
print("警告: API_KEY 环境变量未设置。客户端验将无法正常工作。")
|
| 638 |
|
| 639 |
# 确保 images 目录存在
|
| 640 |
if not os.path.exists("images"):
|