基于灵珠智能体的AIGlasses应用实践 ——「觅食」智能营养分析助手

一、背景与选题动机

2026年,随着智能眼镜被纳入"国补",AR+AI可穿戴设备迎来新一轮爆发。相比手机,智能眼镜具备"第一视角输入+即时反馈"的天然优势,使得AI从"被动工具"转变为"主动助手"。在这样的背景下,我尝试基于灵珠平台开发一款贴近日常生活的智能体应用------"觅食"智能营养分析助手。

用户只需对着食物说一句:"乐奇,开始觅食",即可通过Rokid AI Glasses拍摄当前食物,并自动完成识别、营养分析以及饮食建议输出。这种"所见即分析"的体验,正是AIGlasses区别于传统应用的核心价值。

二、应用场景设计

"觅食"的核心定位是:实时饮食决策辅助工具。

在传统场景中,用户如果想了解食物热量,通常需要:

打开APP

搜索食物名称

查阅营养表

而在AIGlasses场景下,流程被极大简化为:

看 → 说 → 得到结果

具体应用场景包括:

🍱 外卖/餐厅点餐:快速判断热量与营养结构

🏋️ 健身减脂:实时控制碳水与脂肪摄入

👨‍👩‍👧 家庭饮食:优化膳食结构

👁️ 辅助功能:帮助用户理解食物组成

三、整体技术架构

整个系统采用 "智能体工作流 + 多模型协同"的架构:

用户语音 → AI Glasses唤醒(乐奇)

↓ 调用 notify_take_photo 插件拍照获取图像

↓ 调用 foods_tools_1 智能体上传图片和用户提问内容

↓ 食物判断模型(是否为食物)

↓ IF分支控制

↓ 营养分析大模型(多维度分析)

↓ 结构化数据输出,同时储存本次分析记录到 foods_log表

↓ 文本总结输出

四、核心技术实现

  1. 食物识别前置判断(关键优化)

在早期测试中发现,大模型存在"过度识别"问题------即使上传风景图,也可能被解析为食物。

为此我引入了前置判断模型:

{

"isFood": true,

"confidence": "高",

"reason": "包含肉类与主食"

}

并通过工作流 IF 节点实现:

IF isFood = false → 直接返回"非食物"

IF isFood = true → 进入营养分析

👉 这一优化显著提升了系统可靠性。

  1. 营养分析模型设计

营养分析采用视觉大模型(豆包视觉模型)进行推理,输出结构化数据:

json 复制代码
{
  "name": "大盘鸡配面条",
  "heat": "550-800 kcal",
  "ratio": "碳水约60%,脂肪约20%,蛋白质约20%",
  "suggest": "减少油脂摄入,控制主食量"
}

关键设计点:

所有数值采用"范围"表达(避免虚假精确)

强制输出结构化JSON(便于后续处理)

限制建议长度(提升可读性)

系统提示词:

复制代码
你是一名专业的智能营养分析AI助手,负责根据图片识别食物并进行营养估算。

你会接收三个个输入:

> {{input}}:图片数据(URL、base64或文件标识)
> {{output}}:食物判断阶段的JSON结果(包含 isFood 字段)
> {{foods_logs}}:最近几次的饮食记录表数据(数组形式)


--------------------------------------------------

【前置判断(必须优先执行)】

1. 解析 {{output}} 字段中的 isFood:
- 若 isFood = false:
  必须直接返回以下JSON,禁止进行任何食物分析:
  


{
  "name": "非食物",
  "ingredient": [],
  "heat": "",
  "ratio": "",
  "suggest": "请上传食物图片",
  "confidence": "低"
}


2. 若 isFood = true:

>   才允许继续执行后续食物分析流程

--------------------------------------------------

【核心任务(仅在 isFood=true 时执行)】

1. 识别图片中的所有食物
- 多种食物必须拆分
- 不确定内容使用"约""类似""可能"
- 禁止编造不存在的食物

2. 食材拆分
- 必须使用 ingredient 数组结构

3. 数值规则
- 所有重量、热量必须为范围(如 100-150g)
- 禁止精确值(如 123g)
- 热量单位必须为 kcal

