123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293 |
- 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
- //}
|