KevinHuSh
commited on
Commit
·
56f682d
1
Parent(s):
719cc35
fix bug of chat without stream (#830)
Browse files### What problem does this PR solve?
### Type of change
- [x] Bug Fix (non-breaking change which fixes an issue)
- api/apps/api_app.py +7 -4
- api/apps/conversation_app.py +7 -4
- api/db/services/dialog_service.py +3 -5
api/apps/api_app.py
CHANGED
|
@@ -222,10 +222,13 @@ def completion():
|
|
| 222 |
resp.headers.add_header("Content-Type", "text/event-stream; charset=utf-8")
|
| 223 |
return resp
|
| 224 |
else:
|
| 225 |
-
|
| 226 |
-
|
| 227 |
-
|
| 228 |
-
|
|
|
|
|
|
|
|
|
|
| 229 |
|
| 230 |
except Exception as e:
|
| 231 |
return server_error_response(e)
|
|
|
|
| 222 |
resp.headers.add_header("Content-Type", "text/event-stream; charset=utf-8")
|
| 223 |
return resp
|
| 224 |
else:
|
| 225 |
+
answer = None
|
| 226 |
+
for ans in chat(dia, msg, **req):
|
| 227 |
+
answer = ans
|
| 228 |
+
fillin_conv(ans)
|
| 229 |
+
API4ConversationService.append_message(conv.id, conv.to_dict())
|
| 230 |
+
break
|
| 231 |
+
return get_json_result(data=answer)
|
| 232 |
|
| 233 |
except Exception as e:
|
| 234 |
return server_error_response(e)
|
api/apps/conversation_app.py
CHANGED
|
@@ -162,10 +162,13 @@ def completion():
|
|
| 162 |
return resp
|
| 163 |
|
| 164 |
else:
|
| 165 |
-
|
| 166 |
-
|
| 167 |
-
|
| 168 |
-
|
|
|
|
|
|
|
|
|
|
| 169 |
except Exception as e:
|
| 170 |
return server_error_response(e)
|
| 171 |
|
|
|
|
| 162 |
return resp
|
| 163 |
|
| 164 |
else:
|
| 165 |
+
answer = None
|
| 166 |
+
for ans in chat(dia, msg, **req):
|
| 167 |
+
answer = ans
|
| 168 |
+
fillin_conv(ans)
|
| 169 |
+
ConversationService.update_by_id(conv.id, conv.to_dict())
|
| 170 |
+
break
|
| 171 |
+
return get_json_result(data=answer)
|
| 172 |
except Exception as e:
|
| 173 |
return server_error_response(e)
|
| 174 |
|
api/db/services/dialog_service.py
CHANGED
|
@@ -84,8 +84,7 @@ def chat(dialog, messages, stream=True, **kwargs):
|
|
| 84 |
kbs = KnowledgebaseService.get_by_ids(dialog.kb_ids)
|
| 85 |
embd_nms = list(set([kb.embd_id for kb in kbs]))
|
| 86 |
if len(embd_nms) != 1:
|
| 87 |
-
|
| 88 |
-
yield {"answer": "**ERROR**: Knowledge bases use different embedding models.", "reference": []}
|
| 89 |
return {"answer": "**ERROR**: Knowledge bases use different embedding models.", "reference": []}
|
| 90 |
|
| 91 |
questions = [m["content"] for m in messages if m["role"] == "user"]
|
|
@@ -126,8 +125,7 @@ def chat(dialog, messages, stream=True, **kwargs):
|
|
| 126 |
"{}->{}".format(" ".join(questions), "\n->".join(knowledges)))
|
| 127 |
|
| 128 |
if not knowledges and prompt_config.get("empty_response"):
|
| 129 |
-
|
| 130 |
-
yield {"answer": prompt_config["empty_response"], "reference": kbinfos}
|
| 131 |
return {"answer": prompt_config["empty_response"], "reference": kbinfos}
|
| 132 |
|
| 133 |
kwargs["knowledge"] = "\n".join(knowledges)
|
|
@@ -177,7 +175,7 @@ def chat(dialog, messages, stream=True, **kwargs):
|
|
| 177 |
**kwargs), msg, gen_conf)
|
| 178 |
chat_logger.info("User: {}|Assistant: {}".format(
|
| 179 |
msg[-1]["content"], answer))
|
| 180 |
-
|
| 181 |
|
| 182 |
|
| 183 |
def use_sql(question, field_map, tenant_id, chat_mdl, quota=True):
|
|
|
|
| 84 |
kbs = KnowledgebaseService.get_by_ids(dialog.kb_ids)
|
| 85 |
embd_nms = list(set([kb.embd_id for kb in kbs]))
|
| 86 |
if len(embd_nms) != 1:
|
| 87 |
+
yield {"answer": "**ERROR**: Knowledge bases use different embedding models.", "reference": []}
|
|
|
|
| 88 |
return {"answer": "**ERROR**: Knowledge bases use different embedding models.", "reference": []}
|
| 89 |
|
| 90 |
questions = [m["content"] for m in messages if m["role"] == "user"]
|
|
|
|
| 125 |
"{}->{}".format(" ".join(questions), "\n->".join(knowledges)))
|
| 126 |
|
| 127 |
if not knowledges and prompt_config.get("empty_response"):
|
| 128 |
+
yield {"answer": prompt_config["empty_response"], "reference": kbinfos}
|
|
|
|
| 129 |
return {"answer": prompt_config["empty_response"], "reference": kbinfos}
|
| 130 |
|
| 131 |
kwargs["knowledge"] = "\n".join(knowledges)
|
|
|
|
| 175 |
**kwargs), msg, gen_conf)
|
| 176 |
chat_logger.info("User: {}|Assistant: {}".format(
|
| 177 |
msg[-1]["content"], answer))
|
| 178 |
+
yield decorate_answer(answer)
|
| 179 |
|
| 180 |
|
| 181 |
def use_sql(question, field_map, tenant_id, chat_mdl, quota=True):
|