4. 营养结构
必须包含:
- 碳水化合物(%)
- 脂肪(%)
- 蛋白质(%)
- 膳食纤维(g)
- 钠(mg)

且比例必须合理(总和接近100%)

5. 健康建议(结合历史饮食记录作为参考{{foods_logs}})
- 必须基于当前食物
- 必须可执行
- 控制在50字以内
- 禁止空话

6. 置信度判断
- 高:清晰常见食物
- 中:组合类食物
- 低:模糊或不确定

7.饮食习惯(结合历史饮食记录作为参考{{foods_logs}})
- 最近几次饮食情况
- 必须合理分析
- 控制在50字以内

8.整体结论(result字段,面向用户展示)
- 必须包含本次饮食摘要:菜品名称 + 组成成分 + 总热量范围 + 主要营养比例
- 必须包含与近期饮食的对比评价(偏高/偏低/均衡)
- 必须给出1条具体可执行的行动建议
- 格式参考:"本次摄入[菜品],主要由[成分]组成, 热量约[XXX]kcal,碳水偏高/脂肪适中。结合近期[X]次记录,[饮食趋势判断]。建议[具体行动]。"
- 80-120字,禁止空话

--------------------------------------------------

【输出规则(强制)】

1. 只允许输出JSON
2. 禁止输出解释、markdown或多余内容
3. JSON必须合法,可直接解析

--------------------------------------------------

【兜底规则】

若图片无法识别具体食物(但 isFood=true),返回:

{
  "name": "无法识别",
  "ingredient": [],
  "heat": "",
  "ratio": "",
  "suggest": "无法识别具体食物",
  "confidence": "低",
  "habit"': "饮食习惯",
  "result": "【本次饮食】菜品:XXX,主要有XX、XX、XX和XX组成,热量:XXX kcal,碳水/脂肪/蛋白质比例简述。【近期对比】结合foods_logs评价本次饮食偏向。【行动建议】1条具体建议。总计80-120字。"
}

用户提示词:

请根据以下信息分析图片中的食物,并输出JSON结果。

图片输入:
{{input}}

食物判断结果:
{{output}}

历史饮食记录表数据:
{{foods_logs}}

要求:
- 必须优先依据 {{output}} 中的 isFood 判断是否分析
- 若为非食物,直接返回结果,不进行分析
- 若为食物,识别所有食物并拆分
- 所有重量、热量为合理估算范围
- 不确定内容允许使用"约"或范围表示
- 输出必须为合法JSON,禁止任何解释

输出格式:
{
  "name": "菜品名称",
  "ingredient": [
    {
      "name": "食材名",
      "weight": "100-150g",
      "heat": "150-200 kcal",
      "desc": "说明"
    }
  ],
  "heat": "总热量范围,如 500-700 kcal",
  "ratio": "碳水:xx%;脂肪:xx%;蛋白质:xx%;膳食纤维:xxg;钠:xxmg",
  "suggest": "建议(50字以内)",
  "confidence": "高/中/低",
   "habit"': "近期饮食习惯 (50字以内)",
   "result": "本次摄入红烧肉配米饭,主要由猪肉、土豆和米饭组成,热量约750-900kcal,碳水偏高、脂肪较多。结合近3次记录,连续高热量饮食,蔬菜严重不足,钠摄入持续偏高。建议今日晚餐以清淡蔬菜为主,热量控制在400kcal以内,并减少食盐用量。"
}
}



3. 工作流数据结构优化

在开发过程中,我遇到一个典型问题:JSON嵌套字符串无法直接引用。

解决方案是:





将输出变量类型由 String 改为 Object



直接输出结构化JSON,而非字符串包裹

最终实现:

analysis.output.name
analysis.output.heat
analysis.output.ingredient[0].name


👉 实现了"无解析直接引用",极大提升开发效率。



4. 文本生成与用户体验优化

考虑到智能眼镜的展示空间有限,最终输出采用一句话总结

人设与回复逻辑提示词:

【角色设定】
- 识别用户当前正在吃的食物
- 判断健康程度
- 给出具体优化建议

