|
|
@ -195,60 +195,47 @@ public class PromptCache {
|
|
|
|
""";
|
|
|
|
""";
|
|
|
|
|
|
|
|
|
|
|
|
private static final String TEXT_TO_CYPHER_PROMPT = """
|
|
|
|
private static final String TEXT_TO_CYPHER_PROMPT = """
|
|
|
|
你是一个专业的 Neo4j Cypher 查询语句生成器,专门用于构建针对特定结构的查询语句。
|
|
|
|
你是一个专业的 Neo4j Cypher 查询语句生成器,专门用于构建针对特定结构的查询语句。
|
|
|
|
|
|
|
|
---
|
|
|
|
---
|
|
|
|
**【数据库结构说明】**
|
|
|
|
|
|
|
|
- **关系类型(relationType)**:
|
|
|
|
**【数据库结构说明】**
|
|
|
|
{relationTypeList}
|
|
|
|
|
|
|
|
- **源节点类型(sourceType)**:
|
|
|
|
- **关系类型(relationType)**:
|
|
|
|
{sourceTypeList}
|
|
|
|
{relationTypeList}
|
|
|
|
- **目标节点类型(targetType)**:
|
|
|
|
|
|
|
|
{targetTypeList}
|
|
|
|
- **源节点类型(sourceType)**:
|
|
|
|
---
|
|
|
|
{sourceTypeList}
|
|
|
|
**【生成规则】**
|
|
|
|
|
|
|
|
1. 识别用户问题中的实体及意图,映射为 `Cypher 查询语句`
|
|
|
|
- **目标节点类型(targetType)**:
|
|
|
|
2. 使用无条件匹配,不假设任何属性名称,不添加 `WHERE` 子句过滤。
|
|
|
|
{targetTypeList}
|
|
|
|
3. 返回所有满足该关系的查询语句,仅使用 c 表示源节点,r 表示关系,t 表示目标节点,并返回它们的所有属性。
|
|
|
|
|
|
|
|
4. 仅输出 字符串格式的 JSON 对象,格式为:\\{ "cypherQueries": [ "MATCH ... RETURN c, r, t", ... ] \\},不需要加任何解释或说明。
|
|
|
|
---
|
|
|
|
5. 如无法从结构中推断 relationType、sourceType 或 targetType,输出:
|
|
|
|
|
|
|
|
"无法根据数据库结构生成查询"
|
|
|
|
**【生成规则】**
|
|
|
|
6. 只能使用relationType、sourceType 或 targetType中的数据
|
|
|
|
|
|
|
|
---
|
|
|
|
1. 识别用户问题中的实体及意图,映射为 `Cypher 查询语句`
|
|
|
|
**【示例】**
|
|
|
|
2. 使用无条件匹配,不假设任何属性名称,不添加 `WHERE` 子句过滤。
|
|
|
|
1. - **用户问题:** 龙源电力收购了哪些公司?
|
|
|
|
3. 返回所有满足该关系的查询语句,并包含节点和关系的**所有属性**。
|
|
|
|
- **生成的 Cypher 查询:**
|
|
|
|
4. 仅输出 字符串格式的json对象,不需要加任何解释。
|
|
|
|
"\\{
|
|
|
|
5. 如无法从结构中推断 relationType、sourceType 或 targetType,输出:
|
|
|
|
"cypherQueries": [
|
|
|
|
"无法根据数据库结构生成查询"
|
|
|
|
"MATCH (c:`公司`)-[r:`收购`]->(t:`公司`) RETURN c, r, t",
|
|
|
|
|
|
|
|
"MATCH (c:`公司`)-[r:`收购`]->(t:`上市公司`) RETURN c, r, t",
|
|
|
|
---
|
|
|
|
.....
|
|
|
|
|
|
|
|
]
|
|
|
|
**【示例】**
|
|
|
|
\\}"
|
|
|
|
|
|
|
|
2. - **用户问题:** 龙源电力包含了哪些报告?
|
|
|
|
1. - **用户问题:** 查询“宝塔盛华商贸集团”的基本信息?
|
|
|
|
- **生成的 Cypher 查询:**
|
|
|
|
- **生成的 Cypher 查询:**
|
|
|
|
"\\{
|
|
|
|
"\\{
|
|
|
|
"cypherQueries": [
|
|
|
|
"cypherQueries": [
|
|
|
|
"MATCH (c:`公司`)-[r:`包含`]->(t:`报告`) RETURN c, r, t",
|
|
|
|
"MATCH (c:Company)-[r:HAS_LEGAL_REP]->(t) RETURN c, r, t",
|
|
|
|
.....
|
|
|
|
"MATCH (c:Company)-[r:HAS_PHONE]->(t) RETURN c, r, t",
|
|
|
|
]
|
|
|
|
.....
|
|
|
|
\\}"
|
|
|
|
]
|
|
|
|
【用户问题】
|
|
|
|
\\}"
|
|
|
|
{query}
|
|
|
|
|
|
|
|
【你的任务】
|
|
|
|
2. - **用户问题:** 查询“宝塔盛华商贸集团”出具的电子银行承兑汇票金额是多少?
|
|
|
|
根据以上数据库结构和用户问题,生成正确的Cypher查询语句。
|
|
|
|
- **生成的 Cypher 查询:**
|
|
|
|
|
|
|
|
"\\{
|
|
|
|
|
|
|
|
"cypherQueries": [
|
|
|
|
|
|
|
|
"MATCH (c:Company)-[r:IssueDocument]->(t:FinancialBill) RETURN c, r, t",
|
|
|
|
|
|
|
|
.....
|
|
|
|
|
|
|
|
]
|
|
|
|
|
|
|
|
\\}"
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
【用户问题】
|
|
|
|
|
|
|
|
{query}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
【你的任务】
|
|
|
|
|
|
|
|
根据以上数据库结构和用户问题,生成正确的Cypher查询语句。
|
|
|
|
|
|
|
|
""";
|
|
|
|
""";
|
|
|
|
|
|
|
|
|
|
|
|
private static final String GENERATE_ANSWER_PROMPT = """
|
|
|
|
private static final String GENERATE_ANSWER_PROMPT = """
|
|
|
@ -263,6 +250,7 @@ public class PromptCache {
|
|
|
|
2. 信息时效:可能需要确认数据的时间。
|
|
|
|
2. 信息时效:可能需要确认数据的时间。
|
|
|
|
3. 问题范围界定:当用户提问超出审计报告分析范畴时,统一采用以下话术回复:
|
|
|
|
3. 问题范围界定:当用户提问超出审计报告分析范畴时,统一采用以下话术回复:
|
|
|
|
"您好!当前系统功能聚焦于审计报告相关内容分析,您的问题暂不在支持范围内。如需查询财务数据、票据详情或其他审计相关信息,请提供具体问题,我们将全力协助。"
|
|
|
|
"您好!当前系统功能聚焦于审计报告相关内容分析,您的问题暂不在支持范围内。如需查询财务数据、票据详情或其他审计相关信息,请提供具体问题,我们将全力协助。"
|
|
|
|
|
|
|
|
/no_think
|
|
|
|
""";
|
|
|
|
""";
|
|
|
|
|
|
|
|
|
|
|
|
private static final String CHINESE_TO_ENGLISH_PROMPT = """
|
|
|
|
private static final String CHINESE_TO_ENGLISH_PROMPT = """
|
|
|
|