package compapi // //import ( // "time" // "wechat-api/internal/types" // // "github.com/openai/openai-go" //) // //type FormClient struct { // StdClient //} // //// Generate the JSON schema at initialization time //var FormResponseSchema = GenerateSchema[FormList]() // //type FormResponse struct { // DataIndex string `json:"dataIndex" jsonschema_description:"表单 id"` // Value []string `json:"value" jsonschema_description:" 值列表"` //} // //type FormList struct { // Values []FormResponse `json:"values" jsonschema_description:"表单列表"` //} // ///* // //"response_format":{"type":"json_object"}} // //{"type":"json_schema", // "json_schema":{ // "description":"从通话记录中提取表单","name":"keyword_schema","schema":{ // "$schema":"https://json-schema.org/draft/2020-12/schema","additionalProperties":false,"properties":{ // "keywords":{ // "description":"关键词库","items":{"type":"string"},"type":"array"},"regular":{"description":"正则表达式","items":{"type":"string"},"type":"array"},"similar_reply":{"description":"类似回复","items":{"type":"string"},"type":"array"},"swear_words":{"description":"脏话列表","items":{"type":"string"},"type":"array"},"user_intent":{"description":"用户意图","type":"string"},"user_mood":{"description":"用户情绪","type":"string"}},"required":["user_intent","similar_reply","keywords","regular","user_mood","swear_words"],"type":"object"},"strict":true}} //*/ // //func (me *FormClient) BuildRequest(req *types.CompApiReq) error { // nowTime := time.Now().Format("2006-01-02 15:04:05") // weekday := time.Now().Weekday().String() // //bytes, err := json.Marshal(req.Variables["form_data"]) // //if err != nil { // // return err // //} // //form_data := string(bytes) // // //先重构message // newMessSlice := make([]types.StdCompMessage, 2) // newMessSlice[0] = types.StdCompMessage{Role: "system", Content: `# 任务 //请帮助user从聊天记录中提取表单值,并返回一个JSON格式的表单值。 // //# 背景信息 //当前时间是:` + nowTime + ` //当前星期是:` + weekday + ` // //# 返回值示例 //* 如表单类型为 input、autoComplete、textarea,返回示例:["表单值"] //* 如表单类型为 radio、select,返回示例:["值1"] //* 如表单类型为 checkbox,返回示例:["值1", "值2"] //* 如表单类型为 cascader,返回示例:["一级值1", "二级值3"] //* 如表单类型为 date,返回示例:["2025-01-01"] //* 如没有找到某个表单相关的值,请不要返回该表单`} // // newMessSlice[1] = types.StdCompMessage{Role: "user", Content: `# 待提取表单 //` + req.Variables["form_data"] + ` // //# 聊天记录 //` + req.Variables["chat_history"]} // // //再构造ResponseFormat // if !IsOpenaiModel(req.Model) { // newMessSlice[1].Content = newMessSlice[1].Content.(string) + ` //# 请以下方的json结构输出 //[{ // "dataIndex": str, # 表单ID // "value": list[str] # 表单值列表 //}]` // req.ResponseFormat = openai.ResponseFormatJSONObjectParam{Type: "json_object"} // } else { // schemaParam := openai.ResponseFormatJSONSchemaJSONSchemaParam{ // Name: "keyword_schema", // Description: openai.String("从通话记录中提取表单"), // Schema: FormResponseSchema, // Strict: openai.Bool(true), // } // req.ResponseFormat = openai.ResponseFormatJSONSchemaParam{JSONSchema: schemaParam} // } // //req.Model = oldModel // req.Messages = newMessSlice // // return nil //}