|
@@ -8,55 +8,82 @@ import (
|
|
)
|
|
)
|
|
|
|
|
|
var pmt_field_prefix = `
|
|
var pmt_field_prefix = `
|
|
-
|
|
|
|
|
|
+
|
|
`
|
|
`
|
|
|
|
|
|
-var pmt_field = `
|
|
|
|
|
|
+var pmt_field1 = `
|
|
你是一个文本处理模型,专门用于分析文本提取信息,你具备以下能力:
|
|
你是一个文本处理模型,专门用于分析文本提取信息,你具备以下能力:
|
|
1、实体识别抽取
|
|
1、实体识别抽取
|
|
2、信息归属地域
|
|
2、信息归属地域
|
|
请根据我提供的正文做以下工作;
|
|
请根据我提供的正文做以下工作;
|
|
-首先,根据正文进行"项目所在地的省份"、"项目所在地的城市"、"采购单位"、"项目名称","项目编号","项目的预算金额","项目的中标单位","项目的中标金额" 进行实体抽取;
|
|
|
|
|
|
+首先,根据正文进行"项目所在地的省份"、"项目所在地的城市"、"采购单位"、"项目的中标单位" 进行实体抽取;
|
|
|
|
|
|
你在识别"项目所在地的省份"的时候,如果找不到,请去找项目信息的省份、采购单位的省份,如果还找不到,请根据上下文思考,给出你认为的最佳匹配的省份;
|
|
你在识别"项目所在地的省份"的时候,如果找不到,请去找项目信息的省份、采购单位的省份,如果还找不到,请根据上下文思考,给出你认为的最佳匹配的省份;
|
|
你在识别"项目所在地的城市"的时候,如果找不到,请去找项目信息的城市、采购单位所在的城市,如果匹配到三级区县信息,请推导出具体城市。如果还找不到,请根据上下文思考,给出你认为的最佳匹配的城市;
|
|
你在识别"项目所在地的城市"的时候,如果找不到,请去找项目信息的城市、采购单位所在的城市,如果匹配到三级区县信息,请推导出具体城市。如果还找不到,请根据上下文思考,给出你认为的最佳匹配的城市;
|
|
你在识别"采购单位"的时候,请根据上下文思考,输出最佳匹配结果;包括但不限于采购人,采购方,甲方等;不要使用:代理机构与中标单位;
|
|
你在识别"采购单位"的时候,请根据上下文思考,输出最佳匹配结果;包括但不限于采购人,采购方,甲方等;不要使用:代理机构与中标单位;
|
|
|
|
+你在识别"项目的中标单位"的时候,中标单位包括但不限于成交供应商(注:当入围供应商/中标人存在多个,选择第一位为中标单位)、中标人、中标方、承包方、中选单位、服务商、第一名中标候选人、第1名中标人(忽略其他中标候选人),如果正文明确指定了中标单位,请优先选正文的中标单位。联合体投标时,请列出所有单位名称使用","分割)。如果不能准确识别出"项目的中标单位",请填写"无";注:不要采购单位,不要代理机构;
|
|
|
|
+
|
|
|
|
+请将上述的识别结果、信息分类结果,按照JSON格式输出,
|
|
|
|
+严格按照json格式
|
|
|
|
+{
|
|
|
|
+"省份":"项目所在地的省份",
|
|
|
|
+"城市":"项目所在地的城市",
|
|
|
|
+"采购单位":"采购单位",
|
|
|
|
+"中标单位":"项目的中标单位",
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+请回答我的问题,不要联想,不要无中生有,不要生成解释,对于尚未确定或未明确的信息请在JSON对应的值填写:无
|
|
|
|
+正文内容:` + "\n" + `%s` + "\n结果JSON:"
|
|
|
|
+var pmt_field2 = `
|
|
|
|
+你是一个文本处理模型,专门用于分析文本提取信息,你具备以下能力:
|
|
|
|
+1、实体识别抽取
|
|
|
|
+请根据我提供的正文做以下工作;
|
|
|
|
+首先,根据正文进行"项目名称"、"项目编号"、"项目的预算金额"、"项目的中标金额" 进行实体抽取;
|
|
|
|
+
|
|
你在识别"项目名称"的时候,请根据上下文思考,输出最佳匹配结果;如果"项目名称"前面包含实体单位,请务必提取完整;
|
|
你在识别"项目名称"的时候,请根据上下文思考,输出最佳匹配结果;如果"项目名称"前面包含实体单位,请务必提取完整;
|
|
你在识别"项目编号"的时候,请根据上下文思考,输出最佳匹配结果;项目编号和标段编号同时存在时,优先选项目编号;不要使用证书编号当做项目编号的值;
|
|
你在识别"项目编号"的时候,请根据上下文思考,输出最佳匹配结果;项目编号和标段编号同时存在时,优先选项目编号;不要使用证书编号当做项目编号的值;
|
|
你在识别"项目的预算金额"的时候,一定不要识别业绩相关的内容。(合同内容如果没有明确指出甲方的预算金额,请不要识别)如果有多个预算金额存在,优先取预算金额含税总价。如果识别出的预算金额含有单位比如万元等,请务必提取完整。如果不能准确识别出"项目的预算金额,"请填写"无";
|
|
你在识别"项目的预算金额"的时候,一定不要识别业绩相关的内容。(合同内容如果没有明确指出甲方的预算金额,请不要识别)如果有多个预算金额存在,优先取预算金额含税总价。如果识别出的预算金额含有单位比如万元等,请务必提取完整。如果不能准确识别出"项目的预算金额,"请填写"无";
|
|
-你在识别"项目的中标单位"的时候,中标单位包括但不限于成交供应商(注:当入围供应商/中标人存在多个,选择第一位为中标单位)、中标人、中标方、承包方、中选单位、服务商、第一名中标候选人、第1名中标人(忽略其他中标候选人),如果正文明确指定了中标单位,请优先选正文的中标单位。联合体投标时,请列出所有单位名称使用","分割)。如果不能准确识别出"项目的中标单位",请填写"无";注:不要采购单位,不要代理机构;
|
|
|
|
你在识别"项目的中标金额"的时候,一定不要识别业绩相关的内容。优先使用合同的金额,合同的总价当做"项目的中标金额"。如果有多个中标金额存在,优先取中标金额的含税总价。如果原文没有明确的中标金额,可以选取第一名中标候选人的投标报价(金额单位请提取完整)。如果识别出项目的中标金额含有单位比如万元等,请务必提取完整。如果不能准确识别出"项目的中标金额",请填写"无";
|
|
你在识别"项目的中标金额"的时候,一定不要识别业绩相关的内容。优先使用合同的金额,合同的总价当做"项目的中标金额"。如果有多个中标金额存在,优先取中标金额的含税总价。如果原文没有明确的中标金额,可以选取第一名中标候选人的投标报价(金额单位请提取完整)。如果识别出项目的中标金额含有单位比如万元等,请务必提取完整。如果不能准确识别出"项目的中标金额",请填写"无";
|
|
|
|
|
|
请将上述的识别结果、信息分类结果,按照JSON格式输出,
|
|
请将上述的识别结果、信息分类结果,按照JSON格式输出,
|
|
严格按照json格式
|
|
严格按照json格式
|
|
{
|
|
{
|
|
-"采购单位":"采购单位",
|
|
|
|
"项目名称":"项目名称",
|
|
"项目名称":"项目名称",
|
|
"项目编号":"项目编号",
|
|
"项目编号":"项目编号",
|
|
-"省份":"项目所在地的省份",
|
|
|
|
-"城市":"项目所在地的城市",
|
|
|
|
"预算金额":"项目的预算金额",
|
|
"预算金额":"项目的预算金额",
|
|
-"中标单位":"项目的中标单位",
|
|
|
|
"中标金额":"项目的中标金额",
|
|
"中标金额":"项目的中标金额",
|
|
}
|
|
}
|
|
|
|
|
|
请回答我的问题,不要联想,不要无中生有,不要生成解释,对于尚未确定或未明确的信息请在JSON对应的值填写:无
|
|
请回答我的问题,不要联想,不要无中生有,不要生成解释,对于尚未确定或未明确的信息请在JSON对应的值填写:无
|
|
正文内容:` + "\n" + `%s` + "\n结果JSON:"
|
|
正文内容:` + "\n" + `%s` + "\n结果JSON:"
|
|
|
|
|
|
-// 获取外围抽取字段
|
|
|
|
-func AcquireExtractFieldInfo(detail string, shorText bool) map[string]interface{} {
|
|
|
|
- content := PromptFieldText(detail)
|
|
|
|
|
|
+// 获取抽取字段第一次
|
|
|
|
+func AcquireExtractFieldInfoFirst(detail string, shorText bool) map[string]interface{} {
|
|
|
|
+ content := PromptFieldText(detail, pmt_field1)
|
|
|
|
+ if shorText {
|
|
|
|
+ content = PromptFieldText(detail, pmt_field1)
|
|
|
|
+ }
|
|
|
|
+ zp := ai.PostZhiPuInfo(content)
|
|
|
|
+ return zp
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+// 获取抽取字段第二次
|
|
|
|
+func AcquireExtractFieldInfoSecond(detail string, shorText bool) map[string]interface{} {
|
|
|
|
+ content := PromptFieldText(detail, pmt_field2)
|
|
|
|
+ if shorText {
|
|
|
|
+ content = PromptFieldText(detail, pmt_field2)
|
|
|
|
+ }
|
|
zp := ai.PostZhiPuInfo(content)
|
|
zp := ai.PostZhiPuInfo(content)
|
|
return zp
|
|
return zp
|
|
}
|
|
}
|
|
|
|
|
|
-// 提示词优选
|
|
|
|
-func PromptFieldText(detail string) string {
|
|
|
|
- content := fmt.Sprintf(pmt_field, detail)
|
|
|
|
|
|
+// 提示语构建
|
|
|
|
+func PromptFieldText(detail string, prompt string) string {
|
|
|
|
+ content := fmt.Sprintf(prompt, detail)
|
|
l := len(content)
|
|
l := len(content)
|
|
if l > ul.MaxByte {
|
|
if l > ul.MaxByte {
|
|
detail = truncatedText(detail, len(detail)-(l-ul.MaxByte))
|
|
detail = truncatedText(detail, len(detail)-(l-ul.MaxByte))
|
|
- content = fmt.Sprintf(pmt_field, detail)
|
|
|
|
|
|
+ content = fmt.Sprintf(prompt, detail)
|
|
}
|
|
}
|
|
return content
|
|
return content
|
|
}
|
|
}
|