This package is abandoned and no longer maintained. No replacement package was suggested.

Use natural language and AI to query your database from Laravel

1.0.0 2023-02-21 12:39 UTC

This package is auto-updated.

Last update: 2024-03-14 08:57:36 UTC


Latest Version on Packagist GitHub Tests Action Status GitHub Code Style Action Status Total Downloads


This package is meant to be a learning resource for prompt engineering and how to achieve AI-generated query generation with PHP/Laravel. You should probably not use this in production

Ask DB allows you to use OpenAI's GPT-3 to build natural language database queries.

DB::ask('How many users do we have on the "pro" plan?');


You can install the package via composer:

composer require beyondcode/laravel-ask-database

You can publish the config file with:

php artisan vendor:publish --tag="ask-database-config"

This is the contents of the published config file:

return [
     * The database connection name to use. Depending on your
     * use case, you might want to limit the database user
     * to have read-only access to the database.
    'connection' => env('ASK_DATABASE_DB_CONNECTION', 'mysql'),

     * Strict mode will throw an exception when the query
     * would perform a write/alter operation on the database.
     * If you want to allow write operations - or if you are using a read-only
     * database user - you may disable strict mode.
    'strict_mode' => env('ASK_DATABASE_STRICT_MODE', true),

     * The maximum number of tables to use before performing an additional
     * table name lookup call to OpenAI.
     * If you have a lot of database tables and columns, they might not fit
     * into a single request to OpenAI. In that case, we will perform a
     * lookup call to OpenAI to get the matching table names for the
     * provided question.
    'max_tables_before_performing_lookup' => env('ASK_DATABASE_MAXIMUM_TABLES', 15),


First, you need to configure your OpenAI API key in your .env file:


Then, you can use the DB::ask() method to ask the database:

$response = DB::ask('How many users are there?');


composer test


Please see CHANGELOG for more information on what has changed recently.


Please see CONTRIBUTING for details.



The MIT License (MIT). Please see License File for more information.