Skip to content

搞英语 → 看世界

翻译英文优质信息和名人推特

Menu
  • 首页
  • 作者列表
  • 独立博客
  • 专业媒体
  • 名人推特
  • 邮件列表
  • 关于本站
Menu

我的第一个开源 AI 生成库

Posted on 2025-06-22

头像-小.jpg

我目前正在评估不同模型在生成 XML 和 JSON 时的表现。不出所料,XML 的表现相当不错——除了一个问题:这些模型经常返回无效的 XML。这使得很难正确评估内容本身的质量,无论模型的序列化数据质量如何。所以我需要一个粗糙的 XML 解析器。

我尝试过各种方法(比如 html5lib、html lxml 解析器等等)来修复我的 XML 解析问题,但都失败了,每次都引发各种有趣的问题。之后,我让 Claude 发挥我的想象力,从头开始为我编写一个合适的 XML 库。我给了它一些关于库应该是什么样子的基本说明,它一下子就搞定了。之后,我又提示它大约 20 次,让它做一些小的修复,作为对我(简要地)检查、使用以及创建全面测试套件的回应。

与此同时,我创建了一个徽标。之后,我快速用 Illustrator 将其转换为 SVG,并让 Claude 使其能够感知主题的暗色和亮色模式,结果完美地实现了。

除此之外,Claude 还完全设置了 CI,甚至远程控制我的浏览器来为我配置该包的可信 PyPI 发布者。

总而言之,AI 所做的如下:

  • 它为解析器编写了约 1100 行代码
  • 它编写了约 1000 行测试
  • 它配置了整个 Python 包、CI、PyPI 发布
  • 生成了 README 文件,起草了变更日志,设计了徽标,并使其具有主题感知能力
  • 进行了多次重构,让我更加快乐

启动这一切的初始提示(包括拼写错误):

我希望你实现一个单文件库,用于对 XML 进行简单的解析。它应该实现两个功能:

  • stream_parse为 XML 流生成事件流(使用命名元组)
  • tree_parse接收 stream_parse 的输出并组装元素树。默认使用 xml.etree.ElementTree,也可以选择提供 lxml(或其他格式)

它应该很快,但使用预编译的正则表达式来解析流。这里的想法是,输出来自那些假装使用 XML 格式,但对不良输出缺乏足够保护的系统(例如:LLM)。

因此,例如 & 应该转换为 &,但如果使用了 &x(这是无效的),则它在输出中应该保留为 &x。此外,如果某个内容是无效的 CDATA 部分,我们会优雅地忽略它。如果标签在较大的标签内错误地关闭,我们会恢复其结构。例如,当 </foo> 出现时,<foo><p>a<p>b</foo> 会直接关闭内部结构。

使用超思维。将实施过程分解为

  1. 规划
  2. API 存根
  3. 执行

使用子任务和子代理来保存上下文

现在,如果你看一下这个库,你可能不会觉得它有多漂亮。它可能有点乱,可能还有一些我还没发现的bug。不过,它对我来说现在运行得很好,足以应付我正在做的事情,而且它确实帮我解决了一些问题。我总共花了大约30-45分钟来编写初始实现,当时我正在做其他事情。我不断提示它一段时间,以便在使用它时取得一些进展。

如果你想看看它是什么样子的:

  • GitHub 上的 mitsuhiko/sloppy-xml-py 。
  • PyPI 上的 sloppy-xml 。

需要明确的是:这并不是对在严肃的开源库中使用模型的认可。这只是一个实验,看看我能用最少的手动工作量取得多大的进展,并摆脱一个恼人的阻碍。结果对于我目前的用例来说已经足够好了,而且我觉得发布到 PyPI 上也不错,以防其他人遇到同样的问题。

把它当作一个有趣的副项目,它更多地说明了今天可能发生的事,而不是必然的建议。


附言:是的,我确实给它加了 Apache 2 许可证。在几乎没有人参与的情况下,这是否有效?这是一个有趣的问题,但我迫不及待地想自己弄清楚。然而,这肯定是我们迟早都要面对的问题。

原文: http://lucumr.pocoo.org/2025/6/21/my-first-ai-library

本站文章系自动翻译,站长会周期检查,如果有不当内容,请点此留言,非常感谢。
  • Abhinav
  • Abigail Pain
  • Adam Fortuna
  • Alberto Gallego
  • Alex Wlchan
  • Answer.AI
  • Arne Bahlo
  • Ben Carlson
  • Ben Kuhn
  • Bert Hubert
  • Bits about Money
  • Brian Krebs
  • ByteByteGo
  • Chip Huyen
  • Chips and Cheese
  • Christopher Butler
  • Colin Percival
  • Cool Infographics
  • Dan Sinker
  • David Walsh
  • Dmitry Dolzhenko
  • Dustin Curtis
  • eighty twenty
  • Elad Gil
  • Ellie Huxtable
  • Ethan Marcotte
  • Exponential View
  • FAIL Blog
  • Founder Weekly
  • Geoffrey Huntley
  • Geoffrey Litt
  • Greg Mankiw
  • Henrique Dias
  • Hypercritical
  • IEEE Spectrum
  • Investment Talk
  • Jaz
  • Jeff Geerling
  • Jonas Hietala
  • Josh Comeau
  • Lenny Rachitsky
  • Liz Danzico
  • Lou Plummer
  • Luke Wroblewski
  • Matt Baer
  • Matt Stoller
  • Matthias Endler
  • Mert Bulan
  • Mostly metrics
  • News Letter
  • NextDraft
  • Non_Interactive
  • Not Boring
  • One Useful Thing
  • Phil Eaton
  • Product Market Fit
  • Readwise
  • ReedyBear
  • Robert Heaton
  • Rohit Patel
  • Ruben Schade
  • Sage Economics
  • Sam Altman
  • Sam Rose
  • selfh.st
  • Shtetl-Optimized
  • Simon schreibt
  • Slashdot
  • Small Good Things
  • Taylor Troesh
  • Telegram Blog
  • The Macro Compass
  • The Pomp Letter
  • thesephist
  • Thinking Deep & Wide
  • Tim Kellogg
  • Understanding AI
  • 英文媒体
  • 英文推特
  • 英文独立博客
©2025 搞英语 → 看世界 | Design: Newspaperly WordPress Theme