123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152 |
- package prompt
- import (
- "data_ai/ai"
- "data_ai/ul"
- "fmt"
- qu "jygit.jydev.jianyu360.cn/data_processing/common_utils"
- )
- var pmt_class = `
- 你是一个文本处理模型,根据下述信息做"招投标信息分类":
- 一、信息分类选项:[合同公告;验收公告;违规公告;结果公告;预告公告;招标公告;采购意向公告]
- 二、信息分类权重(权重由高到低排序):[合同公告;验收公告;违规公告;结果公告;预告公告;招标公告;采购意向公告]
- 三、信息分类参考资料:
- 1、合同公告:合同公告是指在招投标结束后,招标人与中标人正式签订合同后发布的公告。它通常包含合同的主要内容、双方的基本信息、合同金额、签订日期等关键信息,旨在公示合同的签订情况,确保招投标活动的透明度和合法性。正文内容中提到了合同编号或者合同的具体内容,表明这是一篇合同公告。请结合列举的“关键词”进行推导,关键词:[合同公示,合同公告,合同备案,合同签订];
- 2、验收公告:宣布招标人对项目或服务完成情况进行评估和确认。请结合列举的“关键词”进行推导,关键词:[验收公告,验收报告,验收公示,电子验收单公示,验收结果];
- 3、违规公告:宣布参与招投标的任何一方违反相关法律法规或原则。请结合列举的“关键词”进行推导,关键词:[不良记录,行政处罚,不良行为,虚假合同,虚假材料];
- 4、结果公告:发布的是招投标公告评选过程或评标结果的信息,还涉及开标记录、结果变更的情况。通常会列出候选人、供应商、中标人、中标金额等信息,包括"候选公告","结果变更公告","成交公告","流标公告","废标公告"这几种类型。请结合列举的"关键词"进行推导,关键词:[评标,得分,工期,项目负责人,开标记录,中标候选,候选人,成交候选,候选入围,成交,成交金额,成交公告,供应商名称,采购结果,中选公告,中选结果,中选金额,流标,取消公告,取消采购,二次流标,比选失败,招标结束,采购程序终止,废标,作废,终止,废止公告,项目终止,招标公告作废,未成交公告,未成交公示,取消成交候选供应商,取消中标候选供应商,结果变更,中标结果变更,废标结果变更,变更中标人,重新公示,重新确认中标结果,重新确定中标人,重新确认中标公告,结果顺延];
- 5、预告公告:在招标公告正式开始前,发布资格预审信息、预审评审结果、招投标文件过程中问题的分析和评估意见、招投标项目的具体需求、技术要求等信息。请结合列举的"关键词"进行推导,关键词:[预告,预公告,预公示,资审,资审及业绩公示,参加资格预审,预审邀请,需求调研,调研公告,采购计划,审前公示,预审公告,资格预审,预审公告,招标预审,预审,预审结果,资格预审公示,资审结果,审查结果,论证意见,方案征集公告,审核前公示,专家组论证意见,需求论证公示,征求意见,采购需求,项目需求公示,论证公示,需求评审公告,需求公示,论证意见公示,征求意见,征集意见];
- 6、招标公告:招标单位或招标人公布项目的基本信息、标准、招标条件、价格和要求等,邀请符合资格的投标人参与项目投标。根据不同的招标方式和流程,可包括"单一来源公告"、"询价公告"、"竞价公告","邀标公告","竞争谈判公告","招标变更公告"。请结合列举的"关键词"进行推导,关键词:[招标公告,二次招标,招标报名,招标采购,单一来源,单一采购,询价,询价公告,议价采购,询价邀请,竞价,网上竞价,竞价公告,竞价开始(结束),邀请,邀请招标,投标邀请,邀标公告,邀请书,公开邀请,报价邀请,磋商,竞争性谈判,竞争性磋商,磋商公告,招标变更];
- 7、采购意向公告:请结合列举的"关键词"进行推导,关键词:[采购意向,意向公告,招标计划,采办计划,预计采购];
- 我希望你根据正文内容,仅从"信息分类选项"中选取一个合适的分类。在识别过程中出现多个结果时,按照"信息分类权重"优先选举一个权重大的,并将分类识别结果严格按照下述JSON格式输出。
- JSON格式:
- {
- "信息分类":"招投标信息分类",
- "理由":"请给出信息分类结果的理由",
- }
- 按照以上要求输出,不要联想,不要无中生有,不要生成解释,对于尚未确定或未明确的信息请在JSON对应的值填写:无
- 正文内容:` + `%s` + "\n" + `%s` + `
- 结果JSON:`
- // 获取分类信息...
- func AcquireClassInfo(detail string, title string, top string) (string, string) {
- if top == "拟建" {
- return "拟建", "拟建"
- } else if top == "产权" {
- return "产权", "产权"
- } else if top == "采购意向" {
- return "采购意向", "采购意向"
- } else {
- }
- top_content := PromptToptypeFieldText(detail, title)
- top_zp, ok := ai.PostZhiPuClassInfo(top_content)
- if !ok {
- return "", ""
- }
- //根据一级分类识别,获取toptype和subtype
- var toptype, subtype string //标准化的一级、二级分类
- toptype_ai, _ := top_zp["信息分类"].(string)
- tpInfo := ul.ToptypeDict[toptype_ai]
- if tpInfo != nil {
- toptype = tpInfo.Topetype
- subtype = tpInfo.Subtype
- } else { //匹配结果为非正规toptype,如:询价公告(66993a9d66cf0db42a5597af)
- for top, reg := range ul.ToptypeRegs {
- if reg.MatchString(toptype_ai) {
- if tpInfo = ul.ToptypeDict[top]; tpInfo != nil { //ToptypeRegs中预告公告、验收公告、合同公告直接获取subtype
- toptype = tpInfo.Topetype
- subtype = tpInfo.Subtype
- break
- }
- }
- }
- }
- if toptype == "" || tpInfo == nil {
- return "", ""
- }
- //获取二级分类
- sub_zp := map[string]interface{}{}
- if subtype == "" {
- sub_content := PromptSubtypeFieldText(detail, title, toptype, tpInfo)
- sub_zp, ok = ai.PostZhiPuClassInfo(sub_content)
- if !ok {
- return "", ""
- }
- subtype_ai, _ := sub_zp["信息分类"].(string)
- subtype = tpInfo.SubtypeDict[subtype_ai]
- if subtype == "" && tpInfo.SubtypeRegs != nil { //二级分类校正
- for sub, reg := range tpInfo.SubtypeRegs {
- if reg.MatchString(subtype_ai) {
- subtype = sub
- break
- }
- }
- }
- }
- //subtype到此还可能为空,给默认值
- if subtype == "" {
- subtype = "其它"
- }
- return toptype, subtype
- }
- // 根据抽取字段校正分类结果
- func CheckClassByOtherFileds(toptype_ai, subtype_ai string, data map[string]interface{}) (string, string) {
- toptype_rule := qu.ObjToString(data["toptype"])
- subtype_rule := qu.ObjToString(data["subtype"])
- //1、结果类 中标和成交错误校正
- s_winner := qu.ObjToString(data["s_winner"])
- winnerorder, _ := data["winnerorder"].([]interface{})
- if toptype_ai == "结果" && toptype_rule == "结果" {
- if ((subtype_ai == "中标" || subtype_ai == "其它") && subtype_rule == "成交") || ((subtype_ai == "成交" || subtype_ai == "其它") && subtype_rule == "中标") {
- if len(winnerorder) > 0 { //有中标候选人->中标
- return toptype_ai, "中标"
- }
- if s_winner != "" || data["bidamount"] != nil {
- return toptype_ai, "成交"
- }
- }
- }
- //2、招标、结果错误校正
- if toptype_ai != "结果" && toptype_rule == "结果" {
- //return toptype_rule,subtype_rule//默认规则为准
- if len(winnerorder) > 0 || s_winner != "" || data["bidamount"] != nil {
- return toptype_rule, subtype_rule
- } else {
- return toptype_ai, subtype_ai
- }
- } else if toptype_ai == "结果" && toptype_rule != "结果" && (subtype_ai == "中标" || subtype_ai == "成交") { //结果-变更
- //return toptype_rule,subtype_rule//默认规则为准
- if len(winnerorder) > 0 { //有中标候选人->中标
- return toptype_ai, "中标" //这里subtype返回"中标",避免ai识别错误
- } else if s_winner != "" || data["bidamount"] != nil {
- return toptype_ai, "成交" //这里subtype返回"成交",避免ai识别错误
- } else {
- return toptype_ai, subtype_ai
- }
- }
- return toptype_ai, subtype_ai
- }
- func PromptToptypeFieldText(detail, title string) string {
- //1、合同验收违规公告:包含招标人与中标人签订的合同公告,或者宣布招标人对项目、服务完成情况的评估、确认的公告,亦或者宣布参与招投标的任何一方违反法律法规、原则的公告。包括。请结合列举的"关键词"进行推导,关键词:[验收公告,验收报告,验收公示,电子验收单公示,验收结果,合同公示,合同公告,合同备案,合同签订,不良记录,行政处罚,不良行为,虚假合同,虚假材料],
- content := fmt.Sprintf(pmt_class, title, detail)
- l := len(content)
- if l > ul.MaxByte {
- detail = truncatedText(detail, len(detail)-(l-ul.MaxByte))
- content = fmt.Sprintf(pmt_class, title, detail)
- }
- return content
- }
- func PromptSubtypeFieldText(detail, title, toptype string, tpInfo *ul.TypeInfo) string {
- content := fmt.Sprintf(tpInfo.SubtypeAiText, title, detail)
- l := len(content)
- if l > ul.MaxByte {
- detail = truncatedText(detail, len(detail)-(l-ul.MaxByte))
- content = fmt.Sprintf(tpInfo.SubtypeAiText, title, detail)
- }
- return content
- }
|