https://github.com/Yiling-J/tablepilot
先举一个很简单的例子,如何用 AI 生成 1000 个不重复的菜谱?最简单的方法可能是让 ChatGPT 先生成 10 个菜谱,然后保持上下文继续再生成 10 个,反复进行。但这样首先 context 会消耗大量 tokens ,其次就算有 context ,LLM 在数据量大了之后也很难保证不重复。另一种方法就是我们用一个或多个辅助列来确保生成的多样性,比如有一列[国家],预先从 50 个国家里随机取值,再有一列[大类],在早餐/正餐/甜点/小吃里随机取值。在这种组合下就算没有用已经生成的菜谱作为 context ,生成结果的多样性也会大大增强。而这个方法就是 Tablepilot 的基本思想。
Tablepilot 其实是在我以前独立开发项目的基础上进行大幅重构后开源的,有兴趣可以翻翻我以前的帖子。这是我第一个完整的全栈开源项目,自认为还是挺有趣的,而且似乎没有同类开源项目,如果你确实有类似需求可能会非常有用。主要的特点有这些:
- 同时支持 CLI 模式,API 模式以及 WebUI 模式。由于使用 Go 编写非常方便部署。
- 方便集成各种 LLM ,只要支持 OpenAI API 格式以及 Structured Outputs 就行。比如我基本都用 Gemini Flash 测试。
- 精细化的 context 管理,可以控制列的 context 长度以及引用其他数据源作为 context 。
- 支持使用本地 CSV/Parquet 文件,其他 Tablepilot 表格以及 Kaggle(CSV)/Hugging Face 数据集作为数据源。数据源指的就是例子中的[国家]列这种,意思是你可以从一个国家 csv 文件或数据集里随机取值作为 context 。
Off-topic: 如果你也想做类似的 CLI/API/WebUI 项目,我觉得我这个项目的结构也可以作为参考。Go 在写这样的项目上确实非常方便。
|