使用DSPy评估和改进Datasette Agent的SQL系统提示
Simon Willison利用DSPy框架系统评估并优化Datasette Agent的只读SQL问答系统提示。通过DSPy代理调用实际工具在实时Datasette实例上测试,并使用自动生成的金标准数据集进行严格评估,发现当前提示仅列出表名导致代理猜测列名并产生错误循环,建议在提示中包含列名或软化避免猜测的指令。
Simon Willison在其个人博客上发布了一项研究成果,展示如何使用DSPy框架来评估和改进Datasette Agent的SQL系统提示。Datasette Agent是一个能够执行只读SQL查询以回答用户关于数据问题的工具,其核心系统提示的质量直接影响查询的准确性和效率。
受到AIE大会主题演讲中关于DSPy内容的启发,Willison决定通过Claude Code启动一项异步研究任务。他要求安装最新的Datasette alpha版本、datasette-agent以及DSPy,并探索如何利用DSPy来优化Datasette Agent的主要系统提示。Claude Fable 5模型被选为代理工具,并使用GPT 4.1 mini和nano进行测试。
研究过程中,Fable识别出几个有前景的改进方向。其中最引人注目的发现是:当前的系统提示在架构列表中仅提供了表名,并包含了“如果已经拥有信息则不要调用describe_table”的建议。这一设计导致代理在基线条目中经常猜测列名(例如page_count、o.order_id、first_name),从而引发错误和重试循环,严重影响了查询的可靠性。
针对这一问题,研究提出了两种解决方案:一是在提示的架构列表中明确包含列名,二是软化或移除“不要调用describe_table”的建议,以避免代理进行不必要的猜测。这些改进有望显著提升Datasette Agent的SQL查询准确性和整体性能。
该方法的核心在于建立了一个测试框架,其中DSPy代理调用Datasette Agent的实际工具实现和提示,在实时的进程内Datasette实例上运行,并使用自动生成的金标准数据集通过自定义指标进行严格评估。这一过程不仅验证了DSPy在生产系统提示优化中的实用性,也为类似系统的改进提供了可借鉴的方法论。
Willison表示,这项研究只是初步探索,未来还可能应用DSPy对更多提示细节进行优化,例如处理复杂查询、优化错误提示等。他鼓励社区参与进一步的实验和讨论。