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アルファ版、datasette-agent、およびDSPyをインストールし、DSPyを活用してDatasette Agentの主要なシステムプロンプトを評価・改善する方法を探るというものでした。Claude Fable 5モデルがエージェントとして選ばれ、GPT 4.1 miniとnanoを使用してテストが行われました。
研究の過程で、Fableはいくつかの有望な改善方向性を特定しました。特に注目すべき発見は、現在のシステムプロンプトではスキーマ一覧にテーブル名のみが記載されており、「既に情報を持っている場合はdescribe_tableを呼び出さない」というアドバイスが原因で、エージェントがカラム名(page_count、o.order_id、first_nameなど)を推測し、エラーとリトライのループを引き起こしていることです。この問題はクエリの信頼性に深刻な影響を及ぼしていました。
この問題に対して、研究では2つの解決策が提案されています。1つはプロンプトのスキーマ一覧にカラム名を明示的に含めること、もう1つは「describe_tableを呼び出さない」というアドバイスを緩和または削除して、エージェントが不必要な推測を行わないようにすることです。これらの改善により、Datasette AgentのSQLクエリの正確性と全体的なパフォーマンスが大幅に向上することが期待されます。
本研究の核となるのは、DSPyエージェントがDatasette Agentの実際のツール実装とプロンプトを呼び出し、ライブなプロセス内Datasetteインスタンス上でテストを実行し、自動生成されたゴールドスタンダードデータセットとカスタムメトリクスを使用して厳密に評価するテストフレームワークを構築した点です。このプロセスは、本番環境のシステムプロンプト最適化におけるDSPyの有用性を実証するとともに、類似システムの改善に応用可能な方法論を提供しています。
Willison氏は、この研究は初期段階の探索に過ぎず、将来的にはDSPyを適用して複雑なクエリ処理やエラーメッセージの最適化など、さらに多くのプロンプト詳細の改善に取り組む可能性があると述べています。また、コミュニティがさらなる実験や議論に参加することを奨励しています。