From b51237be1751669fed0523a8c3dd0a22237f6acf Mon Sep 17 00:00:00 2001 From: H <43509927+guoyuhao2330@users.noreply.github.com> Date: Wed, 28 Aug 2024 14:14:13 +0800 Subject: [PATCH] Fix Text2SQL (#2131) ### What problem does this PR solve? Fix exeSQL component Update DB Assistant template Fix canvas Message window size ### Type of change - [x] Bug Fix (non-breaking change which fixes an issue) --------- Co-authored-by: Kevin Hu --- agent/canvas.py | 2 +- agent/component/exesql.py | 2 +- agent/templates/DB Assistant.json | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/agent/canvas.py b/agent/canvas.py index 05d6e31f..0561c44b 100644 --- a/agent/canvas.py +++ b/agent/canvas.py @@ -260,7 +260,7 @@ class Canvas(ABC): def get_history(self, window_size): convs = [] - for role, obj in self.history[window_size * -2:]: + for role, obj in self.history[(window_size + 1) * -1:]: convs.append({"role": role, "content": (obj if role == "user" else '\n'.join(pd.DataFrame(obj)['content']))}) return convs diff --git a/agent/component/exesql.py b/agent/component/exesql.py index 6dde2708..39ad4d02 100644 --- a/agent/component/exesql.py +++ b/agent/component/exesql.py @@ -77,7 +77,7 @@ class ExeSQL(ComponentBase, ABC): except Exception as e: return ExeSQL.be_output("**Error**: \nDatabase Connection Failed! \n" + str(e)) sql_res = [] - for single_sql in re.split(r';', ans): + for single_sql in re.split(r';', ans.replace(r"\n", " ")): if not single_sql: continue try: diff --git a/agent/templates/DB Assistant.json b/agent/templates/DB Assistant.json index 2a036644..5be936d0 100644 --- a/agent/templates/DB Assistant.json +++ b/agent/templates/DB Assistant.json @@ -63,7 +63,7 @@ } ], "presence_penalty": 0.4, - "prompt": "## You are the Repair SQL Statement Helper, please modify the original SQL statement based on the SQL query error report.\n\n## The contents of the SQL query error report and the original SQL statement are as follows:\n{exesql_input}\n\n## Answer only the modified SQL statement. Please do not give any explanation, just answer the code.", + "prompt": "## You are the Repair SQL Statement Helper, please modify the original SQL statement based on the SQL query error report.\n\n## The contents of the SQL query error report and the original SQL statement are as follows:\n{exesql_input}\n\n## Answer only the modified SQL statement. Each SQL statement ends with semicolon and do not give any explanation, just answer the code.", "temperature": 0.1, "top_p": 0.3 } @@ -102,7 +102,7 @@ } ], "presence_penalty": 0.4, - "prompt": "\n##The user provides a question and you provide SQL. You will only respond with SQL code and not with any explanations.\n\n##You may use the following DDL statements as a reference for what tables might be available. Use responses to past questions also to guide you: {ddl_input}.\n\n##You may use the following documentation as a reference for what tables might be available. Use responses to past questions also to guide you: {db_input}.\n\n##You may use the following SQL statements as a reference for what tables might be available. Use responses to past questions also to guide you: {sql_input}.\n\n##Respond with only SQL code. Do not answer with any explanations -- just the code.", + "prompt": "\n##The user provides a question and you provide SQL. You will only respond with SQL code and not with any explanations.\n\n##You may use the following DDL statements as a reference for what tables might be available. Use responses to past questions also to guide you: {ddl_input}.\n\n##You may use the following documentation as a reference for what tables might be available. Use responses to past questions also to guide you: {db_input}.\n\n##You may use the following SQL statements as a reference for what tables might be available. Use responses to past questions also to guide you: {sql_input}.\n\n##Respond with only SQL code. Each SQL code ends with semicolon and do not give any explanation -- just the code.", "temperature": 0.1, "top_p": 0.3 }