Metadata-Version: 2.1
Name: ai-parrot
Version: 0.3.0
Summary: Live Chatbots based on Langchain chatbots and Agents     Integrated into Navigator Framework or used into aiohttp applications.
Home-page: https://github.com/phenobarbital/ai-parrot
Author: Jesus Lara
Author-email: jesuslara@phenobarbital.info
License: MIT
Project-URL: Source, https://github.com/phenobarbital/ai-parrot
Project-URL: Tracker, https://github.com/phenobarbital/ai-parrot/issues
Project-URL: Documentation, https://github.com/phenobarbital/ai-parrot/
Project-URL: Funding, https://paypal.me/phenobarbital
Project-URL: Say Thanks!, https://saythanks.io/to/phenobarbital
Keywords: asyncio,asyncpg,aioredis,aiomcache,langchain,chatbot,agents
Platform: POSIX
Classifier: Development Status :: 4 - Beta
Classifier: Intended Audience :: Developers
Classifier: Operating System :: POSIX :: Linux
Classifier: Environment :: Web Environment
Classifier: License :: OSI Approved :: MIT License
Classifier: Topic :: Software Development :: Build Tools
Classifier: Topic :: Software Development :: Libraries :: Python Modules
Classifier: Programming Language :: Python :: 3.9
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Framework :: AsyncIO
Requires-Python: >=3.10.12
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: Cython==3.0.9
Requires-Dist: pymupdf==1.24.4
Requires-Dist: pymupdf4llm==0.0.1
Requires-Dist: pdf4llm==0.0.6
Requires-Dist: PyPDF2==3.0.1
Requires-Dist: pdfminer.six==20231228
Requires-Dist: pdfplumber==0.11.0
Requires-Dist: bitsandbytes==0.43.0
Requires-Dist: Cartopy==0.22.0
Requires-Dist: chromadb==0.4.24
Requires-Dist: contourpy==1.2.0
Requires-Dist: datasets==2.18.0
Requires-Dist: faiss-cpu==1.8.0
Requires-Dist: fastavro==1.9.4
Requires-Dist: GitPython==3.1.42
Requires-Dist: gunicorn==21.2.0
Requires-Dist: jq==1.7.0
Requires-Dist: rank_bm25==0.2.2
Requires-Dist: matplotlib==3.8.3
Requires-Dist: numba==0.59.0
Requires-Dist: opentelemetry-sdk==1.24.0
Requires-Dist: rapidocr-onnxruntime==1.3.15
Requires-Dist: pytesseract==0.3.10
Requires-Dist: python-docx==1.1.0
Requires-Dist: python-pptx==0.6.23
Requires-Dist: docx2txt==0.8
Requires-Dist: pytube==15.0.0
Requires-Dist: pydub==0.25.1
Requires-Dist: markdownify==0.12.1
Requires-Dist: librosa==0.10.1
Requires-Dist: yt_dlp==2024.4.9
Requires-Dist: moviepy==1.0.3
Requires-Dist: safetensors==0.4.2
Requires-Dist: sentence-transformers==2.6.1
Requires-Dist: tabulate==0.9.0
Requires-Dist: tiktoken==0.7.0
Requires-Dist: tokenizers==0.19.1
Requires-Dist: unstructured==0.14.3
Requires-Dist: unstructured-client==0.18.0
Requires-Dist: uvloop==0.19.0
Requires-Dist: XlsxWriter==3.2.0
Requires-Dist: youtube-transcript-api==0.6.2
Requires-Dist: selenium==4.18.1
Requires-Dist: webdriver_manager==4.0.1
Requires-Dist: transitions==0.9.0
Requires-Dist: sentencepiece==0.2.0
Requires-Dist: duckduckgo-search==5.3.0
Requires-Dist: google-search-results==2.4.2
Requires-Dist: google-api-python-client>=2.86.0
Requires-Dist: gdown==5.1.0
Requires-Dist: weasyprint==61.2
Requires-Dist: markdown2==2.4.13
Requires-Dist: xformers==0.0.25.post1
Requires-Dist: fastembed==0.3.4
Requires-Dist: mammoth==1.7.1
Requires-Dist: accelerate==0.29.3
Requires-Dist: langchain>=0.2.6
Requires-Dist: langchain-community>=0.2.6
Requires-Dist: langchain-core==0.2.32
Requires-Dist: langchain-experimental==0.0.62
Requires-Dist: langchainhub==0.1.15
Requires-Dist: langchain-text-splitters==0.2.2
Requires-Dist: huggingface-hub==0.23.5
Requires-Dist: llama-index==0.10.20
Requires-Dist: llama_cpp_python==0.2.56
Requires-Dist: asyncdb[all]>=2.7.10
Requires-Dist: querysource>=3.10.1
Requires-Dist: yfinance==0.2.40
Requires-Dist: youtube_search==2.1.2
Requires-Dist: wikipedia==1.4.0
Requires-Dist: mediawikiapi==1.2
Requires-Dist: wikibase-rest-api-client==0.2.0
Requires-Dist: asknews==0.7.30
Requires-Dist: pyowm==3.3.0
Requires-Dist: O365==2.0.35
Requires-Dist: langchain-huggingface==0.0.3
Requires-Dist: stackapi==0.3.1
Provides-Extra: anthropic
Requires-Dist: langchain-anthropic==0.1.11; extra == "anthropic"
Requires-Dist: anthropic==0.25.2; extra == "anthropic"
Provides-Extra: openai
Requires-Dist: langchain-openai==0.1.21; extra == "openai"
Requires-Dist: openai==1.40.3; extra == "openai"
Requires-Dist: llama-index-llms-openai==0.1.11; extra == "openai"
Requires-Dist: tiktoken==0.7.0; extra == "openai"
Provides-Extra: google
Requires-Dist: langchain-google-vertexai==1.0.4; extra == "google"
Requires-Dist: langchain-google-genai==1.0.4; extra == "google"
Requires-Dist: google-generativeai==0.5.4; extra == "google"
Requires-Dist: vertexai==1.49.0; extra == "google"
Requires-Dist: google-cloud-aiplatform==1.49.0; extra == "google"
Requires-Dist: grpc-google-iam-v1==0.13.0; extra == "google"
Provides-Extra: hunggingfaces
Requires-Dist: llama-index-llms-huggingface==0.2.7; extra == "hunggingfaces"
Provides-Extra: groq
Requires-Dist: groq==0.6.0; extra == "groq"
Requires-Dist: langchain-groq==0.1.4; extra == "groq"
Provides-Extra: qdrant
Requires-Dist: qdrant-client==1.8.0; extra == "qdrant"
Provides-Extra: milvus
Requires-Dist: langchain-milvus==0.1.1; extra == "milvus"
Requires-Dist: milvus==2.3.5; extra == "milvus"
Requires-Dist: pymilvus==2.4.4; extra == "milvus"
Provides-Extra: crew
Requires-Dist: colbert-ai==0.2.19; extra == "crew"
Requires-Dist: vanna==0.3.4; extra == "crew"
Requires-Dist: crewai[tools]==0.28.8; extra == "crew"
Provides-Extra: analytics
Requires-Dist: annoy==1.17.3; extra == "analytics"
Requires-Dist: gradio_tools==0.0.9; extra == "analytics"
Requires-Dist: gradio-client==0.2.9; extra == "analytics"
Requires-Dist: streamlit==1.37.1; extra == "analytics"
Requires-Dist: simsimd==4.3.1; extra == "analytics"
Requires-Dist: opencv-python==4.10.0.84; extra == "analytics"
Provides-Extra: all
Requires-Dist: langchain-milvus==0.1.1; extra == "all"
Requires-Dist: milvus==2.3.5; extra == "all"
Requires-Dist: pymilvus==2.4.4; extra == "all"
Requires-Dist: groq==0.6.0; extra == "all"
Requires-Dist: langchain-groq==0.1.4; extra == "all"
Requires-Dist: llama-index-llms-huggingface==0.2.7; extra == "all"
Requires-Dist: langchain-google-vertexai==1.0.8; extra == "all"
Requires-Dist: langchain-google-genai==1.0.8; extra == "all"
Requires-Dist: google-generativeai==0.7.2; extra == "all"
Requires-Dist: vertexai==1.60.0; extra == "all"
Requires-Dist: google-cloud-aiplatform>=1.60.0; extra == "all"
Requires-Dist: grpc-google-iam-v1==0.13.0; extra == "all"
Requires-Dist: langchain-openai==0.1.21; extra == "all"
Requires-Dist: openai==1.40.8; extra == "all"
Requires-Dist: llama-index-llms-openai==0.1.11; extra == "all"
Requires-Dist: langchain-anthropic==0.1.23; extra == "all"
Requires-Dist: anthropic==0.34.0; extra == "all"

