DSPy改进Datasette Agent的SQL提示词

Simon Willison··作者 Simon Willison

关键信息

一个特别值得注意的发现是,Datasette Agent 的模式列表只显示了表名,而“如果已经有信息就不要调用 describe_table”的提示似乎会促使模型猜测列名并进入重试循环。建议的修复方案是,要么在模式列表中加入列名,要么放宽这条指令。

资讯摘要

Simon Willison 撰写了一篇关于研究实验的文章,重点是改进 Datasette Agent 所使用的系统提示词。这个想法源于一场介绍 DSPy 的 AIE 主题演讲,它让他想起自己一直想测试这个框架是否能帮助提升提示词质量。他随后在 Claude Code for web 中发起了一个异步研究任务,并使用 Claude Fable 5,让它先安装最新的 Datasette alpha、datasette-agent 和 dspy,再研究如何评估并改进这些提示词。此次研究针对的是 Datasette Agent 通过执行只读 SQL 查询来回答数据问题的功能。

Fable 选择用 GPT-4.1 mini 和 nano 来进行测试。研究结果给出了一些看起来有前景的改进方向,但最有意思的观察集中在模式信息的处理上。由于模式列表只包含表名,而提示词又建议“如果已经有信息就不要调用 describe_table”,模型在基线轨迹中似乎开始猜测列名,比如 page_count、o.order_id 和 first_name,并因此进入错误后的重试循环。文章提出的改进建议是,要么在模式列表中直接加入列名,要么放宽这条指令,避免模型对缺失的结构信息做出过度假设。

资讯正文

研究:使用 DSPy 评估并改进 Datasette Agent 的 SQL 系统提示词

今早 AIE 的一场主题演讲提到了 <a href="https://github.com/stanfordnlp/dspy">dspy</a>,这让我想起我一直打算看看它是否能帮助我改进 <a href="https://agent.datasette.io">Datasette Agent</a> 所使用的系统提示词——于是我用 Claude Fable 5 在 Claude Code for web 里发起了一项异步研究任务:

<blockquote>

<p><code>安装最新的 Datasette alpha、datasette-agent 和 dspy - 然后弄清楚如何使用 dspy 来评估并改进 Datasette Agent 所使用的主要系统提示词,尤其是它能够执行只读 SQL 查询来回答用户关于数据的问题这一功能。</code></p>

</blockquote>

Fable 选择用 GPT 4.1 mini 和 nano 进行测试,并找出了一些看起来很有希望的改进方向。我尤其喜欢这一条:

<blockquote>

<p>Schema 列表只给出了表名;“如果你已经有了这些信息,就不要调用 describe_table” 这条建议导致基线轨迹中出现了列名猜测(page_count、o.order_id、first_name)以及错误重试循环。要么在提示词的 schema 列表中包含列名,要么放宽这条建议。</p>

</blockquote>

标签:ai、datasette、generative-ai、llms、evals、dspy、datasette-agent、claude-mythos

来源与参考

  1. 原始链接
  2. Research: Using DSPy to evaluate and improve Datasette Agent's SQL system prompts