Kevin Hu
		
	commited on
		
		
					Commit 
							
							·
						
						a57190d
	
1
								Parent(s):
							
							96bea9f
								
fix generate bug (#2614)
Browse files### What problem does this PR solve?
### Type of change
- [x] Bug Fix (non-breaking change which fixes an issue)
- agent/component/generate.py +3 -3
- agent/component/switch.py +7 -26
    	
        agent/component/generate.py
    CHANGED
    
    | @@ -122,13 +122,13 @@ class Generate(ComponentBase): | |
| 122 | 
             
                    if "empty_response" in retrieval_res.columns and not "".join(retrieval_res["content"]):
         | 
| 123 | 
             
                        res = {"content": "\n- ".join(retrieval_res["empty_response"]) if "\n- ".join(
         | 
| 124 | 
             
                            retrieval_res["empty_response"]) else "Nothing found in knowledgebase!", "reference": []}
         | 
| 125 | 
            -
                        return  | 
| 126 |  | 
| 127 | 
             
                    ans = chat_mdl.chat(prompt, self._canvas.get_history(self._param.message_history_window_size),
         | 
| 128 | 
             
                                        self._param.gen_conf())
         | 
| 129 | 
             
                    if self._param.cite and "content_ltks" in retrieval_res.columns and "vector" in retrieval_res.columns:
         | 
| 130 | 
            -
                         | 
| 131 | 
            -
                        return pd.DataFrame( | 
| 132 |  | 
| 133 | 
             
                    return Generate.be_output(ans)
         | 
| 134 |  | 
|  | |
| 122 | 
             
                    if "empty_response" in retrieval_res.columns and not "".join(retrieval_res["content"]):
         | 
| 123 | 
             
                        res = {"content": "\n- ".join(retrieval_res["empty_response"]) if "\n- ".join(
         | 
| 124 | 
             
                            retrieval_res["empty_response"]) else "Nothing found in knowledgebase!", "reference": []}
         | 
| 125 | 
            +
                        return pd.DataFrame([res])
         | 
| 126 |  | 
| 127 | 
             
                    ans = chat_mdl.chat(prompt, self._canvas.get_history(self._param.message_history_window_size),
         | 
| 128 | 
             
                                        self._param.gen_conf())
         | 
| 129 | 
             
                    if self._param.cite and "content_ltks" in retrieval_res.columns and "vector" in retrieval_res.columns:
         | 
| 130 | 
            +
                        res = self.set_cite(retrieval_res, ans)
         | 
| 131 | 
            +
                        return pd.DataFrame([res])
         | 
| 132 |  | 
| 133 | 
             
                    return Generate.be_output(ans)
         | 
| 134 |  | 
    	
        agent/component/switch.py
    CHANGED
    
    | @@ -49,34 +49,15 @@ class Switch(ComponentBase, ABC): | |
| 49 |  | 
| 50 | 
             
                def _run(self, history, **kwargs):
         | 
| 51 | 
             
                    for cond in self._param.conditions:
         | 
| 52 | 
            -
             | 
| 53 | 
            -
                        if len(cond["items"]) == 1:
         | 
| 54 | 
            -
                            out = self._canvas.get_component(cond["items"][0]["cpn_id"])["obj"].output()[1]
         | 
| 55 | 
            -
                            cpn_input = "" if "content" not in out.columns else " ".join(out["content"])
         | 
| 56 | 
            -
                            if self.process_operator(cpn_input, cond["items"][0]["operator"], cond["items"][0]["value"]):
         | 
| 57 | 
            -
                                return Switch.be_output(cond["to"])
         | 
| 58 | 
            -
                            continue
         | 
| 59 | 
            -
             | 
| 60 | 
            -
                        if cond["logical_operator"] == "and":
         | 
| 61 | 
            -
                            res = True
         | 
| 62 | 
            -
                            for item in cond["items"]:
         | 
| 63 | 
            -
                                out = self._canvas.get_component(item["cpn_id"])["obj"].output()[1]
         | 
| 64 | 
            -
                                cpn_input = "" if "content" not in out.columns else " ".join(out["content"])
         | 
| 65 | 
            -
                                if not self.process_operator(cpn_input, item["operator"], item["value"]):
         | 
| 66 | 
            -
                                    res = False
         | 
| 67 | 
            -
                                    break
         | 
| 68 | 
            -
                            if res:
         | 
| 69 | 
            -
                                return Switch.be_output(cond["to"])
         | 
| 70 | 
            -
                            continue
         | 
| 71 | 
            -
             | 
| 72 | 
            -
                        res = False
         | 
| 73 | 
             
                        for item in cond["items"]:
         | 
| 74 | 
             
                            out = self._canvas.get_component(item["cpn_id"])["obj"].output()[1]
         | 
| 75 | 
             
                            cpn_input = "" if "content" not in out.columns else " ".join(out["content"])
         | 
| 76 | 
            -
                             | 
| 77 | 
            -
             | 
| 78 | 
            -
                                 | 
| 79 | 
            -
             | 
|  | |
| 80 | 
             
                            return Switch.be_output(cond["to"])
         | 
| 81 |  | 
| 82 | 
             
                    return Switch.be_output(self._param.end_cpn_id)
         | 
| @@ -122,4 +103,4 @@ class Switch(ComponentBase, ABC): | |
| 122 | 
             
                        except Exception as e:
         | 
| 123 | 
             
                            return True if input <= value else False
         | 
| 124 |  | 
| 125 | 
            -
                    raise ValueError('Not supported operator' + operator)
         | 
|  | |
| 49 |  | 
| 50 | 
             
                def _run(self, history, **kwargs):
         | 
| 51 | 
             
                    for cond in self._param.conditions:
         | 
| 52 | 
            +
                        res = []
         | 
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
|  | |
| 53 | 
             
                        for item in cond["items"]:
         | 
| 54 | 
             
                            out = self._canvas.get_component(item["cpn_id"])["obj"].output()[1]
         | 
| 55 | 
             
                            cpn_input = "" if "content" not in out.columns else " ".join(out["content"])
         | 
| 56 | 
            +
                            res.append(self.process_operator(cpn_input, item["operator"], item["value"]))
         | 
| 57 | 
            +
                            if cond["logical_operator"] != "and" and any(res):
         | 
| 58 | 
            +
                                return Switch.be_output(cond["to"])
         | 
| 59 | 
            +
             | 
| 60 | 
            +
                        if all(res):
         | 
| 61 | 
             
                            return Switch.be_output(cond["to"])
         | 
| 62 |  | 
| 63 | 
             
                    return Switch.be_output(self._param.end_cpn_id)
         | 
|  | |
| 103 | 
             
                        except Exception as e:
         | 
| 104 | 
             
                            return True if input <= value else False
         | 
| 105 |  | 
| 106 | 
            +
                    raise ValueError('Not supported operator' + operator)
         |