修复SQL语句
(self, original_sql: str, error_message: str, knowledge_results: List[Dict[str, Any]])
| 50 | return sql.strip() |
| 51 | |
| 52 | def fix_sql(self, original_sql: str, error_message: str, knowledge_results: List[Dict[str, Any]]) -> str: |
| 53 | """修复SQL语句""" |
| 54 | context = self._build_context(knowledge_results) |
| 55 | |
| 56 | prompt = f"""请修复以下SQL语句的错误。 |
| 57 | |
| 58 | 数据库信息: |
| 59 | {context} |
| 60 | |
| 61 | 原始SQL: |
| 62 | {original_sql} |
| 63 | |
| 64 | 错误信息: |
| 65 | {error_message} |
| 66 | |
| 67 | 请返回修复后的SQL语句(只返回SQL,不要解释):""" |
| 68 | |
| 69 | messages = [HumanMessage(content=prompt)] |
| 70 | response = self.llm.invoke(messages) |
| 71 | |
| 72 | # 清理SQL语句 |
| 73 | fixed_sql = response.content.strip() |
| 74 | if fixed_sql.startswith("```sql"): |
| 75 | fixed_sql = fixed_sql[6:] |
| 76 | if fixed_sql.startswith("```"): |
| 77 | fixed_sql = fixed_sql[3:] |
| 78 | if fixed_sql.endswith("```"): |
| 79 | fixed_sql = fixed_sql[:-3] |
| 80 | |
| 81 | return fixed_sql.strip() |
| 82 | |
| 83 | def _build_context(self, knowledge_results: List[Dict[str, Any]]) -> str: |
| 84 | """构建上下文信息""" |