客户机重组建议
recombee-api-client的Python项目详细描述
易于使用Recombee推荐api的python客户机。python 2和python 3都受支持。
如果您在recombee还没有帐户,可以创建一个免费帐户here。
api的文档可以在docs.recombee.com找到。
安装
使用pip安装客户端:
$ pip install recombee-api-client
(如果使用python 3,请使用pip3而不是pip)
示例
基本示例
fromrecombee_api_client.api_clientimportRecombeeClientfromrecombee_api_client.exceptionsimportAPIExceptionfromrecombee_api_client.api_requestsimportAddPurchase,RecommendItemsToUser,Batchimportrandomclient=RecombeeClient('--my-database-id--','--db-private-token--')#Generate some random purchases of items by usersPROBABILITY_PURCHASED=0.1NUM=100purchase_requests=[]foruser_idin["user-%s"%iforiinrange(NUM)]:foritem_idin["item-%s"%iforiinrange(NUM)]:ifrandom.random()<PROBABILITY_PURCHASED:request=AddPurchase(user_id,item_id,cascade_create=True)purchase_requests.append(request)try:# Send the data to Recombee, use Batch for faster processing of larger dataprint('Send purchases')client.send(Batch(purchase_requests))# Get recommendations for user 'user-25'recommended=client.send(RecommendItemsToUser('user-25',5))print("Recommended items: %s"%recommended)exceptAPIExceptionase:print(e)
使用属性值
fromrecombee_api_client.api_clientimportRecombeeClientfromrecombee_api_client.api_requestsimportAddItemProperty,SetItemValues,AddPurchasefromrecombee_api_client.api_requestsimportRecommendItemsToItem,Batch,ResetDatabaseimportrandomNUM=100PROBABILITY_PURCHASED=0.1client=RecombeeClient('--my-database-id--','--db-private-token--')#Clear the entire databaseclient.send(ResetDatabase())# We will use computers as items in this example# Computers have four properties# - price (floating point number)# - number of processor cores (integer number)# - description (string)# - image (url of computer's photo)# Add properties of itemsclient.send(AddItemProperty('price','double'))client.send(AddItemProperty('num-cores','int'))client.send(AddItemProperty('description','string'))client.send(AddItemProperty('image','image'))# Prepare requests for setting a catalog of computersrequests=[SetItemValues("computer-%s"%i,#itemId#values:{'price':random.uniform(500,2000),'num-cores':random.randrange(1,9),'description':'Great computer','image':'http://examplesite.com/products/computer-%s.jpg'%i},cascade_create=True# Use cascadeCreate for creating item# with given itemId if it doesn't exist)foriinrange(NUM)]# Send catalog to the recommender systemclient.send(Batch(requests))# Prepare some purchases of items by usersrequests=[]items=["computer-%s"%iforiinrange(NUM)]users=["user-%s"%iforiinrange(NUM)]foritem_idinitems:#Use cascadeCreate to create unexisting userspurchasing_users=[user_idforuser_idinusersifrandom.random()<PROBABILITY_PURCHASED]requests+=[AddPurchase(user_id,item_id,cascade_create=True)foruser_idinpurchasing_users]# Send purchases to the recommender systemclient.send(Batch(requests))# Get 5 recommendations for user-42, who is currently viewing computer-6recommended=client.send(RecommendItemsToItem('computer-6','user-42',5))print("Recommended items: %s"%recommended)# Recommend only computers that have at least 3 coresrecommended=client.send(RecommendItemsToItem('computer-6','user-42',5,filter="'num-cores'>=3"))print("Recommended items with at least 3 processor cores: %s"%recommended)# Recommend only items that are more expensive then currently viewed item (up-sell)recommended=client.send(RecommendItemsToItem('computer-6','user-42',5,filter="'price' > context_item[\"price\"]"))print("Recommended up-sell items: %s"%recommended)
异常处理
为了简洁起见,上面的示例省略了异常处理。然而,在处理请求时可能会出现各种异常,例如,由于添加了已经存在的项、提交不存在的用户的交互或由于超时。
我们正在尽最大努力提供最快和最可靠的服务,但生产级应用程序必须实现回退解决方案,因为错误总是可能发生。例如,回退可能显示当前类别中最受欢迎的项目,或者根本不显示建议。
示例:
try:recommended=client.send(RecommendItemsToItem('computer-6','user-42',5,filter="'price' > context_item[\"price\"]"))exceptResponseExceptionase:#Handle errorneous request => use fallbackexceptApiTimeoutExceptionase:#Handle timeout => use fallbackexceptAPIExceptionase:#APIException is parent of both ResponseException and ApiTimeoutException