fix generate error (#1590)

### What problem does this PR solve?

#1550 #1210 

### Type of change

- [x] Bug Fix (non-breaking change which fixes an issue)
This commit is contained in:
Kevin Hu 2024-07-18 14:33:30 +08:00 committed by GitHub
parent 4da3ee400b
commit 2b5812d0a9
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 10 additions and 6 deletions

View File

@ -103,10 +103,10 @@ def run():
except Exception as e:
return server_error_response(e)
assert answer, "Nothing. Is it over?"
assert answer is not None, "Nothing. Is it over?"
if stream:
assert isinstance(answer, partial)
assert isinstance(answer, partial), "Nothing. Is it over?"
def sse():
nonlocal answer, cvs
@ -135,12 +135,13 @@ def run():
resp.headers.add_header("Content-Type", "text/event-stream; charset=utf-8")
return resp
final_ans["content"] = "\n".join(answer["content"]) if "content" in answer else ""
canvas.messages.append({"role": "assistant", "content": final_ans["content"]})
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())
return get_json_result(data=req["dsl"])
return get_json_result(data={"answer": final_ans["content"], "reference": final_ans.get("reference", [])})
@manager.route('/reset', methods=['POST'])

View File

@ -52,7 +52,7 @@ class RAGFlowPptParser(object):
break
texts = []
for shape in sorted(
slide.shapes, key=lambda x: (x.top // 10, x.left)):
slide.shapes, key=lambda x: ((x.top if x.top is not None else 0) // 10, x.left)):
txt = self.__extract(shape)
if txt:
texts.append(txt)

View File

@ -65,4 +65,4 @@ class ArXiv(ComponentBase, ABC):
df = pd.DataFrame(arxiv_res)
if DEBUG: print(df, ":::::::::::::::::::::::::::::::::")
return df
return df

View File

@ -86,7 +86,10 @@ class Generate(ComponentBase):
# prompt = re.sub(r"\{%s\}"%n, re.escape(str(v)), prompt)
prompt = re.sub(r"\{%s\}" % n, str(v), prompt)
if kwargs.get("stream"):
downstreams = self._canvas.get_component(self._id)["downstream"]
if kwargs.get("stream") \
and len(downstreams) == 1 \
and self._canvas.get_component(downstreams[0])["obj"].component_name.lower() == "answer":
return partial(self.stream_output, chat_mdl, prompt, retrieval_res)
if "empty_response" in retrieval_res.columns: