logo
2

【百度AI搜索开发赛】笔记本推荐助手

笔记本推荐助手背景

因为笔记本性能参数对于本小白来说过于复杂,所以想着适应百度搜索组件把笔记本的价格、参数信息都获取到,然后用指定的预算让ai来推荐我选择什么笔记本。所以做了这个工作流

实现流程

1、意图识别

先试用意图识别来区分当前用户的需求,是想要推荐笔记本、获取笔记本性能参数还是闲聊。添加了两个意图,并且从意图中获取对应的信息,如当前用户预算、当前使用场景、咨询的笔记本名称
  
  
  
  
  
  
判断用户是否在询问单款或某类笔记本的性能细节,包括但不限于:具体硬件参数(如 CPU 型号及主频、显卡类型及显存、内存频率、硬盘读写速度、屏幕色域 / 刷新率、散热功率等);性能表现(如运行大型软件 / 游戏的流畅度、多任务处理能力、续航时长与性能模式的关系等)。此类聚焦‘性能本身是什么 / 怎么样’的问题判断用户是否在询问单款或某类笔记本的性能细节,包括但不限于:具体硬件参数(如 CPU 型号及主频、显卡类型及显存、内存频率、硬盘读写速度、屏幕色域 / 刷新率、散热功率等);性能表现(如运行大型软件 / 游戏的流畅度、多任务处理能力、续航时长与性能模式的关系等)。此类聚焦‘性能本身是什么 / 怎么样’的问题
  
  
  
  
  
  
判断用户是否在寻求具体的笔记本选购建议,包括但不限于:基于使用场景(如办公、游戏、设计、编程等)、预算范围、品牌偏好或特定需求(如轻薄便携、长续航、大屏高清等),询问‘适合买哪款’‘推荐一款 XX 用途的笔记本’‘预算 5000 元选什么本’等。此类聚焦‘该买哪款’的问题

2.参数获取

如果是单纯的咨询笔记本参数,那就简单了,直接先试用代码来把问题加工下,让问题变成对应的笔记本参数查询。然后就能用这个新的查询来进行百度智能搜索,格式化返回信息就可以直接返回给用户了
  
  
  
  
  
  
笔记本电脑{{String1}}参数
  
  
  
  
  
  
# 任务
解析数据,提取笔记本参数信息,返回json格式信息
#要求
1. 严格按照输出实例的格式输出
2. 禁止自行添加内容
3. 保持json格式输出
# 输出格式
===输出示例===
{
"CPU":<笔记本CPU型号 例如:AMD Ryzen AI Max+ 395>,
"显卡":<笔记本显卡型号、显卡显存 例如:RTX4060 8G>,
"内存":<笔记本是否单通道、内存类型、内存大小 例如:单通道 DDR5 64GB>,
"存储":<笔记本存储类型、存储容量、例如 SSD 1TB>,
"尺寸":<笔记本尺寸和比例 例如:15.6英寸 16:10>,
"分辨率":<笔记本分辨率 例如:1920*1080>,
"屏幕类型":<笔记本屏幕类型 IPS、TN、OLED 例如:OLED>,
"便携性":<笔记本重量和厚度 例如:2.5kg 25mm >,
"电池容量":<笔记本电池容量 例如:60Wh>,
"刷新率":<笔记本刷新率 例如:120Hz>,
"接口数量":<笔记本接口类型和数量,几个usbA接口几个usbC 例如:2A1C>,
"分扇数":<笔记本分扇数 例如:8>,
"网络":<笔记本网络类型 例如:Wi-Fi 6>,
"价格":<笔记本价格信息 例如:12999元>,
"其他":<笔记本其他参数 例如:支持 Thunderbolt 4>
}
===示例结束===

3.笔记本推荐

笔记本推荐,这个就稍微麻烦了。需要使用当前用户的预算来查询笔记本,再根据预算查询对应性能参数,最后根据用户的使用场景,来对笔记本进行最后的过滤

格式化价格

针对用户预算来个预算浮动区间,先来个上下500元吧。再对新的查询做加工,查询当前的笔记本价格
  
  
  
  
  
  
# 定义一个 main 函数,传入 params 参数。params 中包含了节点配置的输入变量。
# 需要定义一个字典作为输出变量
# 引用节点定义的变量:params['变量名']
# 运行环境 Python3;预置 Package:NumPy
import time
def main(params):
# 创建一个字典作为输出变量
output_object ={
"price_quesy":str(time.localtime().tm_year)+"年笔记本电脑价格"+str(params["price"])+"元",
"price_upper":params["price"]+500,
"price_lower":params["price"]-500,
"purpose":params["purpose"] or ""
}
# 返回输出字典类型变量 output_object,包含代码节点所需的输出数据
return output_object

价格查询

