2026/2/10 22:43:30
网站建设
项目流程
安徽网站建设网络公司,网站幻灯片效果,药厂网站建设,互联网保险平台好干吗我的外卖数据分析工具构建之旅
每隔几个月#xff0c;我的妻子都会问我同样的问题#xff1a;我们点外卖是不是太频繁了#xff1f;大多数时候#xff0c;我只是耸耸肩。
某平台让翻阅历史订单并重新订购变得很容易#xff0c;但很难回答以下问题#xff1a;
一段时间内的…我的外卖数据分析工具构建之旅每隔几个月我的妻子都会问我同样的问题我们点外卖是不是太频繁了大多数时候我只是耸耸肩。某平台让翻阅历史订单并重新订购变得很容易但很难回答以下问题一段时间内的总支出是多少我的饮食习惯是怎样的饮食均衡吗我最常点的是什么这一次既然手头有AI我没有猜测而是决定构建一些东西。动手构建我编写了一个Chrome扩展程序从某外卖平台的订单页面抓取我的食品订单并使用AI生成“健康洞察”。这让我对AI的使用而非营养事实有了非常有价值的见解。让Copilot搭建项目脚手架我登录了我的代码托管平台账户在创建新仓库时我给出了如下提示“一个Chrome扩展程序可以从某外卖平台和另一个外卖平台抓取订单历史记录提取订单数据餐厅、商品、费用并提供关于支出、饮食习惯、健康评分和最爱菜品的实时分析。”这个提示对我想要扩展程序做什么并不十分清晰。然而在几分钟内我就得到了一个抽象的BaseProvider和两个实现分别针对两个外卖平台。用于存储和分析的独立工具函数。Copilot在项目引导方面确实表现出色它生成了清晰的抽象结构并编写了与实际代码匹配的良好文档。我基本上已经获得了一个可工作的原型至少我当时是这么认为的。修复Bug当我使用Chrome的“加载已解压的扩展程序”选项加载我的扩展代码并打开外卖平台的订单页面时第一个真正的故障出现了。Copilot生成的DOM选择器实际上并不存在。// Copilot生成的内容幻觉constordersdocument.querySelectorAll([data-anchor-idOrderHistoryItem]);这个属性看起来合理但并不真实。当我在订单页面上打开Chrome开发者工具并手动检查DOM时我发现实际的选择器应该是// 外卖平台实际使用的选择器constordersdocument.querySelectorAll([data-anchor-idOrderHistoryOrderItem]);这就是大语言模型最擅长的事情它们会产生幻觉猜测一些看起来正确的东西。代码编译了没有出现明显的失败。不过问题不大我只是更希望代码中能有一个TODO注释之类的东西让我自己来更新这些选择器。旁注我知道这种方法在设计上就很脆弱。对于屏幕抓取总是存在目标网站更改其HTML结构从而导致这些选择器失效的风险。真正的解决方案应该是一个官方的订单导出API但也许出于合理的原因它并不存在。接下来最有指导意义的失败来自分析层。该扩展程序使用一个加权公式计算健康评分健康评分 (菜系多样性 * 0.4) (订单频率得分 * 0.3) (平均订单价值得分 * 0.3)起初这看起来很合理。但后来我用这个例子做了一个简单的计算价值5美元的快餐汉堡每周订购5次健康评分75价值20美元的沙拉每周订购2次健康评分45这个公式奖励了廉价的频率而不是营养质量。这毫无道理。Copilot只是给了分析层一种虚假的智能感。尝试大语言模型为了改进分析我增加了基于大语言模型的洞察。因为这是一个Chrome扩展程序我使用了xenova/transformers库它似乎已成为JavaScript中进行本地推理的事实标准。Chrome开发者平台并不偏好远程代码执行和加载大型模型所以这个方法效果很好。我选择了Xenova/flan-t5-base模型并使用了以下提示词你是一位营养和健康专家正在分析某人的外卖模式。 外卖习惯 - 频率每周X单 - 菜系多样性Y种不同类型的菜系首选Z - 平均支出每次订单A美元 根据这些模式找出2-3个具体的健康问题。请考虑以下因素 - 外出就餐与在家做饭的频率 - 营养平衡与多样性 - 餐厅食品可能导致的钠、卡路里或不健康脂肪过量 - 预算对健康选择的影响 - 菜系类型及其典型的营养构成 将你的问题以编号列表的形式列出。而我得到的“AI摘要”是摘要您有什么正面评价要添加吗每周点单2.9次涉及9种菜系平均每单30.71美元。 ⚠️ 问题非为您准备的食物是一个主要问题。文本生成模型在做它本意要做的事情从文本生成看似合理的文本。它不是在推理营养问题而是在预测词元。没有产生真正的洞察。考虑到我已经有了调用本地Transformers模型的所有代码我想为什么不试试调用某机构的某个模型呢我选择某机构是因为它的一些模型允许免费使用且有不错的速率限制。旧版的某个模型可能拥有最宽松的速率限制所以我选择了它。代码改动很小向v1beta/models/gemini-pro:generateContent发送POST请求。添加一个设置页面来添加某机构的API密钥这样密钥就不会被硬编码。基于本地存储中是否存在某机构的API密钥来做决策逻辑。这是我最终得到的设置页面外观此处应有一个设置页面的描述或截图占位符但原文未提供具体图片相同的提示词不同的模型。某机构的洞察有价值得多此处应有一个洞察结果的描述或截图占位符但原文未提供具体内容经过4个小时的“氛围编码”后我发现自己在过去6个月里在某外卖平台上花费了1800美元。这个数字无需解释下次我会采取不同的做法如果要重来一次我首先要做的是优化提示词使其更具描述性。仅仅一两句话的提示词无法完成任务。我会用类似这样的提示词你是一家顶级科技公司的高级软件工程师。你的工作是构建一个可工作的Chrome扩展程序功能如下 - 抓取某外卖平台的订单页面获取订单和商家列表并存储。 - 使扩展程序具有可扩展性以便将来能适配其他外卖服务提供商。 - 添加一个设置页面用户可以在其中添加他们的某机构API密钥。 - 如果存在API密钥则使用某机构的模型来生成有价值的洞察否则使用本地模型。 注意 - 你不应猜测任何东西。如果你不确定代码的任何方面请添加TODO让我稍后修复。 - 使用最符合营养分析需求的模型。AI洞察应言之有理。注意一个更好的初始提示词对Copilot搭建脚手架会有所帮助但它无法解决试图使用能力较弱的本地模型进行推理任务的根本问题。此外可能先开发一个没有AI摘要的版本再逐步演化为使用大语言模型会更有价值。我的收获经过这次实验我的决策框架如下AI适用于项目脚手架搭建样板代码生成文档编写内容总结AI不适用于领域特定逻辑真实世界验证包含判断的指标计算最后的思考我开始这个项目时期望AI能告诉我一些关于我饮食习惯的深刻见解。但我却学到了关于不同模型的有价值的东西了解了它们在哪里表现出色在哪里会失败。代码编写很容易但洞察生成却需要大量工作。亲自尝试更多精彩内容 请关注我的个人公众号 公众号办公AI智能小助手或者 我的个人博客 https://blog.qife122.com/对网络安全、黑客技术感兴趣的朋友可以关注我的安全公众号网络安全技术点滴分享