62 lines
3.3 KiB
Python
Raw Normal View History

2023-12-15 17:33:54 +08:00
import json
from typing import Dict, List
from knext.operator.op import PromptOp
from knext.operator.spg_record import SPGRecord
2023-12-21 17:38:20 +08:00
class IndicatorLOGIC(PromptOp):
2023-12-15 17:33:54 +08:00
template = """
请根据给定文本和文本中的指标及其指标关系梳理逻辑链以json格式输出
#####
输出格式:
2023-12-21 17:38:20 +08:00
[{"subject": "XXX", "predicate": "顺承", "object": ["XXX", "XXX"]}, {"subject": "XXX", "predicate": "顺承", "object": ["XXX", "XXX"]}]
2023-12-15 17:33:54 +08:00
文本:
2023-12-21 17:38:20 +08:00
${input}
2023-12-15 17:33:54 +08:00
指标:
2023-12-21 17:38:20 +08:00
${ner}
2023-12-15 17:33:54 +08:00
指标关系:
2023-12-21 17:38:20 +08:00
${rel}
2023-12-15 17:33:54 +08:00
"""
2023-12-21 17:38:20 +08:00
def build_prompt(self, variables: Dict[str, str]):
2023-12-15 17:33:54 +08:00
"""
record: {
"input": "济南市财政收入质量及自给能力均较好,但土地出让收入大幅下降致综合财力明显下滑。济南市财政收入质量及自给能力均较好,但土地出让收入大幅下降致综合
财力明显下滑2022年济南市一般公共预算收入1,000.21亿元扣除留 抵退税因素后同比增长8%规模在山东省下辖地市中排名第2位其中税收收入690.31亿元税收占比69.02%一般公共 预算支出1,260.23亿元财政自给率79.37%
府性基金收入547.29亿元同比大幅下降48.38%主要系土地出让收入 同比由966.74亿元降至453.74亿元转移性收入285.78亿元上年同期为233.11亿元综合财力约1,833.28亿元上年 同期为2,301.02亿元"
"ner": "[{'财政': ['财政收入质量', '财政自给能力', '土地出让收入', '一般公共预算收入', '留抵退税', '税收收入', '税收收入/一般公共预算收入', '一般公共预算支出', '财政自给率', '政府性基金收入', '转移性收入', '综合财力']}]",
"rel": "[{'subject': '一般公共预算收入', 'predicate': '包含', 'object': ['税收收入']}, {'subject': '税收收入', 'predicate': '包含', 'object': ['留抵退税']}, {'subject': '政府性基金收入', 'predicate': '包含', 'object': ['土地出让收入', '转移性收入']}, {'subject': '综合财力', 'predicate': '包含', 'object': ['一般公共预算收入', '政府性基金收入']}]",
"id": "财政",
"name": "财政",
"hasA": "财政收入质量,财政自给能力,土地出让收入....."
}
"""
2023-12-21 17:38:20 +08:00
return self.template\
.replace("${input}", variables.get("input"))\
.replace("${ner}", variables.get("ner"))\
.replace("${rel}", variables.get("rel"))
2023-12-15 17:33:54 +08:00
def parse_response(
self, response: str
) -> List[SPGRecord]:
"""
response: "[{\"subject\": \"土地出让收入大幅下降\", \"predicate\": \"顺承\", \"object\": [\"综合财力明显下滑\"]}]"
"""
2023-12-22 19:49:39 +08:00
print("##########IndicatorLOGIC###########")
response = "[{\"subject\": \"土地出让收入大幅下降\", \"predicate\": \"顺承\", \"object\": [\"综合财力明显下滑\"]}]"
2023-12-15 17:33:54 +08:00
output_list = json.loads(response)
logic_result = []
for output in output_list:
properties = {}
for k, v in output.items():
if k == "subject":
properties["id"] = k
properties["name"] = k
elif k == "object":
properties["causeOf"] = ','.join(v)
2023-12-22 19:49:39 +08:00
logic_result.append(SPGRecord("Financial.State", properties=properties))
2023-12-15 17:33:54 +08:00
return logic_result