由于我对它能走多远感到非常惊异,我决定写下我的经历,并检讨“无代码人工智能编程”能走多远的极限以及实际的局限性。
这篇文章(实际上是这个系列)将描述这段旅程。

NSDT工具推举: Three.js AI纹理开拓包 - YOLO合成数据天生器 - GLTF/GLB在线编辑 - 3D模型格式在线转换 - 可编程3D场景编辑器 - REVIT导出3D模型插件 - 3D模型语义搜索引擎 - AI模型在线查看 - Three.js虚拟轴心开拓包 - 3D模型在线减面 - STL模型在线切割

1、简介

我酝酿这个想法已经很多年了——一个只需拍照就能推举书本的运用程序。
正如所说,我常日忙于客户项目。
但在最新AI工具的帮助下,我决定试一试。
事情并不总是一帆风顺的——打算机视觉和文本识别给我带来了一些意外。
但令我惊异的是,我设法以比我预期快得多的速率得到了一个好的原型。
纵然在你不是专家的领域,人工智能也能帮助将想法变成现实,这真是太神奇了。
这段旅程既令人谦卑又令人愉快,我迫不及待地想看看它会带来什么。

宣扬语如下:“想象一下,你走进一家书店,你真的想买一本书,但买哪一本呢?此外,可能还有一张打折的桌子,周围散落着许多书,等着你选择一本或多本,但同样,选哪一本呢?我希望有一个运用程序可以办理这个问题,而不是无助地四处探求。
进入 Book Shazam:拍一张这个场景的照片,然后得到书本的个性化评分。

用AI编程的实践记录基于计算机视觉的图书推荐App开拓

那么为什么是现在呢?在我们公司 Shibumi AI,我们已经利用 LLM 很长一段韶光了,大约从 2021 年 API 发布开始。
我们还利用 Copilot 完成各种编程任务。
当然,我们利用 Web UI 本身来编写文本、总结文本等等。
偶尔,我们会考试测验在 Web 运用程序中编写代码(无论是 ChatGPT 还是 Claude)。

直到最近,结果都不是特殊令人印象深刻。
但最近,特殊是自 Claude Sonnet 3.5 发布以来,我们觉得到可以利用此工具创建真正的软件项目,只管很大略。
我们到处考试测验(也看到其他人这样做)浏览器扩展、大略的运用程序等。
因此,我决定是时候站出来构建一个轻微繁芜一点的产品了。
这一系列帖子记录了这个过程。

此外,最近一贯在谈论非开拓职员是否以及何时能够利用 AI 创建成熟的运用程序或产品。
在这个项目期间,我牢记这个谈论并考试测验:

不要触碰代码,或者至少尽可能少地触碰特殊把稳那些对我这个技能职员来说可能很随意马虎,但对非开拓职员来说却有点寻衅性乃至非常具有寻衅性的任务。
2、方案项目

总体而言,这不是一个超级难的项目,但它有寻衅性。
此外,作为一名数据科学家,我更善于 Python 和 ML 模型,而 JavaScript 和 UX 则较弱。
但 LLM,尤其是 Claude,让我觉得范围缩小了。
以是让我们开始吧。

首先,让我们轻微分解一下产品——我们须要构建:

用户界面打算机视觉(检测和 OCR)系统推举引擎

显然,履行前辈而酷炫的办理方案(例如尖真个推举器和 OCR)很诱人,但我们将采取大略的产品方法。

任何新手产品经理都会为你画出类似这样的图:

这个草图常日意味着从开拓的早期阶段开始,你就该当有一个可行的办理方案。
换句话说,你不应该在终极的 1.0 版本准备好并发布之前对其进行开拓,由于在全体期间你不会得到任何用户反馈。
你该当做的是从一个丑陋的大略事情办理方案和 MVP(最小可行产品)开始,并在每个阶段根据用户反馈逐步改进它。
我们将采取这种方法。

因此,我们将这样完成我们的任务:

打算机视觉系统:具有大略的用户界面,这将是运用程序的支柱。
我们希望具有上传图像、检测书本、识别其名称(OCR — 光学字符识别)和单击它们的功能。
我们将让 Claude 处理所有事情。

推举引擎:目前最大略的推举引擎便是“讯问 LLM”。
我们须要处理冷启动问题(没有新用户的数据),因此我们可以大略地哀求用户输入他们最近阅读并喜好的几本书(我知道这很基本)。
我们将不才一篇文章中处理这个问题

UX:在拥有一个“可运行”的系统后,我们将优化用户体验:

使设计看起来更都雅、更当代使流程更友好、更流畅。

更多功能:

为了使这个运用程序更具功能性,我们将添加一个登录系统,让用户可以多次利用该运用程序。
终极,我们将把运用程序支配到云端,让用户可以访问它。
超出本系列的范围,我们可以为运用程序添加更多功能,例如对不在图像中的书本进行评级等等。
3、流程—书本检测

让我们首先谈论利用 LLM 进行开拓的一样平常方法:如前所述,Claude 的能力将我们带到了 LLM 开拓的 0.2 版。
0.1 版本是 GPT4(和 4o),它紧张返回有时有效的代码,并且每个任务都须要进行几次迭代。

在 Claude 中,情形会好一些:代码版本会作为工件保存,你可以管理一种对话(有时包括编辑模型以进行缺点的转变)。

Claude 还包括“预览”功能,许可在编辑器本身中运行大略的脚本。
这彷佛是一个小功能,但在我看来,对付非开拓职员来说至关主要。
我们不会在本演习训练中利用它。

当你哀求 Claude 编写代码时,该当:

非常详细。
清楚地写出所有必需的功能。
不要写得太长。

以是我哀求以下内容:

请把稳,这是利用 LLM 实行编程任务的良好做法:

如果模型在某个部分严重失落败,您可以利用干系部分的“强化”编辑要求(如您在“确保”中看到的 - 根据我在打算机视觉任务中的履历,模型常常变得

Claude 有一个俊秀的用户界面,左侧是文本,右侧是代码(“工件”)。
它以 Python、HTML 和 Javascript 格式返回输出,但将代码存储在一个文件中,并在注释中指出 — 我该当手动将它们分开 — .py 和 .HTML。

此外,Claude 还为代码添加了清晰的解释和解释,这可能对利用代码和更好地理解代码都非常有帮助。
如果你想边构建边学习,这是一个非常有用的工具。

将文件放到位后,我按照 Claude 的解释运行了 python app.py,得到了以下结果运用:

运用的第一个打开屏幕

非常丑陋,但现在我们正在考试测验让它事情,设计将在稍后完成。

文件上传和图书检测事情正常 - 除 2 本外,所有图书均能被检测到。
但有一个缺点 - 单击一本书不会实行任何操作。

检测结果

由于我们正在与 Claude 交谈,我可以简要地记录下故障,Claude 将考试测验修复该缺点:

Claude 重写了 HTML 代码,现在它可以事情了,请拜会下面的“获取信息”弹出窗口。

现在剩下的便是在弹出窗口中添补内容——稍后再添加书名和评分。
我会让 Claude 插入一个 OCR 组件:

Claude 选择利用 Tesseract — 带有 Python 包的最通用 OCR 工具。
它不是最好的工具,但它是最新的并且随着韶光的推移不断改进,以是我们来试一试:

显然,如上所示,Tesseract 不起浸染。
在大多数书中,它都找不到任何东西,在一些书中它检测到一些乱码,只有在一本书中它检测到文本(不是最清晰的文本),这让我认为它涌现了某种故障。

以是让我们再给它一两次机会。

于是Claude对代码做了一些改进,但是效果仍旧不太好。

我认为我们可以进一步改进 Tesseract,而且对付所谓的“野外文本”有更好的包装,但是我们目前想要快速行动,以是有时给 Claude 指明精确的方向是件好事:让我们利用非常好的 Google vision API。

Claude 屈服命令,用 Google Vision 更换了 Tesseract 代码,剩下的便是从 Google 繁芜的界面获取做事帐户密钥。
这项任务对付非开拓职员来说可能有点困难,但 Claude 会在这里供应解释。
将统统准备就绪后,OCR 就可以正常事情了:

这并不难,而且让我们完成了项目的主要部分,让我们庆祝一下吧!

4、剖析

但是,等等,让我们想一想。
我们渴望连续提高并完成 MVP。
但是,既然运用程序的这么主要部分已经准备就绪,让我们(在庆祝的同时)思考一下实际将其产品化还短缺什么(除了我们之前谈论过的推举器和用户体验)

打算机视觉优化架构和支配4.1 打算机视觉

我们这里有两个任务:

检测OCR

我们以一种黑客的办法用一张图片推进,并见证了以下结果(见上面的检测结果图片):

检测到 17 本书(真阳性)2 本书未检测到(假阴性)2 个假阳性

未检测到的书本该当得到处理。
让我们看看 Claude 做了什么。

查看代码,Claude 为我们选择了经典的 Yolo5 模型,该模型在 COCO 数据集上进行了预演习,并“突出显示”了书本种别,幸运的是,该种别包含在数据集中。

但是,它也选择了“S”模型,这意味着模型很小。

我们可以:

用更大的模型更换模型(不用想)用 Yolo v8(一种具有更高准确度的较新模型)更换模型用专门针对书本进行演习的模型更换模型(须要输入一些详细的结果表)自己微调模型(须要我们撸起袖子)

从快速实验来看,将 Yolo-small 变动为 Yolo-medium 确实可以改进结果。

为了真正得到详尽的结果,我们须要网络更多图像作为测试集。
假设约 100 张,在不同设置和光照条件下 - 但这超出了本文的范围。

这种打算机视觉优化是 Shibumi 的专长之一。

4.2 架构和支配

此运用程序目前仅在我的机器上运行。
为了利用户可以利用它,我们须要做一些根本事情:

利用更好的做事功能包装运用程序(例如 gunicorn、docker)优化做事韶光和流程:目前,代码彷佛为每个 API 调用实例化模型,这不是最空想的。
我们须要优化此流程以使我们能够为多个用户供应做事

这些项目和其他项目对付将此类运用程序从 MVP 阶段转变为完全事情的运用程序至关主要,这也是我们在 Shibumi 中紧张做的事情。
我们将在稍后阶段处理它。

5、结束语

正如所说,我们彷佛处于“利用 LLM 编程”的 0.2 阶段。
我们正在探索其功能和局限性。

紧张限定之一是编程中的一些小而烦人的事情——在代码中插入一些密钥(正如我们在 Google API 的做事帐户 jey 中看到的那样)、设置做事器和修复一个小缺点。

作为开拓职员,办理这些问题是我们事情的一部分。
但对付非开拓职员来说,这些可能是严重的阻碍。
在 0.3 版或更高版本中,有多少这样的事情会消逝?有多少将通过外部工具(例如 Replit 或 Cursor)办理?很难知道。
但我们专注于我们现在拥有的东西。

现在就这些。
不才一部分中,我们将添加推举系统。

原文链接:用AI编程的实践记录 - BimAnt