直接用智能搜索来查询电脑,智能搜索返回的格式有时候会不符合json,所以再加工下
  
  
  
  
  
  
# 任务
解析数据,提取笔记本名称信息,返回json格式信息
#要求
1. 严格按照输出实例的格式输出
2. 禁止自行添加内容
3. 保持json格式输出
4. 不对数据进行任何总结
# 输出格式
===输出示例===
{
"name":<笔记本品牌名称、型号名称、具体型号 例如:ROG 幻X2025 390+64GB>,
"price":<笔记本价格 例如:10000元>
}
===示例结束===
  
  
  
  
  
  
# 定义一个 main 函数,传入 params 参数。params 中包含了节点配置的输入变量。
# 需要定义一个字典作为输出变量
# 引用节点定义的变量:params['变量名']
# 运行环境 Python3;预置 Package:NumPy
import json
def main(params):
text = params["text"]
last_code_block_index = text.rfind("```")
if last_code_block_index != -1:
text = text[:last_code_block_index]
#格式清晰
clean_json_str = text.replace("\n", "").replace("\t", "").replace("```json", "").replace("```", "")
is_json=True
try:
json_object = json.loads(clean_json_str)
is_json=True
except ValueError:
is_json=False
unique_data=[]
if is_json :
data = json.loads(clean_json_str)
if isinstance(data, list):
# 转换字典为字符串进行去重,限制最大长度为20
seen = set()
for item in data:
if len(unique_data) >= 20: # 达到最大长度时跳出循环
break
item_str = json.dumps(item, sort_keys=True)
if item_str not in seen:
seen.add(item_str)
unique_data.append(item)
else:
# 非列表类型数据直接返回,但需确保嵌套列表长度不超过20
unique_data = data if not isinstance(data, list) else data[:20]
output_object ={
"is_json":is_json,
"output":unique_data
}
return output_object
组装完新的json数组后就可以对这些笔记本再进行二次查询了。再次循环调用 笔记本参数查询的流程,获取新的数据,最后用大模型对所有数据进行筛选和过滤。总结出当前预算当前用途场景的数据
  
  
  
  
  
  
# 角色
你是一位资深的笔记本电脑推荐专家,凭借丰富的专业知识和经验,依据用户的使用场景与预算,提供精准且优质的笔记本电脑推荐。
## 工作流程
### 步骤 1: 获取并筛选符合预算的笔记本电脑
1. 当用户提出需求时,首先询问用户的预算金额。若已获取该信息,则跳过此步。
2. 在笔记本电脑数据中,根据用户给定的预算金额进行筛选,列出所有符合预算的笔记本电脑。
### 步骤 2: 结合使用场景进行二次筛选
1. 获取当前用户笔记本电脑的使用场景信息。若用户未提供,则直接将技能 1 中筛选出的结果按常见场景分类列出。
2. 依据场景分类内的性能要求,对步骤 1 中筛选出的数据进行二次过滤。例如:
- 若使用场景为“游戏”:重点关注具备高性能显卡(如 RTX 系列显卡)、高刷新率屏幕、强劲散热系统、搭载酷睿 i7/i9 处理器或锐龙 9 处理器的游戏本。
- 若为“便携”场景:优先挑选轻薄机身、长续航(关注续航时长、电池容量、快充功能)、低重量的便携本或超极本。
- 对于“办公”场景:着重筛选具有稳定性能、长续航、高色域屏幕、丰富接口、安静散热以及防蓝光屏幕的商务本。
- 当使用场景是“设计”时:主要筛选配备高色准屏幕、高分辨率屏幕、强大图形处理能力、大容量内存、专业显卡(关注色域值、ΔE 值)的笔记本。
- 若使用场景为“学习”:重点推荐性价比高、性能稳定、可运行专业软件、轻便易携带的学生本,多核处理器的产品更佳。
### 步骤 3: 推荐笔记本电脑
1. 根据步骤 2 的筛选结果,为用户详细推荐符合要求的笔记本电脑。
2. 推荐内容应包括笔记本电脑的品牌、型号、主要配置参数、价格以及推荐理由等关键信息。
## 限制
- 交流内容仅围绕笔记本电脑推荐展开,坚决拒绝回答与笔记本电脑推荐无关的话题。
- 所推荐的笔记本电脑必须严格符合用户给定的使用场景和预算范围,不得有任何偏离。
- 回答用户问题时,语言表达要清晰、简洁、通俗易懂,避免使用过于专业和复杂的表述。
- 推荐内容应全面准确,涵盖关键信息,不得遗漏重要要点。
- 所有数据都只从 笔记本电脑数据 中获取
  
  
  
  
  
  
# 用户问题
推荐下{{lower}}到{{upper}}之间元左右,用于{{purpose}}的笔记本电脑
# 笔记本电脑数据
{{data}}

关键技术点

  1. 问题二次加工:因为让大模型、小模型来对问题进行加工来调用百度搜索、智能搜索 时间过长也过于浪费,所以本工作流中使用代码或模板直接对问题加工,这样速度更快也更好修改。
  2. 数据处理:大模型返回数据时,有时候会因为提示词、模型类型等原因返回的不是想要的内容或者返回的内容在下游代码内不好使用。所以本工作流里对返回结果进行二次加工和处理
  3. 智能搜索:其实有一些步骤可以不使用智能搜索替代,但是京东、淘宝等购物网站为防止爬虫,不会直接返回商品的具体信息,要不然可以直接用知识库的。使用智能搜索需要考虑深度问题,如果查询的数据过多会影响模型的返回时间
  4. 意图识别:使用意图识别对用户的问题进行识别,调用不同的工作流。对闲聊也进行了回收
评论
用户头像