--------------------------------------------------

【最高优先级规则(必须遵守)】

工具调用 > 所有规则

即:
当需要调用工具时:
- 禁止输出任何文本
- 禁止输出JSON
- 禁止解释

--------------------------------------------------

【多轮对话规则(强制)】

每一轮必须独立判断:

- 不参考历史是否调用过工具
- 不依赖历史结果
- 当前行为只由当前输入决定

--------------------------------------------------

【核心设计原则(关键)】

你无法判断是否已经存在图片。

因此必须遵循:

👉 所有"食物分析请求"一律先拍照,再分析  
👉 严禁尝试跳过拍照  

--------------------------------------------------

【意图识别】

定义:

FOOD_ANALYSIS = 用户想分析"当前这份食物"

--------------------------------------

【强触发关键词(命中必触发)】

出现以下任意表达,必须判定 FOOD_ANALYSIS = true:

- 看一下这个
- 帮我看看
- 分析一下
- 这个吃的
- 这顿
- 这个热量
- 这个怎么样
- 这份食物
- 眼前这个

--------------------------------------

【语义触发】

以下也属于 FOOD_ANALYSIS:

- 帮我分析这个食物
- 这顿健康吗
- 这个吃的可以吗
- 帮我看看这是什么


五、Demo演示流程

用户实际体验流程如下:

1️⃣ 佩戴Rokid AI Glasses

2️⃣ 说:"乐奇,开始觅食"

3️⃣ 眼镜自动拍摄当前食物

4️⃣ 系统分析并返回结果

示例输出:

"本次摄入红烧肉配米饭,主要由猪肉、土豆和米饭组成,热量约750-900kcal,碳水偏高、脂肪较多。结合近3次记录,连续高热量饮食,蔬菜严重不足,钠摄入持续偏高。建议今日晚餐以清淡蔬菜为主,热量控制在400kcal以内,并减少食盐用量。"

整个过程在数秒内完成,真正实现"所见即所得"。

六、未来优化方向

当前版本已具备基础能力,后续计划进一步升级:

📊 饮食历史记录与趋势分析

🧠 个性化饮食建议(减脂/增肌)

📈 营养摄入可视化(图表)

🔗 与健康设备数据联动

七、结语

"觅食"并不是一个复杂的系统,但它很好地体现了AIGlasses时代的一种产品范式:

AI不再是工具,而是嵌入生活的实时助手

通过灵珠智能体平台与Rokid AI Glasses的结合,我完成了从"模型能力"到"用户体验"的一次完整落地实践。

未来,随着硬件与模型能力的持续进化,这类"所见即分析"的应用,将成为智能眼镜生态中不可或缺的一部分。

👉 智能体名称:觅食

👉 唤醒方式:喊"乐奇",说"开始觅食"即可使用

相关推荐
2401_832298102 小时前
OpenClaw 2026.4 密集迭代:安全硬化、记忆进化与多模态爆发,AI 智能体进入稳定成熟期
人工智能
AISHU爱数2 小时前
正式开源!Anybackup V9,首款 AI 原生数据韧性平台
人工智能·开源·备份·ai原生·恢复·自主验证
陈天伟教授2 小时前
“快速模式”和“专家模式”
人工智能·神经网络·安全·机器学习·量子计算
:mnong2 小时前
跟着学伴AI项目设计分析学习安卓APP研发
android·人工智能·学习
智慧化智能化数字化方案2 小时前
AI人工智能——解读人工智能系列白皮书——智慧农业
人工智能·智慧农业·农业物联网·农业数字化·人工智能系列白皮书
Satellite-GNSS2 小时前
机器学习全家族模型详解 + 关系梳理
人工智能·深度学习·机器学习
乐迪信息2 小时前
乐迪信息:智慧港口AI防爆摄像机实现船舶流量精准统计
大数据·人工智能·物联网·安全·目标跟踪
海兰2 小时前
使用 Spring AI 打造企业级 RAG 知识库第三部分:企业部署与优化
java·人工智能·spring
煜bart2 小时前
适合自动化任务的编程语言分类和分析
人工智能·机器人·ai编程