原贴链接

我所说的“提示模板”不仅仅是指特定指令模型的格式。我感兴趣的是你如何生成提示。

我所知道的方法:

  • 直接使用格式化字符串。毕竟,Python有方便的字符串格式化代码。缺点是它只进行字符串替换。
  • 自定义提示脚本格式。过去,我写过一个脚本解析器,它接受文本或json文件,替换变量并进行一些循环逻辑等。缺点是我必须自己实现所有功能,表达循环或分支开始变得复杂。
  • LangChain有提示模板。缺点:上次我尝试时,LangChain让我感到很困难;太多的抽象概念妨碍了使用。
  • DSPy通过Signature和Module类指定模板的方式非常优雅;特别是Module可以包含任意逻辑并在内部嵌套其他模块,形成一些优雅的结构。可以使用AI优化提示。缺点是它对提示的确切格式有些固执己见(我可以从外部调整,但在那时有点不合常规)。
  • txtai:除了非常好的嵌入功能外,还包括对提示的相当直接的访问。文档中有大量的示例。缺点:需要在他们的管道抽象中工作;我还没有使用足够长的时间来判断提示管理是否足够有用。

其他我考虑过但没有使用的方法:Burr、Haystack、Pezzo、OpenPrompt、Agenta、LangFuse、LangTail、magnetic,或者直接使用Jinja2模板。

其中一些是针对大型团队管理提示的;我个人对更小、更模块化的解决方案感兴趣,以便快速原型设计,但可能会有一些交叉。我追求的是有一些定制目标的提示,而不是一大堆。

我个人最重要的提示管理优先级是能够看到提示何时偏离轨道。我不想通过痛苦地梳理堆栈跟踪或逐步查看代码来调试失败的RAG查找。解决方案的一部分是遥测和可观察性,假设你有一个可以跟踪提示组装而不仅仅是推理请求的遥测库。但很大一部分只是在一个地方将所有数据组装成提示,而不是分散在各处。

你是如何创建提示的?全部手写?使用库?

讨论总结

本次讨论围绕“管理提示模板”的主题展开,用户们分享了各自的方法和工具,如自定义脚本、JSON文件、TOML文件、Go语言、burr和jinja等。讨论中强调了模块化、高效性和调试的重要性,特别是如何有效地管理和优化提示模板,以适应不同的应用场景和需求。

主要观点

  1. 👍 使用自定义的脚本解析器管理提示模板
    • 支持理由:通过JSON文件和递归文件夹结构组织模板,运行时合并目录树以获取更具体的设置。
    • 反对声音:目前没有需要在模板中加入复杂逻辑的需求。
  2. 🔥 使用Go语言和text/template格式管理提示模板
    • 正方观点:将提示模板分解成多个部分,以键值对的形式存储,适用于大量且部分共享内容的提示模板。
    • 反方观点:存储方式可以是文件,也可以是数据库。
  3. 💡 使用Word loom管理TOML文件
    • 这种方法是mlx-tuning-fork中声明式prompt构建的基础,有助于高效和有序的管理。

金句与有趣评论

  1. “😂 mrjackspade:I use a variation of this… I keep all of my templates in a recursive folder structure and then JSON merge up the directory tree at runtime…”
    • 亮点:展示了如何通过递归文件夹结构和JSON合并来高效管理模板。
  2. “🤔 smahs9:For Python I used file storage in jinja format. But something I am currently doing where there are a lot of prompts and many of them share some parts, I have decomposed the prompts into sections that are then stored as sorted kv pairs in a file (but can as well be stored in a db).”
    • 亮点:介绍了如何通过分解提示模板并存储为键值对来管理大量共享内容的模板。
  3. “👀 ProfitRepulsive2545:For building and running complex prompts that have multiple dynamic inputs, I am using burr + jinja: burr as the state machine and jinja for the substitutions.”
    • 亮点:强调了burr作为状态机和jinja进行替换的组合,提供了高效和无偏见的解决方案。

情感分析

讨论的总体情感倾向是积极的,用户们分享了各自的有效方法和工具,强调了模块化、高效性和调试的重要性。主要分歧点在于不同工具和方法的适用场景和优缺点,但整体上大家对如何更好地管理提示模板持有建设性的态度。

趋势与预测

  • 新兴话题:可能会有更多关于如何结合不同工具和方法,以及如何进一步优化提示模板管理的讨论。
  • 潜在影响:这些讨论可能会推动相关工具和方法的改进,以及在实际应用中的更广泛采用。