Update api_service.py
Browse files- api_service.py +9 -9
api_service.py
CHANGED
|
@@ -90,7 +90,7 @@ class ApiService:
|
|
| 90 |
|
| 91 |
if stream:
|
| 92 |
# 流式响应
|
| 93 |
-
chunk_response = self._create_stream_chunk(chunk_text, request_id)
|
| 94 |
yield f"data: {json.dumps(chunk_response)}\n\n"
|
| 95 |
else:
|
| 96 |
# 非流式响应 - 等待完整内容
|
|
@@ -102,14 +102,14 @@ class ApiService:
|
|
| 102 |
|
| 103 |
if stream:
|
| 104 |
# 发送结束标记
|
| 105 |
-
final_chunk = self._create_stream_end_chunk(request_id)
|
| 106 |
yield f"data: {json.dumps(final_chunk)}\n\n"
|
| 107 |
yield "data: [DONE]\n\n"
|
| 108 |
|
| 109 |
logger.success(f"✅ 流式响应完成 [ID: {request_id[:8]}] [块数: {response_chunks}] [耗时: {duration:.2f}s]")
|
| 110 |
else:
|
| 111 |
# 返回完整响应
|
| 112 |
-
response = self._create_complete_response(total_content, request_id)
|
| 113 |
yield response
|
| 114 |
|
| 115 |
logger.success(f"✅ 完整响应完成 [ID: {request_id[:8]}] [长度: {len(total_content)}] [耗时: {duration:.2f}s]")
|
|
@@ -118,13 +118,13 @@ class ApiService:
|
|
| 118 |
logger.error(f"❌ 聊天请求处理失败 [ID: {request_id[:8]}]: {e}")
|
| 119 |
yield self._create_error_response(f"服务器内部错误: {str(e)}", request_id)
|
| 120 |
|
| 121 |
-
def _create_stream_chunk(self, content: str, request_id: str) -> Dict[str, Any]:
|
| 122 |
"""创建流式响应块"""
|
| 123 |
return {
|
| 124 |
"id": f"chatcmpl-{request_id}",
|
| 125 |
"object": "chat.completion.chunk",
|
| 126 |
"created": int(time.time()),
|
| 127 |
-
"model":
|
| 128 |
"choices": [{
|
| 129 |
"index": 0,
|
| 130 |
"delta": {"content": content},
|
|
@@ -132,13 +132,13 @@ class ApiService:
|
|
| 132 |
}]
|
| 133 |
}
|
| 134 |
|
| 135 |
-
def _create_stream_end_chunk(self, request_id: str) -> Dict[str, Any]:
|
| 136 |
"""创建流式响应结束块"""
|
| 137 |
return {
|
| 138 |
"id": f"chatcmpl-{request_id}",
|
| 139 |
"object": "chat.completion.chunk",
|
| 140 |
"created": int(time.time()),
|
| 141 |
-
"model":
|
| 142 |
"choices": [{
|
| 143 |
"index": 0,
|
| 144 |
"delta": {},
|
|
@@ -146,13 +146,13 @@ class ApiService:
|
|
| 146 |
}]
|
| 147 |
}
|
| 148 |
|
| 149 |
-
def _create_complete_response(self, content: str, request_id: str) -> Dict[str, Any]:
|
| 150 |
"""创建完整响应"""
|
| 151 |
return {
|
| 152 |
"id": f"chatcmpl-{request_id}",
|
| 153 |
"object": "chat.completion",
|
| 154 |
"created": int(time.time()),
|
| 155 |
-
"model":
|
| 156 |
"choices": [{
|
| 157 |
"index": 0,
|
| 158 |
"message": {
|
|
|
|
| 90 |
|
| 91 |
if stream:
|
| 92 |
# 流式响应
|
| 93 |
+
chunk_response = self._create_stream_chunk(chunk_text, request_id, model)
|
| 94 |
yield f"data: {json.dumps(chunk_response)}\n\n"
|
| 95 |
else:
|
| 96 |
# 非流式响应 - 等待完整内容
|
|
|
|
| 102 |
|
| 103 |
if stream:
|
| 104 |
# 发送结束标记
|
| 105 |
+
final_chunk = self._create_stream_end_chunk(request_id, model)
|
| 106 |
yield f"data: {json.dumps(final_chunk)}\n\n"
|
| 107 |
yield "data: [DONE]\n\n"
|
| 108 |
|
| 109 |
logger.success(f"✅ 流式响应完成 [ID: {request_id[:8]}] [块数: {response_chunks}] [耗时: {duration:.2f}s]")
|
| 110 |
else:
|
| 111 |
# 返回完整响应
|
| 112 |
+
response = self._create_complete_response(total_content, request_id, model)
|
| 113 |
yield response
|
| 114 |
|
| 115 |
logger.success(f"✅ 完整响应完成 [ID: {request_id[:8]}] [长度: {len(total_content)}] [耗时: {duration:.2f}s]")
|
|
|
|
| 118 |
logger.error(f"❌ 聊天请求处理失败 [ID: {request_id[:8]}]: {e}")
|
| 119 |
yield self._create_error_response(f"服务器内部错误: {str(e)}", request_id)
|
| 120 |
|
| 121 |
+
def _create_stream_chunk(self, content: str, request_id: str, model: str) -> Dict[str, Any]:
|
| 122 |
"""创建流式响应块"""
|
| 123 |
return {
|
| 124 |
"id": f"chatcmpl-{request_id}",
|
| 125 |
"object": "chat.completion.chunk",
|
| 126 |
"created": int(time.time()),
|
| 127 |
+
"model": model,
|
| 128 |
"choices": [{
|
| 129 |
"index": 0,
|
| 130 |
"delta": {"content": content},
|
|
|
|
| 132 |
}]
|
| 133 |
}
|
| 134 |
|
| 135 |
+
def _create_stream_end_chunk(self, request_id: str, model: str) -> Dict[str, Any]:
|
| 136 |
"""创建流式响应结束块"""
|
| 137 |
return {
|
| 138 |
"id": f"chatcmpl-{request_id}",
|
| 139 |
"object": "chat.completion.chunk",
|
| 140 |
"created": int(time.time()),
|
| 141 |
+
"model": model,
|
| 142 |
"choices": [{
|
| 143 |
"index": 0,
|
| 144 |
"delta": {},
|
|
|
|
| 146 |
}]
|
| 147 |
}
|
| 148 |
|
| 149 |
+
def _create_complete_response(self, content: str, request_id: str, model: str) -> Dict[str, Any]:
|
| 150 |
"""创建完整响应"""
|
| 151 |
return {
|
| 152 |
"id": f"chatcmpl-{request_id}",
|
| 153 |
"object": "chat.completion",
|
| 154 |
"created": int(time.time()),
|
| 155 |
+
"model": model,
|
| 156 |
"choices": [{
|
| 157 |
"index": 0,
|
| 158 |
"message": {
|