调用个性化推荐接口,传入用户id以及相关的上下文信息等,可以获得推荐结果列表。
Predict(request *PredictRequest, opts …option.Option) (*PredictResponse, error)
参数 | 类型 | 说明 |
---|---|---|
request | PredictRequest | 请求体,请求体包含的参数说明见下表,具体使用方式见用例示范 |
opts | []option.Option | 额外参数可通过
|
request请求体参数:
参数 | 类型 | 是否必传 | 描述 |
---|---|---|---|
user | object | 是 | 用户信息 |
context | object | 是 | 上下文信息 |
candidateItems | object list | 否 | 跳过召回等特殊场景需要上传候选集 |
parentItem | object | 否 | 相关推荐场景需要上传 |
filterItems | object list | 否 | 需要过滤的物品列表 |
size | int | 否 | 接口返回物品个数(优先级高于栏位配置返回数量) |
推荐服务相关方法使用自定义的PredictRsp类作为响应类型
参数 | 类型 | 描述 |
---|---|---|
code | int32 | 0或200代表正常,不等同于http status,用于排查业务错误 |
message | string | 状态信息,默认"OK",遇到错误会返回错误信息 |
value | object | |
requestId | string | 推荐请求的requestId |
import ( "github.com/google/uuid" "github.com/volcengine/volcengine-sdk-go-rec/byteair" "github.com/volcengine/volcengine-sdk-go-rec/byteair/protocol" "github.com/volcengine/volcengine-sdk-go-rec/core/logs" "github.com/volcengine/volcengine-sdk-go-rec/core/option" ) // 已经初始化好的client.示例省略init() var client byteair.Client func Predict() { // 请求体 req := &protocol.PredictRequest{ User: &protocol.PredictUser{ Uid: "uid1", }, Context: &protocol.PredictContext{ Spm: "A$##$B$##$C", Extra: map[string]string{"extra_key": "extra_value"}, }, CandidateItems: []*protocol.PredictCandidateItem{&protocol.PredictCandidateItem{ Id: "item_id1", }}, ParentItem: &protocol.PredictParentItem{ Id: "item_id2", }, Size: 10, } opts := []option.Option{ // 默认default,无需修改. option.WithScene("default"), option.WithRequestId(uuid.NewString()), // 是否开启SPM路由.开启的话需要保证请求体里的SPM存在且绑定了栏位. // server会根据body里的SPM路由到选择的栏位. option.WithHeaders(map[string]string{ "Enable-spm-route": "true", }), } rsp, err := client.Predict(req, opts...) if err != nil { logs.Error("[predict] occur error, msg: %s", err.Error()) return } if !rsp.GetSuccess() { logs.Error("[predict] failure") return } logs.Info("[predict] success") }