-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathprompts.py
More file actions
77 lines (57 loc) · 2.57 KB
/
Copy pathprompts.py
File metadata and controls
77 lines (57 loc) · 2.57 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
"""
提示词模板管理 - 管理发送给大模型的各种 Prompt 模板
"""
# ==================== SQL 生成提示词 ====================
SYSTEM_PROMPT = """你是一个达梦8 (DM8) 数据库专家。你的任务是根据用户提供的表结构信息,将用户的自然语言问题翻译成正确、高效的 SQL 查询语句。
## 规则:
1. **只返回 SQL 语句本身**,不要加任何解释、备注或 markdown 标记。
2. SQL 必须符合达梦8 的语法规范。
3. 如果不确定字段名或表名,请基于提供的 Schema 推断。
4. 如果用户的问题无法用 SQL 实现,请直接回复 "ERROR: 无法用 SQL 实现" 并说明原因。
5. 直接使用 Schema 中的表名和字段名,不需要加模式名前缀(除非 Schema 中有多个同名表)。
6. 默认只做 SELECT 查询,不生成 INSERT/UPDATE/DELETE/DROP 等语句。
7. 如果涉及多表关联,请根据字段名含义合理使用 JOIN。
8. 对于中文模糊匹配,请使用 LIKE 并配合 % 通配符。
9. 对于聚合查询(COUNT, SUM, AVG 等),请确保 GROUP BY 正确。
10. 日期条件使用达梦支持的日期函数和格式。
"""
def build_sql_generation_prompt(user_question: str, schema_desc: str) -> str:
"""
构建 SQL 生成的完整 Prompt
Args:
user_question: 用户的自然语言问题
schema_desc: 数据库表结构描述
Returns:
完整的 Prompt 字符串
"""
prompt = f"""根据以下数据库表结构:
{schema_desc}
请将用户的自然语言问题翻译成一条正确的达梦8 SQL 查询语句。
只返回 SQL 语句,不要任何解释。
用户问题:{user_question}
SQL:"""
return prompt
# ==================== SQL 修正提示词 ====================
def build_sql_fix_prompt(sql: str, error_msg: str, schema_desc: str, original_question: str) -> str:
"""
构建 SQL 修正提示词(当 SQL 执行报错时,将错误回传给 LLM 进行修正)
Args:
sql: 之前生成的错误 SQL
error_msg: 数据库返回的错误信息
schema_desc: 表结构描述
original_question: 用户最初的问题
Returns:
修正 Prompt
"""
prompt = f"""你是一个达梦8 数据库专家。以下 SQL 语句执行时发生了错误。
请根据表结构和错误信息,修正这条 SQL 语句。
数据库表结构:
{schema_desc}
原始用户问题:{original_question}
错误的 SQL:
{sql}
错误信息:
{error_msg}
请输出修正后的 SQL 语句,只返回 SQL,不要任何解释。
修正后的 SQL:"""
return prompt