Metadata-Version: 2.4
Name: ai-parrot
Version: 0.11.21
Summary: Chatbot services for Navigator, based on Langchain
Author-email: Jesus Lara <jesuslara@phenobarbital.info>
License: MIT
Project-URL: Homepage, https://github.com/phenobarbital/ai-parrot
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,artificial intelligence,ai,chatbot,agents
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.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3 :: Only
Classifier: Framework :: AsyncIO
Classifier: Typing :: Typed
Requires-Python: >=3.10.1
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: Cython==3.0.11
Requires-Dist: faiss-cpu>=1.9.0
Requires-Dist: jq==1.7.0
Requires-Dist: rank_bm25==0.2.2
Requires-Dist: tabulate==0.9.0
Requires-Dist: sentencepiece==0.2.0
Requires-Dist: markdown2==2.5.4
Requires-Dist: psycopg-binary==3.2.6
Requires-Dist: python-datamodel>=0.10.17
Requires-Dist: backoff==2.2.1
Requires-Dist: asyncdb>=2.11.6
Requires-Dist: google-cloud-bigquery>=3.30.0
Requires-Dist: numexpr==2.10.2
Requires-Dist: fpdf==1.7.2
Requires-Dist: python-docx==1.1.2
Requires-Dist: typing_extensions<=4.14.0,>=4.13.2
Requires-Dist: navconfig[default]>=1.7.13
Requires-Dist: navigator-auth>=0.15.8
Requires-Dist: navigator-session>=0.6.5
Requires-Dist: navigator-api[locale,uvloop]>=2.13.5
Requires-Dist: matplotlib==3.10.0
Requires-Dist: seaborn==0.13.2
Requires-Dist: pydub==0.25.1
Requires-Dist: async-notify[all]>=1.4.2
Requires-Dist: markitdown>=0.1.2
Requires-Dist: ddgs>=9.5.2
Requires-Dist: pytesseract>=0.3.13
Provides-Extra: agents
Requires-Dist: sentence_transformers==5.0.0; extra == "agents"
Requires-Dist: yfinance==0.2.54; extra == "agents"
Requires-Dist: youtube_search==2.1.2; extra == "agents"
Requires-Dist: wikipedia==1.4.0; extra == "agents"
Requires-Dist: mediawikiapi==1.2; extra == "agents"
Requires-Dist: pyowm==3.3.0; extra == "agents"
Requires-Dist: stackapi==0.3.1; extra == "agents"
Requires-Dist: duckduckgo-search==7.5.0; extra == "agents"
Requires-Dist: google-search-results==2.4.2; extra == "agents"
Requires-Dist: google-api-python-client>=2.151.0; extra == "agents"
Requires-Dist: pomegranate==1.1.0; extra == "agents"
Requires-Dist: autoviz==0.1.905; extra == "agents"
Requires-Dist: spacy==3.8.6; extra == "agents"
Requires-Dist: html2text==2025.4.15; extra == "agents"
Provides-Extra: loaders
Requires-Dist: mammoth==1.8.0; extra == "loaders"
Requires-Dist: markdownify==1.1.0; extra == "loaders"
Requires-Dist: python-docx==1.1.2; extra == "loaders"
Requires-Dist: pymupdf==1.26.3; extra == "loaders"
Requires-Dist: pymupdf4llm==0.0.27; extra == "loaders"
Requires-Dist: pdf4llm==0.0.27; extra == "loaders"
Requires-Dist: pytube==15.0.0; extra == "loaders"
Requires-Dist: youtube_transcript_api==1.0.3; extra == "loaders"
Requires-Dist: python-pptx==1.0.2; extra == "loaders"
Requires-Dist: yt-dlp==2025.8.22; extra == "loaders"
Provides-Extra: images
Requires-Dist: torchvision==0.21.0; extra == "images"
Requires-Dist: timm==1.0.15; extra == "images"
Requires-Dist: ultralytics==8.3.179; extra == "images"
Requires-Dist: albumentations==2.0.6; extra == "images"
Requires-Dist: filetype==1.2.0; extra == "images"
Requires-Dist: imagehash==4.3.1; extra == "images"
Requires-Dist: pgvector==0.3.6; extra == "images"
Requires-Dist: pyheif==0.8.0; extra == "images"
Requires-Dist: exif==1.6.1; extra == "images"
Requires-Dist: pillow-avif-plugin==1.5.2; extra == "images"
Requires-Dist: pillow-heif==0.22.0; extra == "images"
Requires-Dist: python-xmp-toolkit==2.0.2; extra == "images"
Requires-Dist: exifread==3.3.1; extra == "images"
Requires-Dist: transformers<=4.51.3,>=4.51.1; extra == "images"
Requires-Dist: ffmpeg==1.4; extra == "images"
Requires-Dist: holoviews==1.21.0; extra == "images"
Requires-Dist: bokeh==3.7.3; extra == "images"
Requires-Dist: pandas-bokeh==0.5.5; extra == "images"
Requires-Dist: plotly==5.22.0; extra == "images"
Requires-Dist: ipywidgets==8.1.0; extra == "images"
Requires-Dist: altair==5.5.0; extra == "images"
Provides-Extra: vectors
Requires-Dist: torch<=2.6.0,>=2.5.1; extra == "vectors"
Requires-Dist: tiktoken==0.9.0; extra == "vectors"
Requires-Dist: accelerate==0.34.2; extra == "vectors"
Requires-Dist: llama-index==0.12.39; extra == "vectors"
Requires-Dist: llama_cpp_python==0.2.56; extra == "vectors"
Requires-Dist: bitsandbytes==0.44.1; extra == "vectors"
Requires-Dist: datasets>=3.0.2; extra == "vectors"
Requires-Dist: safetensors>=0.4.3; extra == "vectors"
Requires-Dist: transformers<=4.51.3,>=4.51.1; extra == "vectors"
Requires-Dist: sentence-transformers>=5.0.0; extra == "vectors"
Requires-Dist: tokenizers<=0.21.1,>=0.20.0; extra == "vectors"
Requires-Dist: tensorflow>=2.19.1; extra == "vectors"
Requires-Dist: tf-keras==2.19.0; extra == "vectors"
Requires-Dist: simsimd>=4.3.1; extra == "vectors"
Requires-Dist: opencv-python==4.10.0.84; extra == "vectors"
Requires-Dist: chromadb==0.6.3; extra == "vectors"
Provides-Extra: anthropic
Requires-Dist: anthropic==0.61.0; extra == "anthropic"
Provides-Extra: openai
Requires-Dist: openai==1.97.0; extra == "openai"
Requires-Dist: tiktoken==0.9.0; extra == "openai"
Provides-Extra: google
Requires-Dist: google-api-python-client<=2.177.0,>=2.166.0; extra == "google"
Requires-Dist: google-cloud-texttospeech==2.27.0; extra == "google"
Requires-Dist: google-genai>=1.31.0; extra == "google"
Requires-Dist: google-cloud-aiplatform==1.110.0; extra == "google"
Provides-Extra: groq
Requires-Dist: groq==0.30.0; extra == "groq"
Requires-Dist: typing_extensions<=4.14.1,>=4.13.2; extra == "groq"
Provides-Extra: milvus
Requires-Dist: pymilvus==2.4.8; extra == "milvus"
Requires-Dist: milvus==2.3.5; extra == "milvus"
Provides-Extra: chroma
Requires-Dist: chroma==0.2.0; extra == "chroma"
Provides-Extra: eda
Requires-Dist: ydata-profiling==4.16.1; extra == "eda"
Requires-Dist: sweetviz==2.1.4; extra == "eda"
Provides-Extra: all
Requires-Dist: ai-parrot[agents,anthropic,chroma,google,groq,images,loaders,milvus,openai,vector]; extra == "all"
Provides-Extra: dev
Requires-Dist: pytest>=7.2.2; extra == "dev"
Requires-Dist: pytest-asyncio==0.21.1; extra == "dev"
Requires-Dist: pytest-xdist==3.3.1; extra == "dev"
Requires-Dist: pytest-assume==2.4.3; extra == "dev"
Requires-Dist: black; extra == "dev"
Requires-Dist: pylint; extra == "dev"
Requires-Dist: mypy; extra == "dev"
Requires-Dist: coverage; extra == "dev"
Dynamic: license-file

# 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.
