package compapi import ( "wechat-api/internal/types" ) type IntentClient struct { MismatchClient } func (me *IntentClient) ResponseFormatSetting(req *types.CompApiReq) ResponseFormatConfig { //Message重构的配置 me.ResformatConfig.SysmesArgs = []any{} me.ResformatConfig.SysmesTmpl = `# 任务 1. 首先,判断用户的第一句话是否说了:“你好,(任意内容)通话”,如果说了,则不用理会评级规则,直接强制分配为"语音助手" 2. 如果不属于“语音助手”,请根据评级规则,对聊天记录给出评级、置信度、评分依据(逐项分析不要遗漏) # 细节说明 置信度从0到1,0为置信度最低,1为置信度最高。` me.ResformatConfig.UsermesArgs = []any{req.Variables["chat_history"]} me.ResformatConfig.UsermesTmpl = `# 评级规则: [ { 'rule': "用户表现出对产品有积极回应,询问有关产品的问题,或愿意进行后续操作,如确认微信号、询问发货地址或表达接受产品(例:'行'、'好'、'可以'、'是的')。", 'score': '有意向'}, { 'rule': "用户虽然未积极回应或表示不需要,但却有相关需求、或着符合某项购买条件、又或着询问了机器人问题,即便后期疲软或持否定态度,可移交销售顾问进行进一步的需求分析,以便改善产品或定制符合客户要求的产品", 'score': '待进一步分析'}, { 'rule': "用户表示自己在忙、在开会等,现在不太方便沟通。又或者对电话的真实性存疑,怀疑是诈骗电话,可后续让专业客服继续跟进", 'score': '暂时无法沟通'}, { 'rule': "除上述规则外的其他用户,包括:用户未回复直接挂机、用户拒绝后直接挂机的情况。请注意客户资源珍贵,请尽量归类为'有意向'或'待进一步分析',后续再由销售专家定性。", 'score': '其他'} ] # 聊天记录 %s ` //ResponseFormat设置的配置 me.ResformatConfig.ResformatDesc = "为通话记录进行评级" me.ResformatConfig.ResformatTxt = `{ "score": str, #评分结果:有意向、待进一步分析、暂时无法沟通、其他 "confidence_score": int, #置信度分数,范围从0.0到1.0 "scoring_criteria": str, #请逐步介绍为何评为这个结果 }` me.ResformatConfig.ResformatStruct = struct { Score string `json:"score" jsonschema_description:"评分结果:有意向、待进一步分析、暂时无法沟通、其他"` ConfidenceScore float32 `json:"confidence_score" jsonschema_description:"置信度分数,范围从0.0到1.0"` ScoringCriteria string `json:"scoring_criteria" jsonschema_description:"请逐步介绍为何评为这个结果"` }{} me.ResformatConfig.HaveSet = true return me.ResformatConfig } func (me *IntentClient) BuildRequest(req *types.CompApiReq) error { //设置相关个性化ResponseFormat配置信息 if !me.ResformatConfig.HaveSet { me.ResponseFormatSetting(req) } return me.MismatchClient.BuildRequest(req) } // 向Client.getClientActFace工厂方法注册 func init() { builder := func(c *Client) (clientActionFace, error) { return &IntentClient{MismatchClient{StdClient: StdClient{Client: c}}}, nil } err := RegisterClient("intent", builder) if err != nil { //panic(fmt.Sprintf("Failed to register client type 'mismatch': %v", err)) } }