Browse Source

完善更新bidding 碎片化大模型提示语

wcc 8 tháng trước cách đây
mục cha
commit
a4ce2d320f
2 tập tin đã thay đổi với 111 bổ sung16 xóa
  1. 19 16
      bidding_tags/main.go
  2. 92 0
      bidding_tags/tools.go

+ 19 - 16
bidding_tags/main.go

@@ -3,6 +3,7 @@ package main
 import (
 	"encoding/json"
 	"fmt"
+	"github.com/robfig/cron/v3"
 	"github.com/spf13/viper"
 	"go.uber.org/zap"
 	util "jygit.jydev.jianyu360.cn/data_processing/common_utils"
@@ -145,23 +146,24 @@ func main() {
 	//dealAllAi() //大模型
 
 	//dealInc()
-
-	where := map[string]interface{}{
-		"_id": map[string]interface{}{
-			"$lt": mongodb.StringTOBsonId("6715b7e8b25c3e1debabb8eb"),
-		},
+	//------------------------------------------------//
+	//where := map[string]interface{}{
+	//	"_id": map[string]interface{}{
+	//		//"$lt": mongodb.StringTOBsonId("6715b7e8b25c3e1debabb8eb"),
+	//		"$lt": mongodb.StringTOBsonId("672ce44bb25c3e1deb1109d7"), //2024-11-08;调用ai8
+	//	},
+	//}
+	//dealTopInformationAi7(where)//处理存量数据
+	//------------------------------------------------//
+	local, _ := time.LoadLocation("Asia/Shanghai")
+	c := cron.New(cron.WithLocation(local), cron.WithSeconds())
+	_, err := c.AddFunc(GF.Env.Spec, dealInc)
+	if err != nil {
+		log.Println("AddFunc err", err)
 	}
-	dealTopInformationAi7(where)
 
-	//local, _ := time.LoadLocation("Asia/Shanghai")
-	//c := cron.New(cron.WithLocation(local), cron.WithSeconds())
-	//_, err := c.AddFunc(GF.Env.Spec, dealInc)
-	//if err != nil {
-	//	log.Println("AddFunc err", err)
-	//}
-	//
-	//c.Start()
-	//defer c.Stop()
+	c.Start()
+	defer c.Stop()
 	////
 	select {}
 }
@@ -811,7 +813,8 @@ func dealTopInformationAi7(where interface{}) {
 					<-ch
 					wg.Done()
 				}()
-				resu, err := ZpAI7(key, model, lines)
+				//resu, err := ZpAI7(key, model, lines)
+				resu, err := ZpAI8(key, model, lines)
 				if err != nil {
 					jlog.Info("dealTopInformationAi7,第一次请求失败", zap.Error(err))
 					resu, err = ZpAI7(key, model, lines)

+ 92 - 0
bidding_tags/tools.go

@@ -565,3 +565,95 @@ C、修正结果,输出最终答案
 	}
 	return
 }
+
+// ZpAI8 经过刘康佳优化
+func ZpAI8(apiKey, model string, data interface{}) (rest map[string][]map[string]interface{}, err error) {
+	expireAtTime := int64(1735660800) // token 过期时间
+	text := fmt.Sprintf(`
+"""
+你是一个全行业领域的专家,对招投标行业领域分类了如指掌
+
+任务如下:
+# 输入内容
+公告start
+%s
+
+公告end
+
+# 流程:
+流程1:你需要分析提取出对应title中采购的标的物信息(去掉机构、公告类型、地点、网上超市、合同等无意义内容)
+流程2: 根据流程1和流程2的结果,通过理解每个领域的定义将标的物映射到下面合理的领域名称。
+
+# 限制
+    - ‘其他领域’标签只能单独出现,不可以和出现在别的领域标签后面
+    - 如果没有标的物或者下面领域标签没有适合的结果,则领域标签只输出‘其他领域’
+    - 不可以随意捏造并使用不存在的领域名称
+# 领域名称定义:
+    - 其他领域:凡是不存在下面领域定义的标的物,包括但不限于农副产品、物资、实验设备、监理服务、采购意向等,直接输出"其他领域"
+    - 车辆领域:涉及所有与车辆相关的业务和服务,包括但不限于新车购买、二手车交易、车辆租赁、汽车维修保养、汽车配件销售、车辆保险、驾驶培训等;
+    - 安防领域:安防领域通常包括但不限于视频监控、入侵检测、安全警报、门禁系统、防盗报警、周界防护、智能安防解决方案、火灾报警与应急处理、人员识别与追踪、安全巡逻、数据分析与风险评估等,例如:安防监控、安防产品、周界防范、安防监控系统、信息安全、数据安全等;
+    - 印务领域:跟印刷或出版相关的行业和活动,包括印刷技术、印刷材料、印刷设备与维护、广告服务、出版服务、包装设计等,还包括打印机、印刷机、油墨、打印纸张等印刷相关材料和配件的内容,如印刷、打印复印、打印设备、云打印、印刷服务等。
+    - 环境领域:跟环境保护或环境治理相关的内容,如电子废物处理、垃圾处理、生态污水处理、生态修复、环境监管体系、废物管理与资源化等
+    - 家具领域:跟家具相关的内容,包括家用家具、办公家具、教学家具、医院家具、宿舍家具、定制家具、家具采购、家具设计与安装、家具维修与翻新等,如办公桌、电脑桌、文件柜、人体工学椅、欧式家具、木质家具、木地板、家具饰品等;
+    - 财务审计领域:涉及财务和审计相关的业务和服务,包括但不限于资产评估、财务报表审计、内部控制审计、税务审计、经济责任审计、财务咨询、会计服务、资产清查、纳税申报、破产清算等。
+    - 管理咨询领域:包括但不限于工程咨询管理、人力资源管理、市场营销策划、业务流程优化、企业管理咨询、管理培训、战略顾问、人力资源咨询、相关培训项目业务、咨询服务相关业务等,
+    - 保险领域:涉及保险产品的销售、服务及管理,包括但不限于人寿保险、财产保险、健康保险、意外伤害保险、责任保险、再保险、保险理赔、风险管理、保险产品设计与开发等,如保险代理、保险经纪、保险咨询服务、保险解决方案等。
+    - 工程设计咨询领域:注意:该领域只针对服务类型,指涉及工程设计、设计施工承包、工程造价咨询、工程技术可行性、环境影响研究、经济型评估等设计前的咨询服务以及勘测相关技术服务、建筑设计等
+    - 招标代理领域:仅限于标的物主干部分是招投标代理服务等,
+
+A、依次获取公告title中采购的标的物判断对应领域名称,严格按照下面JSON格式输出
+
+{
+  "result":[
+      {"title":"title(原title文本)","class":"领域名称"(如果是单领域则只输出一个领域,如果公告属于多个领域请用','分割)},
+    ]
+}
+
+B、审查结果
+(1)审查A的结果输出,判断输出领域与公告采购标的物是否强相关,否则输出"其他领域"
+
+
+C、修正结果,输出最终答案
+
+答(干净利落,不解释,只要C结果,严格按照JSON格式返回数据,不需要多余的解释说明)
+"""
+
+`, data)
+
+	originalValue := 0.01
+	originalValue2 := 0.7
+	mssage := zhipu.PostParams{
+		Model: model,
+		Messages: []zhipu.Message{
+			{
+				Role:    "user", // 消息的角色信息 详见文档
+				Content: text,
+			},
+		},
+		Temperature: &originalValue,
+		TopP:        &originalValue2,
+	}
+
+	postResponse, err := zhipu.BeCommonModel(expireAtTime, mssage, apiKey, time.Minute*10)
+	if err != nil {
+		log.Println("请求智普失败", err)
+		return
+	}
+
+	if choices, ok := postResponse["choices"].([]interface{}); ok {
+		if choice, ok2 := choices[0].(map[string]interface{}); ok2 {
+			if message, ok3 := choice["message"].(map[string]interface{}); ok3 {
+				if content, ok4 := message["content"].(string); ok4 {
+					content = strings.ReplaceAll(content, "\n", "")
+					content = strings.ReplaceAll(content, "json", "")
+					content = strings.ReplaceAll(content, "`", "")
+					err = json.Unmarshal([]byte(content), &rest)
+					//if err != nil {
+					//	log.Println("Unmarshal err", err, "content:", content)
+					//}
+				}
+			}
+		}
+	}
+	return
+}