如何开发推荐类AI应用
推荐类AI应用通过分析用户历史行为,快速推荐合适的内容给感兴趣的用户。
场景描述
根据所有客户的历史下单情况给某些客户精准推荐感兴趣的产品。
前提条件
- 参考如何登录经典版环境配置中操作,登录AstroZero经典版环境配置。
- 在左侧导航栏中,选择“系统管理 > 数据处理 > 数据导入”,单击“新建”,导入对象依赖的选项列表数据“picklist.zip”(单击下载链接,获取该包)。
- 推荐前,需要准备好有效的推荐内容、接收人、交互对象。
本节示例场景下请参考如下方法导入对象元数据:在AstroZero管理中心左侧导航栏中,选择“系统管理 > 数据处理 > 元数据导入”,单击“新建”,导入元数据包“推荐类AI应用对象元数据表.zip”(单击下载链接,获取该包)。
- 推荐内容表示您想要推荐的内容,例如产品对象“aienable__product__CST”。
- 接收人表示接收推荐的人,例如互联网用户对象“aienable__customer__CST”。
- 交互对象表示推荐对象与接收人对象之间的交互对象,例如订购关系对象“aienable__order__CST”。
表1 aienable__product__CST对象说明 字段标签
字段名称
数据类型
字段描述
product_id
aienable__productId__CST
文本
产品ID。
product_category_name
aienable__productCategoryName__CST
文本
产品所属分类。
product_name_lenght
aienable__productNameLenght__CST
数字
产品名称。
product_description_lenght
aienable__productDescriptionLenght__CST
数字
产品描述信息。
product_photos_qty
aienable__productPhotosQty__CST
选项列表
展示该产品的图片数量。
product_weight_g
aienable__productWeightG__CST
数字
产品重量。
product_length_cm
aienable__productLengthCm__CST
数字
产品长度。
product_height_cm
aienable__productHeightCm__CST
数字
产品高度。
product_width_cm
aienable__productWidthCm__CST
数字
产品宽度。
表2 aienable__customer__CST对象说明 字段标签
字段名称
数据类型
字段描述
customer_state
aienable__customerState__CST
选项列表
客户所在地区。
customer_id
aienable__customerId__CST
文本
客户ID。
表3 aienable__order__CST对象说明 字段标签
字段名称
数据类型
字段描述
order_id
aienable__orderId__CST
文本
订单ID。
customer_id
aienable__customerId__CST
文本
客户ID。
product_id
aienable__productId__CST
文本
产品ID。
price
aienable__price__CST
数字
产品单价。
freight_value
aienable__freightValue__CST
数字
包装重量。
order_status
aienable__orderStatus__CST
选项列表
订单状态。
order_purchase_timestamp
aienable__orderPurchaseTimestamp__CST
文本
客户下单该产品日期。
order_delivered_customer_date
aienable__orderDeliveredCustomerDate__CST
文本
产品预计开始邮寄的日期。
order_estimated_delivery_date
aienable__orderEstimatedDeliveryDate__CST
文本
产品预计到手日期。
- 已准备好用于分析的历史数据。其中推荐内容数据至少需要10条,接收人数据至少需要10条,交互对象数据至少需要50条。
本节示例场景下请参考如下方法导入数据:在AstroZero管理中心左侧导航栏中,选择“系统管理 > 数据处理 > 数据导入”,单击“新建”,导入数据包“推荐类AI应用数据样例.zip”(单击下载链接,获取该包)。
创建推荐类AI应用
- 参考如何进入经典开发环境中操作,登录经典版开发环境。
- 在 页签中,单击“AI应用”。
- 单击“创建场景式AI服务”,设置应用名称、描述信息(可选),选择“推荐服务”类型,单击“确定”。
- 根据业务需求,选择推荐内容对象、接收人对象以及交互对象,单击“下一步”。
- 选择与推荐内容与接收人有关的字段,单击“下一步”。
- 检查配置是否正确,单击“开始训练”。
系统将根据数据训练推荐项目模型,通常需要花费几分钟,请耐心等待。
- 查看此训练相关的详细信息,单击“发布”。
如下图所示,状态为“已发布”,表示场景式AI服务发布成功。
在服务编排中使用AI服务
- 推荐模型发布后,在图1中单击“使用”,可使用该推荐模型进行推荐。
系统支持使用服务编排或者脚本来调用推荐服务。
- 选择使用该推荐服务的应用,保持默认所选页签“在Flow中使用”,单击“开发”。
系统会自动为所选应用创建好“AIExample”文件夹和归属于该文件夹的服务编排。
- 在弹出的服务编排编辑页面查看如下信息。
- 在页面右侧选择,在全局上下文页面查看到系统已自动创建如下变量。
图3 查看变量
表4 变量说明 变量名
类型
描述
dataInputs
任意
输入参数。
resCode
文本
返回码,如果返回“0”代表请求成功。
resMsg
文本
返回消息,如果成功状态,通常会返回“成功”,其他情况会返回具体的错误信息。
result
任意
调用推荐服务请求返回的推荐内容。
- 查看整个服务编排的入参、出参。
图4 查看入参出参
- 选择推荐服务图元,查看配置信息。
图5 图元配置
- 在页面右侧选择,在全局上下文页面查看到系统已自动创建如下变量。
- 单击编辑器上方的,保存服务编排。
- 单击编辑器上方的,运行服务编排。
- 输入入参,入参可从图2中“输入参数详情”区域单击获取,给入参即相关字段配上测试值。
其中,“recipients_id”为5配置的接收人对象字段值,该场景表示接受推荐内容的客户ID。以下输入参数中“fff7466a253c0e59499ea943462c10f9”和“677ea793bab5253b52c7f73f0e120b74”为有效的客户ID,“6775ba6a3e92020abc8e6cd6e19e867a”为无效的客户ID,即该客户ID不存在。
“N”表示给接收人推荐的产品数量。{ "dataInputs": { "recipients_id": [ "fff7466a253c0e59499ea943462c10f9", "677ea793bab5253b52c7f73f0e120b74", "6775ba6a3e92020abc8e6cd6e19e867a" ], "N": 3 } }
输出以下结果,表示调用推荐服务成功,给有效客户ID的推荐内容为5配置的产品ID。其中,“rating”值为预测接收人购买该产品的概率。这里看出,当输入无效客户ID时,不会推荐相关内容。
{ "interviewId": "002N000000pLvvBbbBke", "outputs": { "resCode": "0", "resMsg": "成功", "result": { "677ea793bab5253b52c7f73f0e120b74": [ { "aienable__productId__CST": "5727b4e9463bfa0b43bf97397c4b7c44", "rating": 0.9780523919210801 }, { "aienable__productId__CST": "58e3dad74a022a8e41571be503143e5b", "rating": 0.9343108103239535 }, { "aienable__productId__CST": "58efb9b638561ce132216a9a612513e2", "rating": 0.9228962093643385 } ], "fff7466a253c0e59499ea943462c10f9": [ { "aienable__productId__CST": "5727b4e9463bfa0b43bf97397c4b7c44", "rating": 1 }, { "aienable__productId__CST": "57f2bc497c1a3ebe41ba7a06d78ed159", "rating": 0.979109618457509 }, { "aienable__productId__CST": "574597aaf385996112490308e37399ce", "rating": 0.9502617871072747 } ] } } }
- 单击编辑器上方的,启用服务编排。
在脚本中使用AI服务
- 推荐模型发布后,在图1中单击“使用”,可使用该推荐模型进行推荐。
系统支持使用服务编排或者脚本来调用推荐服务。
- 选择使用该推荐服务的应用,选择页签“在Script中使用”,单击“开发”。
系统会自动为所选应用创建好调用该AI的脚本,代码示例如下:
import * as aienable from 'aienable'; export class Input { @action.param({ type: "Any", required: false, description: "name" }) name: string; // name为已发布的预测/推荐服务名称 @action.param({ type: "Any", required: false, description: "input" }) dataInputs: JSON; } export class Output { @action.param({ type: "Any" }) result: JSON; } export class testAIEnable { @action.method({ input: "Input", output: "Output", description: "do a operation" }) run(input: Input): void { let client = aienable.newClient("recommendation_services") let result = client.recommend(input.name, input.dataInputs); console.log(result) } }
- 单击编辑器上方的,保存脚本。
- 单击编辑器上方的,运行脚本。
- 在页面底部“输入参数”页签输入请求参数,在图6中“输入参数详情”区域单击获取,给入参即相关字段配上测试值。
- 单击测试窗口右上角的,执行脚本。
其中,“recipients_id”为5配置的接收人对象字段值,该场景表示接受推荐内容的客户ID。以下输入参数中“fff7466a253c0e59499ea943462c10f9”和“677ea793bab5253b52c7f73f0e120b74”为有效的客户ID,“6775ba6a3e92020abc8e6cd6e19e867a”为无效的客户ID,即该客户ID不存在。
“N”表示给接收人推荐的产品数量。
{ "name": "test_02", "dataInputs": { "recipients_id": [ "fff7466a253c0e59499ea943462c10f9", "677ea793bab5253b52c7f73f0e120b74", "6775ba6a3e92020abc8e6cd6e19e867a" ], "N": 3 } }
输出以下结果,表示调用推荐服务成功,给有效客户ID的推荐内容为5配置的产品ID。其中“rating”值为预测接收人购买该产品的概率。这里看出,当输入无效客户ID时,不会推荐相关内容。
{ resCode: '0', resMsg: '成功', result: { 677ea793bab5253b52c7f73f0e120b74: [ { aienable__productId__CST: '5727b4e9463bfa0b43bf97397c4b7c44', rating: 0.9780523919210801 }, { aienable__productId__CST: '58e3dad74a022a8e41571be503143e5b', rating: 0.9343108103239535 }, { aienable__productId__CST: '58efb9b638561ce132216a9a612513e2', rating: 0.9228962093643385 } ], fff7466a253c0e59499ea943462c10f9: [ { aienable__productId__CST: '5727b4e9463bfa0b43bf97397c4b7c44', rating: 1 }, { aienable__productId__CST: '57f2bc497c1a3ebe41ba7a06d78ed159', rating: 0.979109618457509 }, { aienable__productId__CST: '574597aaf385996112490308e37399ce', rating: 0.9502617871072747 } ] } }
- 单击编辑页面上方的,启用脚本。