在决定开发这个项目之前,我整理了很多带显示 AI 眼镜的应用场景,如办公辅助、阅读等。但最终选择了烹饪,因为它是一个非常适合 Rokid 眼镜+智能体搭建平台的场景,具有以下几个特点:
- 高频且高痛点:几乎每个人都需要做饭,而新手做饭往往会遇到很多麻烦,比如看菜谱不方便、疑问无法即时解答等。
- 环境特殊性:厨房环境中,用户的双手往往被占用,无法操作手机;或者满手是油,容易弄脏手机。
- 带显示的 AI 眼镜的优势:AI 眼镜的显示功能可以实时展示菜谱步骤,避免用户频繁操作手机屏幕;同时,厨房噪音大,语音输入 + 文字显示输出,比纯语音交互更适合。
- Rokid-灵珠智能体平台轻量易用:无需基于SDK进行代码开发,是流行的智能体搭建开发模式,对我个人来说,可以作为作为新技能,锻炼个人能力。
技术选型:为什么选择单 Agent 模式?
在技术选型上,我选择了单 Agent 代理者模式而非更专业的工作流/对话流模式。这是因为烹饪是一个高度开放的场景,并非一个有清晰 SOP 的场景。用户可能随时提出各种问题,而工作流模式无法很好地处理这种非标准化请求。当然,也有我个人对智能体能力的了解不充分带来的局限。我个人认知中,在几周的比赛项目中做精细化的工作流设计,不一定能够带来表现的提升。以下是具体的辩证过程:
单 Agent 模式的优势
- 灵活性:单 Agent 可以根据上下文动态调整响应策略,处理用户的各种突发问题。比如,当用户突然插入提问“这个步骤可以用料酒代替黄酒吗?”时,单 Agent 可以给出合理的建议,而工作流模式可能需要小心设计这种随时可能出现的分支情况。
- 上下文记忆:单 Agent 可以保持对话上下文,记住用户之前的选择和烹饪进度,避免工作流模式中常见的“流程重置”问题。比如,当用户在烹饪过程中主动打断并暂停一段时间后,单 Agent 可以继续之前的进度。
- 扩展性:单 Agent 可以通过添加新的技能模块快速扩展功能,而无需重新设计整个工作流。比如,我可以通过添加食材搭配建议、营养分析等技能模块,为用户提供更全面的烹饪辅助。
提示词的迭代过程
为了让单 Agent 模式能够更好地处理烹饪场景的开放性,我对提示词进行了多次迭代。初始版本的提示词过于简单,无法处理复杂场景。通过实际使用,我发现了很多问题,并逐步增加了细节限制。
最终版本的提示词包含 8 个技能模块,覆盖从选菜到完成的全流程:
- 拍照识别食材:通过拍照识别食材,推荐相关菜谱。
- 菜谱推荐:根据用户输入的食材,推荐相关的菜谱。
- 烹饪流程:提供整体烹饪流程,指导用户完成烹饪。
- 实时辅助:在烹饪过程中,按用户反馈指导下一步。
- 问题解答:解答用户的额外提问,回到烹饪流程。
- 时间规划:在费时操作时,提醒用户做别的菜。
- 记录添加:用户完成烹饪后,自动添加菜品到数据库。
- 手动添加:用户主动提出,添加做饭记录到数据库。
这些技能模块的设计,既保证了单 Agent 模式的灵活性,又通过细节限制确保了对话的连贯性和围绕烹饪主题进行。
开发过程:边实践边优化
初版的提示词其实是拍脑袋就定下来的,在实际的操作中修改了很多轮。
- 快速搭建基础框架(一下午时间):完成核心功能模块的设计和配置,包括提示词的编写和技能模块的绑定。
- 实际使用与优化(一个星期):每天做饭时都用它来辅助,遇到问题就记录下来,晚上再进行优化。
通过这种边用边改的方式,我解决了很多细节问题,比如:
- 如何让提示更简洁,避免遮挡整块屏幕。
- 如何处理用户的突发问题,保持对话连贯。
- 如何优化时间规划,帮助用户合理安排多菜品烹饪顺序。
- 如何处理复杂场景,比如多菜品同时烹饪、食材替代等。
项目特色:针对眼镜形态的优化
这个智能体的核心创新点在于选择了最能体现 Rokid 眼镜特色能力的场景,在仅使用灵珠平台的限制下,对眼镜形态进行了专门优化:
- 简洁提示:所有提示都经过精简,确保在小屏幕上清晰可见。比如,菜谱步骤只显示当前需要执行的操作,避免过多信息遮挡视线。
- 进度跟踪:自动记录烹饪进度,避免用户重复操作。比如,当用户完成一个步骤后,智能体自动推送下一步操作,无需用户手动触发。
- 个性化推荐:基于历史烹饪记录推荐菜品,避免重复。比如,当用户连续两天做了同一个菜时,智能体可以提醒用户换个口味。
不足与未来展望
当然,这个项目还有很多不足:
- 定时器功能:还需要等待平台能力更新,目前无法实现精确的时间控制。
- 复杂场景处理:一些复杂场景的处理还不够完善,比如多菜品同时烹饪的时间规划、食材替代的合理性判断等。
- 菜品库丰富度:菜品库还需要进一步丰富,覆盖更多的家常菜和特色菜。
- 菜品风味的个人画像记录:在线下路演过程中,有参观者表示,每个地域的口味有明显不同,应当接入或者记录眼镜用户的个人画像,成为更加主动理解用户生活细节的助手。避免每次主动微调菜品口味。
但我觉得这正是开发者社区的魅力所在——我们可以一起不断优化,让项目变得更好。比赛结束后,我已经购入了自己的Rokid Glasses,我自己也会继续使用这个智能体,迭代它的功能,让它变得更实用。
给开发者的建议
选择比努力更重要,作为个人开发者,能付出的时间精力是有限的,这种时候对加深场景的理解比消耗在连线工作流里的时间更有价值。
在开发过程中,我有以下几点建议:
- 深入理解场景:在开发之前,要深入理解目标场景的特点和用户的痛点,这样才能做出真正有价值的产品。
- 选择合适的技术:根据场景的特点选择合适的技术架构,不要盲目跟风。比如,在开放场景中,单 Agent 模式可能比工作流模式更适合。
- 边用边改:在开发过程中,要不断实际使用产品,发现问题并及时优化。这样可以快速迭代产品,提高产品的质量。
希望我的分享能给大家带来一些启发,也期待看到更多优秀的项目在 Rokid 开发者社区诞生。