semvec/pypi-packages huggingface dataset:
psqlomni 0.1.2
LLM-powered chat interface to your Postgres database - (psql powered with Natural Language)
Requires Python: <4.0,>=3.9

# psqlomni  
(psql powered with natural language)

An LLM-powered chat interface to your database. This tool understands Postgres syntax and can easily translate English queries into proper SQL queries. Uses Langchain and [Open AI](https://openai.com) model.

This provides the quickest way to enable LLM chat with your data - no preparation is needed.


Here's a quick demo showing natural language queries:

https://github.com/emmakodes/psqlomni/assets/34986076/0c58f4fd-c359-47c2-8e3c-4b068545e522

## Installation

You will need:

1. credentials for your database
2. an OpenAI [API Key](https://platform.openai.com/account/api-keys) from your OpenAI account.

then

```
pip install psqlomni
```

or download the source. 

Run the CLI with:

    psqlomni

or use `python -m psqlomni` to run from source.

## What can it do?

The Open AI model understands most Postgres syntax, so it can generate both generic SQL commands as well as very Postgres-specific ones like querying system settings. It can answer questions based on the databases' schema as well as on the databases' content (like describing a specific table).

The LLM is also good at analyzing tables, understanding what they are likely used for, and inferring relationships between tables. It is good at writing JOINs between tables without explicit instruction.

It can write queries to group and summarize results.

It can recover from errors by running a generated query, catching the traceback and regenerating it correctly.

It will save tokens by only retrieving the schema from relevant tables.

It also maintains a history of the chat, so you can easily ask follow up questions.

### Configuration

You can configure the database connection either using `psql` style command line arguments
or the env vars `DBHOST`, `DBNAME`, `DBUSER`, `DBPASSWORD`, `DBPORT`.

Else when you first run the program it will prompt you for the connection credentials as
well as your OpenAI API key.

After first setup all the configuration information is stored in `~/.psqlomni`. Delete that
file if you want to start over.

You can specify the number of sample rows that will be appended to each table description. This can increase performance as demonstrated in the paper [Rajkumar et al, 2022](https://arxiv.org/abs/2204.00498). Follows best practices as specified in: [Rajkumar et al, 2022](https://arxiv.org/abs/2204.00498)

## How it works

`psqlomni` uses Langchain and the OpenAI model to create an agent to work with your database.

When requested the LLM automatically generates the right SQL, ask if to execute the query, if yes(or y), it executes the query. The query results are then returned. If an error is returned, it rewrites the query, check the query, ask for confirmation to execute query and then try again.

### Command Reference

There are a few system commands supported for meta operations: 

`help` - show system commands

`connection` - show the current db connection details, and the active LLM model

`exit` or ctrl-c to exit
pyaze 1.3
Python Azərbaycan dilində daha çox məlumat üçün kömək() funksiyasını daxil edin.
Requires Python: >=3.0


Bu python modulu python-un içindəki funksiyaları Azərbaycan dilinə çevirir və İngilis dilini bilməyənlər və python-u yeni öyrənənlər üçün asandlaşdırır.
Bu modulun kodu MİT lisenziyası altındadır
Daha çox məlumat üçün kömək() funsiyasını istidə edin
    Bu modulda işlədilə bilən funksiyalar:
    - yaz("Mətn") - Mətn yazmaq üçün
    - oxu("Sual") - Klaviaturadan daxil ediləni oxumaq üçün
    - əgər(Şərt, 'funksiya', yoxsa='funksiya') - Şərt yerinə yetirən funksiyaları çağırmaq üçün
    - nəqədərki(Şərt, 'funksiya') - Şərt doğru olduqda funksiyanı təkrarlamaq üçün
    - cəm(ədəd, ədəd) - İki ədədi toplamaq üçün
    - çıx(a, b) - İki ədədi çıxmaq üçün
    - vur(a, b) - İki ədədi vurmaq üçün
    - böl(a, b) - İki ədədi bölmək üçün
    - ədəd("Mətn") - Mətni ədədə çevirmək üçün
    - sətir(ədəd) - Ədədi mətinə çevirmək üçün
    - təyin(dəyişən adı, dəyişənin dəyəri) - Qlobal dəyişən yaratmaq üçün
    - fayl_yaz(fayl_adı, mətn) - Fayla mətn yazmaq üçün
    - fayl_oxu(fayl_adı) - Fayldan mətn oxumaq üçün
---------------------------------------------------------------------------------------------------------------------------------------------------

This python module translates the functions inside python into Azerbaijani and makes it easier to learn python for people who doesn't speak english.
This module is under MIT license