12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 |
- 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))
- }
- }
|