使用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對更多提示細節進行最佳化,例如處理複雜查詢、最佳化錯誤提示等。他鼓勵社群參與進一步的實驗和討論。