DSPy 帮助优化 Datasette Agent 的 SQL 提示词
Simon Willison··作者 Simon Willison
关键信息
这项研究聚焦于 Datasette Agent 中执行只读 SQL 查询、以回答数据问题的功能。一个突出的发现是:如果模式列表里只有表名,再加上“如果已有足够信息就不要调用 describe_table”的建议,就会在基线轨迹中导致列名猜测和错误重试循环。
资讯摘要
Simon Willison 表示,一场关于 DSPy 的 AIE 主题演讲让他重新想起一个一直想做的事情:用它来改进 Datasette Agent 的系统提示词。他启动了一个通过 Claude Code for web 执行的异步研究任务,并使用 Claude Fable 5 作为执行助手。任务要求安装最新的 Datasette alpha、datasette-agent 和 DSPy,然后研究如何用 DSPy 来评估并改进该代理用于只读 SQL 查询功能的主提示词。Fable 选择用 GPT 4.1 mini 和 GPT 4.1 nano 进行测试。
研究结果找出了几条看起来有前景的改进方向。Willison 特别强调了其中一个发现:提示词里的模式列表只包含表名,而“如果信息已经足够就不要调用 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
来源与参考
收录于 2026-07-03