mirror of
https://git.mirrors.martin98.com/https://github.com/infiniflow/ragflow.git
synced 2025-08-12 16:19:05 +08:00
Fix agent api invokation issue (#3581)
### What problem does this PR solve? #3570 ### Type of change - [x] Bug Fix (non-breaking change which fixes an issue)
This commit is contained in:
parent
9f3141804f
commit
d56f52eef8
@ -317,17 +317,18 @@ def agent_completion(tenant_id, agent_id):
|
|||||||
|
|
||||||
canvas.messages.append(msg[-1])
|
canvas.messages.append(msg[-1])
|
||||||
canvas.add_user_input(msg[-1]["content"])
|
canvas.add_user_input(msg[-1]["content"])
|
||||||
answer = canvas.run(stream=stream)
|
|
||||||
|
|
||||||
assert answer is not None, "Nothing. Is it over?"
|
|
||||||
|
|
||||||
if stream:
|
if stream:
|
||||||
assert isinstance(answer, partial), "Nothing. Is it over?"
|
|
||||||
|
|
||||||
def sse():
|
def sse():
|
||||||
nonlocal answer, cvs, conv
|
nonlocal answer, cvs
|
||||||
try:
|
try:
|
||||||
for ans in answer():
|
for ans in canvas.run(stream=True):
|
||||||
|
if ans.get("running_status"):
|
||||||
|
yield "data:" + json.dumps({"code": 0, "message": "",
|
||||||
|
"data": {"answer": ans["content"],
|
||||||
|
"running_status": True}},
|
||||||
|
ensure_ascii=False) + "\n\n"
|
||||||
|
continue
|
||||||
for k in ans.keys():
|
for k in ans.keys():
|
||||||
final_ans[k] = ans[k]
|
final_ans[k] = ans[k]
|
||||||
ans = {"answer": ans["content"], "reference": ans.get("reference", [])}
|
ans = {"answer": ans["content"], "reference": ans.get("reference", [])}
|
||||||
@ -337,15 +338,18 @@ def agent_completion(tenant_id, agent_id):
|
|||||||
ensure_ascii=False) + "\n\n"
|
ensure_ascii=False) + "\n\n"
|
||||||
|
|
||||||
canvas.messages.append({"role": "assistant", "content": final_ans["content"], "id": message_id})
|
canvas.messages.append({"role": "assistant", "content": final_ans["content"], "id": message_id})
|
||||||
|
canvas.history.append(("assistant", final_ans["content"]))
|
||||||
if final_ans.get("reference"):
|
if final_ans.get("reference"):
|
||||||
canvas.reference.append(final_ans["reference"])
|
canvas.reference.append(final_ans["reference"])
|
||||||
cvs.dsl = json.loads(str(canvas))
|
cvs.dsl = json.loads(str(canvas))
|
||||||
API4ConversationService.append_message(conv.id, conv.to_dict())
|
API4ConversationService.append_message(conv.id, conv.to_dict())
|
||||||
except Exception as e:
|
except Exception as e:
|
||||||
|
cvs.dsl = json.loads(str(canvas))
|
||||||
|
UserCanvasService.update_by_id(req["id"], cvs.to_dict())
|
||||||
yield "data:" + json.dumps({"code": 500, "message": str(e),
|
yield "data:" + json.dumps({"code": 500, "message": str(e),
|
||||||
"data": {"answer": "**ERROR**: " + str(e), "reference": []}},
|
"data": {"answer": "**ERROR**: " + str(e), "reference": []}},
|
||||||
ensure_ascii=False) + "\n\n"
|
ensure_ascii=False) + "\n\n"
|
||||||
yield "data:" + json.dumps({"code": 0, "data": True}, ensure_ascii=False) + "\n\n"
|
yield "data:" + json.dumps({"code": 0, "message": "", "data": True}, ensure_ascii=False) + "\n\n"
|
||||||
|
|
||||||
resp = Response(sse(), mimetype="text/event-stream")
|
resp = Response(sse(), mimetype="text/event-stream")
|
||||||
resp.headers.add_header("Cache-control", "no-cache")
|
resp.headers.add_header("Cache-control", "no-cache")
|
||||||
@ -354,17 +358,20 @@ def agent_completion(tenant_id, agent_id):
|
|||||||
resp.headers.add_header("Content-Type", "text/event-stream; charset=utf-8")
|
resp.headers.add_header("Content-Type", "text/event-stream; charset=utf-8")
|
||||||
return resp
|
return resp
|
||||||
|
|
||||||
final_ans["content"] = "\n".join(answer["content"]) if "content" in answer else ""
|
for answer in canvas.run(stream=False):
|
||||||
canvas.messages.append({"role": "assistant", "content": final_ans["content"], "id": message_id})
|
if answer.get("running_status"): continue
|
||||||
if final_ans.get("reference"):
|
final_ans["content"] = "\n".join(answer["content"]) if "content" in answer else ""
|
||||||
canvas.reference.append(final_ans["reference"])
|
canvas.messages.append({"role": "assistant", "content": final_ans["content"], "id": message_id})
|
||||||
cvs.dsl = json.loads(str(canvas))
|
if final_ans.get("reference"):
|
||||||
|
canvas.reference.append(final_ans["reference"])
|
||||||
|
cvs.dsl = json.loads(str(canvas))
|
||||||
|
UserCanvasService.update_by_id(req["id"], cvs.to_dict())
|
||||||
|
|
||||||
result = {"answer": final_ans["content"], "reference": final_ans.get("reference", [])}
|
result = {"answer": final_ans["content"], "reference": final_ans.get("reference", [])}
|
||||||
fillin_conv(result)
|
fillin_conv(result)
|
||||||
API4ConversationService.append_message(conv.id, conv.to_dict())
|
API4ConversationService.append_message(conv.id, conv.to_dict())
|
||||||
rename_field(result)
|
rename_field(result)
|
||||||
return get_result(data=result)
|
return get_result(data=result)
|
||||||
|
|
||||||
|
|
||||||
@manager.route('/chats/<chat_id>/sessions', methods=['GET'])
|
@manager.route('/chats/<chat_id>/sessions', methods=['GET'])
|
||||||
|
Loading…
x
Reference in New Issue
Block a user