123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990 |
- package prompt
- import (
- "data_ai/ai"
- "data_ai/ul"
- "fmt"
- )
- var pmt_deepseek = `
- # 任务1(信息抽取)
- 你是一位高效的信息整理专家,任务是精炼并准确抽取输入内容中的关键信息,避免任何非必要的文本,并以JSON格式输出。若信息缺失,填写"无"。
- 提取规则:
- 1、可推导上下文信息
- 2、排除代理机构和中标单位干扰,如果入围供应商、入围中标人、中标候选人等存在多个时,选择第一名为中标单位,忽略其他排名。
- 3、金额按照原文输出,不要转换量级,输出可以带单位如xx万元/xx元
- 4、你在识别"项目的预算金额"的时候,一定不要识别业绩相关的内容。(合同内容如果没有明确指出甲方的预算金额,请不要识别)如果有多个预算金额存在,优先取预算金额含税总价。如果识别出的预算金额含有单位比如万元等,请务必提取完整。如果不能准确识别出"项目的预算金额,"请填写"无";
- 5、你在识别"项目的中标金额"的时候,一定不要识别业绩相关的内容。优先使用合同的金额,合同的总价当做"项目的中标金额"。如果有多个中标金额存在,优先取中标金额的含税总价。如果原文没有明确的中标金额,可以选取第一名中标候选人的投标报价(金额单位请提取完整)。如果识别出项目的中标金额含有单位比如万元等,请务必提取完整。如果不能准确识别出"项目的中标金额",请填写"无";
- 6、项目编号和标段编号同时存在时,优先选项目编号;不要使用证书编号当做项目编号的值;
- JSON字段:
- {"任务1":{
- "项目编号":"项目编号",
- "采购单位": "采购方/甲方/委托人",
- "中标单位": "中标方/供应商(多个用逗号分隔)",
- "预算金额": "项目预算金额",
- "中标金额": "中标金额",
- "中标金额单位": "中标金额单位",
- "预算金额单位": "预算金额单位",
- }}
- 任务2 (分包提取)
- # 分包任务介绍
- 对于招投标信息,部分项目会被拆分成多个包或标段,现在你需要根据抽取字段要求,从输入的内容提取相应的数据信息并严格输出JSON格式。若字段信息缺失,填写"无"。
- 任务要求:
- - 入围供应商、入围中标人、中标候选人存在多个时,选择第一名为中标单位
- - 如果输入内容只有一个项目,那么则输出单个项目对应信息,如果一个项目被拆分成多个,那么输出多个被拆分的包或者标段
- - 注意一个项目中存在多个标的物不能算作多包
- - 注意面向企业采购金额不是中标金额,而是预算金额,不可以使用预算金额填充
- JSON字段:
- {"任务2":{
- "分包信息":[
- {
- "标段名称":(标包名称,通常包含地理区域、专业类别、标包内容描述等内容,不可以填写"标的名称"),
- "标段/包号":(标包编号,可以来自标段名称,如果不存在写"无",比如:一标段、二标段、包一、I包、I标段、标包一、标包编号等,不可以填写"项目编号"或"标的编号"),
- "中标单位":(中标单位名称,要求:中标角色包括但不限于成交供应商(注:当入围供应商/中标人存在多个,选择第一位为中标单位)、中标人、中标方、承包方、中选单位、服务商、第一|1名中标候选人(忽略其他中标候选人)。当流标显示流标,废标时显示废标。联合体投标时,请列出所有单位名称使用","分割),
- "预算金额":(预算金额、整体预留项目金额、最高限价、面向中小企业采购金额,要求:不可以用中标金额来填充),
- "中标金额":(项目中标后的成交金额、合同签订金额,如果不存在则使用“无”代替,要求:不能使用预算金额填充。多个金额时请进行计算,非单价,如果是单价,则等于单价*数量。),
- "中标金额单位":"对应金额的单位,如果不存在输出“无”",
- "预算金额单位":"对应金额的单位,如果不存在输出“无”",
- "项目编号":(项目编号,通常具有唯一性,它能够准确无误地标识一个特定的项目,不要使用证书编号当做项目编号的值),
- "标段编号":(通常为标段的唯一识别码,由数字、字母或其组合构成,不要使用纯汉字),
- "合同编号":(通常为合同提供了一个独一无二的标识,不要使用证书编号当做项目编号的值),
- },
- ....
- ],
- }}
- # 输入内容:` + "\n" + `%s` + `
- # 合并上面两个任务,输出最终JSON结果:
- {"任务1":{...},
- "任务2":{...}
- }
- `
- // 获取抽取字段
- func AcquireExtractFieldDeepSeekInfo(detail string) map[string]interface{} {
- content := PromptDeepSeekFieldText(detail, pmt_deepseek)
- res := map[string]interface{}{}
- res = ai.PostDeepSeekInfo(content)
- return res
- }
- // 提示语构建
- func PromptDeepSeekFieldText(detail string, prompt string) string {
- content := fmt.Sprintf(prompt, detail)
- l := len(content)
- if l > ul.MaxByte {
- detail = truncatedText(detail, len(detail)-(l-ul.MaxByte))
- content = fmt.Sprintf(prompt, detail)
- }
- return content
- }
- // 判断短文本
- func AcquireJudgeDeepSeekShortInfo(detail string) map[string]interface{} {
- content := PromptFieldText(detail, pmt_field_prefix)
- res := map[string]interface{}{}
- res = ai.PostDeepSeekAI(content)
- return res
- }
|