# AI Parrot: Python package for creating Chatbots
This is an open-source Python package for creating Chatbots based on Langchain and Navigator.
This README provides instructions for installation, development, testing, and releasing Parrot.

## Installation

**Creating a virtual environment:**

This is recommended for development and isolation from system-wide libraries.
Run the following command in your terminal:

Debian-based systems installation:
   ```
   sudo apt install gcc python3.11-venv python3.11-full python3.11-dev libmemcached-dev zlib1g-dev build-essential libffi-dev unixodbc unixodbc-dev libsqliteodbc libev4 libev-dev
   ```

   For Qdrant installation:
   ```
   docker pull qdrant/qdrant
   docker run -d -p 6333:6333 -p 6334:6334 --name qdrant -v $(pwd)/qdrant_storage:/qdrant/storage:z qdrant/qdrant
   ```

For VertexAI, creates a folder on "env" called "google" and copy the JSON credentials file into it.

   ```bash
   make venv
   ```

   This will create a virtual environment named `.venv`. To activate it, run:

   ```bash
   source .venv/bin/activate  # Linux/macOS
   ```

   Once activated, install Parrot within the virtual environment:

   ```bash
   make install
   ```
   The output will remind you to activate the virtual environment before development.

   **Optional** (for developers):
   ```bash
   pip install -e .
   ```

