Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/farzai/viola-php
Manage your database with ChatGPT
https://github.com/farzai/viola-php
chatgpt databases openai viola
Last synced: 4 months 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 1 year ago)
- Default Branch: main
- Last Pushed: 2024-03-26T03:15:59.000Z (10 months ago)
- Last Synced: 2024-03-26T04:29:02.255Z (10 months ago)
- Topics: chatgpt, databases, openai, viola
- Language: PHP
- Homepage:
- Size: 476 KB
- Stars: 2
- 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
![Example CLI](assets/example.png)
[![Latest Version on Packagist](https://img.shields.io/packagist/v/farzai/viola.svg?style=flat-square)](https://packagist.org/packages/farzai/viola)
[![Tests](https://img.shields.io/github/actions/workflow/status/farzai/viola-php/run-tests.yml?branch=main&label=tests&style=flat-square)](https://github.com/farzai/viola-php/actions/workflows/run-tests.yml)
[![Total Downloads](https://img.shields.io/packagist/dt/farzai/viola.svg?style=flat-square)](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.