Update main.py
Browse files
main.py
CHANGED
@@ -9,7 +9,7 @@ import base64
|
|
9 |
from aiohttp import ClientSession, ClientTimeout, ClientError
|
10 |
from fastapi import FastAPI, HTTPException, Request
|
11 |
from pydantic import BaseModel
|
12 |
-
from typing import List, Dict, Any, Optional, AsyncGenerator
|
13 |
from datetime import datetime
|
14 |
from fastapi.responses import StreamingResponse
|
15 |
|
@@ -371,6 +371,20 @@ def create_response(content: str, model: str, finish_reason: Optional[str] = Non
|
|
371 |
async def chat_completions(request: ChatRequest, req: Request):
|
372 |
logger.info(f"Received chat completions request: model='{request.model}' messages={request.messages} stream={request.stream} webSearchMode={request.webSearchMode} image={request.image}")
|
373 |
try:
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
374 |
# Convert Pydantic messages to dicts
|
375 |
messages = [{"role": msg.role, "content": msg.content} for msg in request.messages]
|
376 |
|
|
|
9 |
from aiohttp import ClientSession, ClientTimeout, ClientError
|
10 |
from fastapi import FastAPI, HTTPException, Request
|
11 |
from pydantic import BaseModel
|
12 |
+
from typing import List, Dict, Any, Optional, AsyncGenerator, Union
|
13 |
from datetime import datetime
|
14 |
from fastapi.responses import StreamingResponse
|
15 |
|
|
|
371 |
async def chat_completions(request: ChatRequest, req: Request):
|
372 |
logger.info(f"Received chat completions request: model='{request.model}' messages={request.messages} stream={request.stream} webSearchMode={request.webSearchMode} image={request.image}")
|
373 |
try:
|
374 |
+
# Validate that all messages have string content
|
375 |
+
for idx, msg in enumerate(request.messages):
|
376 |
+
if not isinstance(msg.content, str):
|
377 |
+
logger.error(f"Message at index {idx} has invalid content type: {type(msg.content)}")
|
378 |
+
raise HTTPException(
|
379 |
+
status_code=422,
|
380 |
+
detail=[{
|
381 |
+
"type": "string_type",
|
382 |
+
"loc": ["body", "messages", idx, "content"],
|
383 |
+
"msg": "Input should be a valid string",
|
384 |
+
"input": msg.content
|
385 |
+
}]
|
386 |
+
)
|
387 |
+
|
388 |
# Convert Pydantic messages to dicts
|
389 |
messages = [{"role": msg.role, "content": msg.content} for msg in request.messages]
|
390 |
|