Metadata-Version: 2.1
Name: chinoai
Version: 1.0.0
Summary: Chino is a terminal based chatbot based on ChatGPT.
Author-email: Sam <asamadans@gmail.com>
License: MIT License
        
        Copyright (c) 2024 Sam
        
        Permission is hereby granted, free of charge, to any person obtaining a copy
        of this software and associated documentation files (the "Software"), to deal
        in the Software without restriction, including without limitation the rights
        to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
        copies of the Software, and to permit persons to whom the Software is
        furnished to do so, subject to the following conditions:
        
        The above copyright notice and this permission notice shall be included in all
        copies or substantial portions of the Software.
        
        THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
        IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
        FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
        AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
        LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
        OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
        SOFTWARE.
        
Project-URL: Homepage, https://github.com/SAMAD101/Chino
Keywords: chatbot,terminal,openai,rag,bumpver
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python
Classifier: Programming Language :: Python :: 3
Requires-Python: >=3.11
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: langchain>=0.1.6
Requires-Dist: langchain-community>=0.0.19
Requires-Dist: langchain-openai>=0.0.5
Requires-Dist: typer[all]>=0.9.0
Requires-Dist: unstructured[pdf]>=0.11.8
Requires-Dist: chromadb>=0.4.22
Provides-Extra: dev
Requires-Dist: black; extra == "dev"
Requires-Dist: pytest; extra == "dev"
Requires-Dist: pre-commit; extra == "dev"
Requires-Dist: twine; extra == "dev"
Provides-Extra: test
Requires-Dist: pytest; extra == "test"

# Chino 🌸

<div>
  <p>
  Chino is a terminal-based chatbot. Powered by OpenAI. <br>
  Uses RAG to generate responses based on user-provided documents.
  </p>
  <img src="https://badgen.net/badge/status/Under Development/red?icon=lgtm" alt="">

  ![Version](https://img.shields.io/badge/Version-0.1.0-brightgreen.svg)
  ![License](https://img.shields.io/badge/License-MIT-blue.svg)
  ![GitHub Issues](https://img.shields.io/github/issues/SAMAD101/Chino)
  ![GitHub Pull Requests](https://img.shields.io/github/issues-pr/SAMAD101/Chino)
  ![Commits](https://img.shields.io/github/commit-activity/m/SAMAD101/Chino)
  ![Last Commit](https://img.shields.io/github/last-commit/SAMAD101/Chino)
  ![Contributors](https://img.shields.io/github/contributors/SAMAD101/Chino)
  ![Repo Size](https://img.shields.io/github/repo-size/SAMAD101/Chino)
  ![Code Size](https://img.shields.io/github/languages/code-size/SAMAD101/Chino)
  ![Code Style: Black](https://img.shields.io/badge/code%20style-black-000000.svg)

</div>

<p align="center">
  <img width="320" height="320" src="artwork/chino_logo_1.png" alt="Material Bread logo" style="margin-right:20px;">
</p>

<hr>

## 🐍 Python Version Support

This project is designed to be compatible with specific versions of Python for optimal performance and stability.

### Supported Python Version

- **Python 3.11.7**

> ❗️ For the best experience and performance, it is recommended to use the version mentioned above.

Before diving into the project, ensure that you have the correct Python version installed. To check the version of Python you currently have, execute the following command in your terminal:

```bash
python --version
```

### 🐍 Installing Python 3.11.7 with `pyenv`

**Protip:** Managing multiple Python versions is a breeze with [pyenv](https://github.com/pyenv/pyenv). It allows you to seamlessly switch between different Python versions without the need to reinstall them.

If you haven't installed `pyenv` yet, follow their [official guide](https://github.com/pyenv/pyenv) to set it up.

Once you have `pyenv` ready, install the recommended Python version by running:

```bash
pyenv install 3.11.7
```

> When you navigate to this project's directory in the future, `pyenv` will automatically select the recommended Python version, thanks to the `.python-version` file in the project root.

## Installation 🛠️

### Install using pip:
```bash
pip install chinoai
```

### Build from source:
- Clone the repository:
  ```bash
  git clone https://github.com/SAMAD101/Chino.git
  ```

- Navigate to the project Directory:
  ```bash
  cd Chino
  ```

- Install using:
  ```bash
  pip install .
  ```


# 📦 Setup for development

### Setting Up the Project for development

- **Fork the Repository**:

  Get your own fork/copy of the project from GitHub by clicking the "Fork" button.

- **Clone the forked Repository**

  ```bash
  git clone <your-fork-url>
  ```

- **Navigate to the Project Directory**:

  ```bash
  cd Chino
  ```

- **Install the Project (from source)**:

  Use PDM to run the project:

  ```bash
  python3 -m pip install -e .
  ```

- **Install pre-commit hooks**:

  ```bash
  pre-commit install
  ```

- **Run the project:**

  ```bash
  chino --help
  ```

## ⚠️ Note:

You will need an OpenAI API key to make it work. Get your API key from OpenAI website and set it as an environment variable:
```bash
export OPENAI_API_KEY="<your_api_key>"
```

## Usage 📖

Commands and options are available by running:

```bash
chino --help
```
For using the Retrieval Augmented Generation (RAG) features, follow these steps:

1. You will need to put your documents in the `~/.local/share/chino/data` directory. If not there, make one.

2. Also,make sure you have a directory: `~/.local/share/chino/chroma`. This directory will contain the OpenAI embeddings (embedding vectors) for the documents.

3. Process the documents and create the embeddings using the following command:
    ```bash
    chino migrate
    ```

> The directory data and chroma directories will be made more configurable in the future releases.

### Using Query mode:

Once your documents are processed. You can use the query mode to give prompts for the documents [RAG].
Start Chino by running:
```bash
chino start
```
and use `\q:` before your prompt to use it in query mode.
