https://github.com/farzai/viola-php
Manage your database with ChatGPT
https://github.com/farzai/viola-php
chatgpt databases openai viola
Last synced: 5 days ago
JSON representation
Manage your database with ChatGPT
- Host: GitHub
- URL: https://github.com/farzai/viola-php
- Owner: farzai
- License: mit
- Created: 2023-05-27T08:15:37.000Z (over 2 years ago)
- Default Branch: main
- Last Pushed: 2024-07-08T14:57:53.000Z (over 1 year ago)
- Last Synced: 2024-10-30T04:54:44.463Z (about 1 year ago)
- Topics: chatgpt, databases, openai, viola
- Language: PHP
- Homepage:
- Size: 486 KB
- Stars: 3
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- Funding: .github/FUNDING.yml
- License: LICENSE.md
Awesome Lists containing this project
README
# Viola PHP

[](https://packagist.org/packages/farzai/viola)
[](https://github.com/farzai/viola-php/actions/workflows/run-tests.yml)
[](https://packagist.org/packages/farzai/viola)
Viola is a PHP package that allows you to ask questions to ChatGPT and get the answer with your own data.
## Requirements
- PHP >= 8.0
- OpenAI Key
## Supported Databases
Currently, Viola supports the following databases:
| Database | Supported |
|----------|-----------|
| MySQL | ✅ |
| PostgreSQL | ✅ |
| SQL Server | ✅ |
| SQLite | ❌ |
| MongoDB | ❌ |
Wait for it!
I will add support for other databases in the future.
## Installation
You can install the package globally via composer:
```bash
$ composer global require farzai/viola
```
Make sure to place Composer's system-wide vendor bin directory in your $PATH so the viola executable can be located by your system.
This directory exists in different locations based on your operating system;
however, some common locations include:
For macOS
```
$HOME/.composer/vendor/bin
```
For GNU / Linux Distributions
```
GNU / Linux Distributions: $HOME/.config/composer/vendor/bin
```
For Windows
```
%USERPROFILE%\AppData\Roaming\Composer\vendor\bin
```
## Usage
First, you need to set your OpenAI key and Database Connection.
```bash
$ viola config
# API Key:
# Database Connection name:
# Choose database driver:
# Enter database host, port, database name, username, password
```
Then, you can try to ask a question to ChatGPT.
```bash
$ viola ask "Show me all books by J. K. Rowling."
```
```bash
Here, I found 2 books by J. K. Rowling:
|----|------------------------------------------|---------------|------|
| id | title | author | year |
|----|------------------------------------------|---------------|------|
| 1 | Harry Potter and the Philosopher's Stone | J. K. Rowling | 1997 |
| 2 | Harry Potter and the Chamber of Secrets | J. K. Rowling | 1998 |
|----|------------------------------------------|---------------|------|
```
## Commands
```bash
# Ask a question to ChatGPT.
$ viola ask ""
```
```bash
# Set your OpenAI key and Database Connection.
$ viola config
```
```bash
# Show all database connections.
$ viola config:show
```
```bash
# Change current connection
$ viola use
```
```bash
# Clear all database connections.
$ viola config:clear all
# Or clear a specific connection.
$ viola config:clear
```
---
## For Developers
### Installation
1. Install in your project via composer.
2. Use `Farzai\Viola\Viola` class to create a new instance.
```php
use Farzai\Viola\Viola;
// Setup Viola.
$viola = Viola::builder()
->setApiKey(string $key)
->setDatabaseConfig(string $driver, array $databaseConfig)
->setClient(\Psr\Http\Client\ClientInterface $client) // Optional
->setLogger(\Psr\Log\LoggerInterface $logger) // Optional
->build();
// Ask a question to ChatGPT.
$answer = $viola->ask('Show me all books by J. K. Rowling.');
// Get the answer.
echo $answer->getAnswer();
// Or get the answer with the results.
foreach ($answer->getResults() as $row) {
//
}
```
## Testing
```bash
$ composer test
```
## Changelog
Please see [CHANGELOG](CHANGELOG.md) for more information on what has changed recently.
## Contributing
Please see [CONTRIBUTING](https://github.com/spatie/.github/blob/main/CONTRIBUTING.md) for details.
## Security Vulnerabilities
Please review [our security policy](../../security/policy) on how to report security vulnerabilities.
## Credits
- [parsilver](https://github.com/parsilver)
- [All Contributors](../../contributors)
## License
The MIT License (MIT). Please see [License File](LICENSE.md) for more information.