diff --git a/api/apps/canvas_app.py b/api/apps/canvas_app.py index 1f30ab06d..40562c3fe 100644 --- a/api/apps/canvas_app.py +++ b/api/apps/canvas_app.py @@ -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']) diff --git a/deepdoc/parser/ppt_parser.py b/deepdoc/parser/ppt_parser.py index 65c7f63d4..ce2451057 100644 --- a/deepdoc/parser/ppt_parser.py +++ b/deepdoc/parser/ppt_parser.py @@ -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) diff --git a/graph/component/arxiv.py b/graph/component/arxiv.py index ad9ee3885..ed2059981 100644 --- a/graph/component/arxiv.py +++ b/graph/component/arxiv.py @@ -65,4 +65,4 @@ class ArXiv(ComponentBase, ABC): df = pd.DataFrame(arxiv_res) if DEBUG: print(df, ":::::::::::::::::::::::::::::::::") - return df + return df \ No newline at end of file diff --git a/graph/component/generate.py b/graph/component/generate.py index f36dd4664..d6d950e42 100644 --- a/graph/component/generate.py +++ b/graph/component/generate.py @@ -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: