Spaces:
Paused
Paused
Update backend_api.py
Browse files- backend_api.py +9 -7
backend_api.py
CHANGED
|
@@ -729,13 +729,16 @@ def extract_reasoning(code: str, language: str) -> str:
|
|
| 729 |
async def generate_code(request: CodeGenerationRequest, authorization: Optional[str] = Header(None)):
|
| 730 |
query = request.query
|
| 731 |
language = request.language
|
| 732 |
-
model_id = request.model_id # Ví dụ: "gemini-1.5-flash"
|
|
|
|
|
|
|
|
|
|
|
|
|
| 733 |
|
| 734 |
async def event_stream() -> AsyncGenerator[str, None]:
|
| 735 |
try:
|
| 736 |
-
# 1. Khởi tạo model
|
| 737 |
-
|
| 738 |
-
model = genai.GenerativeModel(model_id)
|
| 739 |
|
| 740 |
# 2. Định nghĩa System Prompt
|
| 741 |
system_prompt = SYSTEM_PROMPT_CACHE.get(language, GENERIC_SYSTEM_PROMPT.format(language=language))
|
|
@@ -747,7 +750,6 @@ async def generate_code(request: CodeGenerationRequest, authorization: Optional[
|
|
| 747 |
# 4. Stream phản hồi về frontend
|
| 748 |
for chunk in response:
|
| 749 |
if chunk.text:
|
| 750 |
-
# Giữ nguyên định dạng JSON để frontend không cần sửa code
|
| 751 |
yield f"data: {json.dumps({'type': 'chunk', 'content': chunk.text})}\n\n"
|
| 752 |
await asyncio.sleep(0.001)
|
| 753 |
|
|
@@ -755,11 +757,11 @@ async def generate_code(request: CodeGenerationRequest, authorization: Optional[
|
|
| 755 |
yield f"data: {json.dumps({'type': 'complete'})}\n\n"
|
| 756 |
|
| 757 |
except Exception as e:
|
| 758 |
-
# Gửi thông báo lỗi chi tiết
|
| 759 |
yield f"data: {json.dumps({'type': 'error', 'message': str(e)})}\n\n"
|
| 760 |
|
| 761 |
return StreamingResponse(event_stream(), media_type="text/event-stream")
|
| 762 |
-
|
| 763 |
@app.post("/api/deploy")
|
| 764 |
async def deploy(
|
| 765 |
request: DeploymentRequest,
|
|
|
|
| 729 |
async def generate_code(request: CodeGenerationRequest, authorization: Optional[str] = Header(None)):
|
| 730 |
query = request.query
|
| 731 |
language = request.language
|
| 732 |
+
model_id = request.model_id # Ví dụ: "gemini-1.5-flash"
|
| 733 |
+
|
| 734 |
+
# Đảm bảo model_id có tiền tố 'models/' để tránh lỗi 404
|
| 735 |
+
if not model_id.startswith("models/"):
|
| 736 |
+
model_id = f"models/{model_id}"
|
| 737 |
|
| 738 |
async def event_stream() -> AsyncGenerator[str, None]:
|
| 739 |
try:
|
| 740 |
+
# 1. Khởi tạo model với ID đã chuẩn hóa
|
| 741 |
+
model = genai.GenerativeModel(model_name=model_id)
|
|
|
|
| 742 |
|
| 743 |
# 2. Định nghĩa System Prompt
|
| 744 |
system_prompt = SYSTEM_PROMPT_CACHE.get(language, GENERIC_SYSTEM_PROMPT.format(language=language))
|
|
|
|
| 750 |
# 4. Stream phản hồi về frontend
|
| 751 |
for chunk in response:
|
| 752 |
if chunk.text:
|
|
|
|
| 753 |
yield f"data: {json.dumps({'type': 'chunk', 'content': chunk.text})}\n\n"
|
| 754 |
await asyncio.sleep(0.001)
|
| 755 |
|
|
|
|
| 757 |
yield f"data: {json.dumps({'type': 'complete'})}\n\n"
|
| 758 |
|
| 759 |
except Exception as e:
|
| 760 |
+
# Gửi thông báo lỗi chi tiết để debug
|
| 761 |
yield f"data: {json.dumps({'type': 'error', 'message': str(e)})}\n\n"
|
| 762 |
|
| 763 |
return StreamingResponse(event_stream(), media_type="text/event-stream")
|
| 764 |
+
|
| 765 |
@app.post("/api/deploy")
|
| 766 |
async def deploy(
|
| 767 |
request: DeploymentRequest,
|