Moving from theory to a tangible, working system that turns AI mistakes into high-quality training data. 在该 ,我们谈到了人工智能开发的混乱中间,这是一个令人沮丧的差距,一个有前途的85%原型和一个生产准备的99%的系统之间。 本系列的第一部分 今天,我们将把手弄脏,构建一个简单的,工作Web应用程序,展示数据飞轮的核心循环. 到本文结束时,您将纠正人工智能的错误,并从您的工作中生成一个完美的,精心调节的数据集。 我们将使用的 例如我们的开源框架, 这个例子是自定义的,不需要像Docker或Redis这样的外部服务,并证明核心模式有多强大。 correction_deck_quickstart 基金会 基金会 剧情:一个缺陷的发票AI 想象一下,我们已经构建了人工智能来从发票中提取结构化数据,我们给它提供一个发票的图像,我们希望它返回一个干净的JSON对象。 { "supplier_name": "Lone Star Provisins Inc.", // <-- TYPO! "invoice_number": "785670", "invoice_date": "2025-08-20", "inventory_items": [ { "item_name": "TAVERN HAM WH", "total_quantity": 15.82, "total_unit": "LB", "total_cost": 87.80 }, { "item_name": "ONIONS YELLOW JBO", "total_quantity": 5, // <-- WRONG QUANTITY! Should be 50. "total_unit": "LB", "total_cost": 35.50 } ] } 我们的目标是建立一个允许人类轻松修复这两个错误的系统,至关重要的是,捕捉这些修复来重新训练。 我们的飞轮的三个核心组件 为了构建这一点,我们的 Foundry 框架依赖于三个简单但强大的 Python 抽象: 工作:把这当成跟踪系统中的票据,这是一个数据库模型,代表了AI的单个工作单位,它包含 input_data(发票图像), initial_ai_output(上面有缺陷的JSON),以及在人类修复后存储 corrected_output的地方。 CorrectionRecord: 这是黄金门票. 当一个人保存他们的纠正时,我们不只是更新工作. 我们创建了一个单独的,自我包含的 CorrectionRecord. 这个记录是为精细调节而建造的。 CorrectionHandler: 这是业务逻辑. 这是一个简单的类,组织过程:它从 Web UI 提交的表单数据,验证它,更新工作,创建 CorrectionRecord,并处理将所有记录导出到培训文件。 这三件工作一起形成我们飞轮的脊椎,现在,让我们看看它们在行动中。 让我们构建它:行动中的快速启动 如果你正在跟随,克隆 ,导航到 管理器,并安装依赖性。 库存 库存 examples/correction_deck_quickstart 步骤1:运行快速启动脚本 从您的终端,简单地运行: python quickstart.py 您将看到一个消息,即本地 Web 服务器已启动 . http://localhost:8000 --- Foundry Quickstart Server running at http://localhost:8000 --- --- Open the URL in your browser to use the Correction Deck. --- --- Press Ctrl+C to stop the server and complete the flywheel. --- 步骤2:使用修复板的用户界面 打开该URL在您的浏览器中. 你会看到一个简单的修复面板的用户界面. 左边是来源的发票图像. 右边是一个预先填写的网页表格与AI的缺陷数据。 你的任务是成为循环中的人类,做这两项纠正: 修复类型:将 Lone Star Provisins Inc. 更改为 Lone Star Provisions Inc. 修复数量: 将 ONIONS YELLOW JBO 的数量从 5 更改到 50。 点击 Save Correction. 步骤三:完成飞行轮 现在,回到您的终端,并通过按 . 脚本自动触发飞轮的最后一步:导出你的工作. 你会看到这个输出: Ctrl+C --- Server stopped. --- --- Exporting approved corrections to fine-tuning format... --- --- Data successfully exported to 'corrected_data.jsonl' --- --- QUICKSTART COMPLETE --- 你刚刚完成了数据飞轮的一个完整旋转。 薪酬:完美的培训文件 打开它 你会发现一个新的文件: 这是奖项,这是你工作的实实在在结果,被捕获和格式化完美,以精细调整现代AI模型。 examples/correction_deck_quickstart corrected_data.jsonl 让我们看看内部,它包含一个结构化的 JSON 行: {"contents": [{"role": "user", "parts": [{"fileData": {"mimeType": "image/jpeg", "fileUri": "/static/example_invoice.jpeg"}}, {"text": "Extract the key business data from the provided input."}]}, {"role": "model", "parts": [{"text": "{\"supplier_name\": \"Lone Star Provisions Inc.\", \"invoice_number\": \"785670\", \"invoice_date\": \"2025-08-20\", \"inventory_items\": [{\"item_name\": \"TAVERN HAM WH\", \"total_quantity\": 15.82, \"total_unit\": \"LB\", \"total_cost\": 87.8}, {\"item_name\": \"ONIONS YELLOW JBO\", \"total_quantity\": 50.0, \"total_unit\": \"LB\", \"total_cost\": 35.5}]}"}]}]}``` 这可能看起来很复杂,但这正是像谷歌的Gemino和OpenAI的GPT系列这样的模型期待的精确调节格式。 “角色”: “用户”:这是提示,它包含了输入图像(fileUri)和我们给AI的指示。 “角色”: “模型”:这是完美的答案. 它包含了 JSON 字符串,并应用了您的纠正。 我们已经成功地将几秒钟的人类努力转化为高质量的机器可读的培训示例,现在想象一下,这样做为100个修正,或者1000个,你不再只是修复错误,你正在积极有效地构建一个数据集,在下一代模型中消除整个错误类别。 什么是下一步? 我们已经证明了飞轮的核心循环: Correct -> Capture -> Format for Training. 这是一个强大的开始,但它是一个离线的过程,我们等待人工智能完成其批量,然后我们纠正了它的工作,但如果我们可以更互动的话呢?如果一个管道可以运行,遇到一些它不理解的东西,并智能地暂停自己以实时请求人类帮助呢? 在本系列的下一篇文章中,我们将建立一个有弹性的,人力循环管道,它知道什么时候有麻烦,不害怕要求澄清。