## Start http server
```bash
python run.py
```

## Development Setup

This section explains how to set up your development environment:

1. **Install development requirements:**

   ```bash
   make setup
   ```

   This installs development dependencies like linters and test runners mentioned in the `docs/requirements-dev.txt` file.

2. **Install Parrot in editable mode:**

   This allows you to make changes to the code and test them without reinstalling:

   ```bash
   make dev
   ```

   This uses `flit` to install Parrot in editable mode.


### Usage (Replace with actual usage instructions)

*Once you have set up your development environment, you can start using Parrot.*

#### Test with Code ChatBOT
* Set environment variables for:
 [google]
   GOOGLE_API_KEY=apikey
   GOOGLE_CREDENTIALS_FILE=.../credentials.json
   VERTEX_PROJECT_ID=vertex-project
   VERTEX_REGION=region

* Run the chatbot:
    ```bash
    python examples/test_agent.py
    ```

### Testing

To run the test suite:

```bash
make test
```

This will run tests using `coverage` to report on code coverage.


### Code Formatting

To format the code with black:

```bash
make format
```


### Linting

To lint the code for style and potential errors:

```bash
make lint
```

This uses `pylint` and `black` to check for issues.


### Releasing a New Version

This section outlines the steps for releasing a new version of Parrot:

1. **Ensure everything is clean and tested:**

   ```bash
   make release
   ```

   This runs `lint`, `test`, and `clean` tasks before proceeding.

2. **Publish the package:**

   ```bash
   make release
   ```

   This uses `flit` to publish the package to a repository like PyPI. You'll need to have publishing credentials configured for `flit`.


### Cleaning Up

To remove the virtual environment:

```bash
make distclean
```


### Contributing

We welcome contributions to Parrot! Please refer to the CONTRIBUTING.md file for guidelines on how to contribute.
