You need to enable JavaScript to run this app.
文档中心
智能推荐平台

智能推荐平台

复制全文
下载 pdf
推荐服务
推荐接口(predict)
复制全文
下载 pdf
推荐接口(predict)

调用个性化推荐接口,传入用户id以及相关的上下文信息等,可以获得推荐结果列表。

调用方法

predict(self, request: PredictRequest, *opts: CoreOption) -> PredictResponse

方法参数

参数

类型

说明

request

PredictRequest

请求体,请求体包含的参数说明见下表,具体使用方式见用例示范

opts

list[Option]

请求中可选参数,具体使用方式见用例示范;
注意:可通过
Option.with_request_id(request_id: str)自行设置requestId

  • request_id字段很重要,会通过request_id串起个性化推荐、曝光数据上报、行为数据。
  • 每次请求的request_id需要保证唯一
  • 如果未指定request_id,SDK会自动生成唯一的request_id,可通过返回体拿到该request_id

request请求体参数:

参数
类型
是否必传
描述
user
object
是
用户信息
context
object
是
上下文信息
candidateItems
object list
否
跳过召回等特殊场景需要上传候选集
parentItem
object
否
相关推荐场景需要上传
filterItems
object list
否
需要过滤的物品列表
size
int
否
接口返回物品个数(优先级高于栏位配置返回数量)

方法返回

推荐服务相关方法使用自定义的PredictRsponse类作为响应类型。

参数
类型
描述
code
int32
0或200代表正常,不等同于http status,用于排查业务错误
message
string
状态信息,默认"OK",遇到错误会返回错误信息
value
object
request_id
string
推荐请求的request_id

示例

import uuid
from datetime import datetime

from byteair import ClientBuilder, Client
from byteair.protocol.volcengine_byteair_pb2 import *
from core import Region, Option, NetException, BizException, metrics


# 示例省略client初始化过程


def predict():
    # 构造predict请求体
    predict_request = PredictRequest()
    user = predict_request.user
    user.uid = 'uid1'
    context = predict_request.context
    context.spm = "A$##$B$##$C"
    context.extra["extra_key"] = "extra_value"


    feature = context.feature
    feature.stringFeature["key"] = "value1"
    feature.stringFeature["key"] = "value2"
    feature.stringArrayFeature["array_key"].values.append("array_value1")
    feature.stringArrayFeature["array_key"].values.append("array_value2")
    filter = context.filter
    filter.stringFilter["key"] = "value"
    filter.stringArrayFilter["array_key"].values.append("array_value1")
    filter.stringArrayFilter["array_key"].values.append("array_value2")
    
    candidate_item1 = predict_request.candidateItems.add()
    candidate_item1.id = "item_id1"
    candidate_item2 = predict_request.candidateItems.add()
    candidate_item2.id = "item_id2"

    predict_request.size = 10

    opts = (
        Option.with_request_id(str(uuid.uuid1())),
        # 默认default,无需修改.
        Option.with_scene("default"),
        Option.with_timeout(timedelta(milliseconds=1000)),
        # 是否开启SPM路由.开启的话需要保证请求体里的SPM存在且绑定了栏位.
        # server会根据body里的SPM路由到选择的栏位.
        Option.with_headers({"Enable-Spm-Route": "true"}),
    )
    try:
        rsp = client.predict(predict_request, *opts)
    except (NetException, BizException) as e:
        print("[predict] occur error, msg: %s" % e)
        return
    if not rsp.success:
        print("[predict] failure")
        return
    print("[predict] success")
最近更新时间:2024.05.30 15:18:09
这个页面对您有帮助吗?
有用
有用
无用
无用