Metadata-Version: 2.2
Name: ai-parrot
Version: 0.5.15
Summary: Live Chatbots based on Langchain chatbots and Agents     Integrated into Navigator Framework or used into any 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.9.20
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: Cython==3.0.11
Requires-Dist: langchain>=0.3.19
Requires-Dist: langchain-core==0.3.40
Requires-Dist: langchain-community==0.3.18
Requires-Dist: langchain-experimental==0.3.4
Requires-Dist: langchain-text-splitters==0.3.6
Requires-Dist: langchainhub==0.1.21
Requires-Dist: huggingface-hub==0.29.1
Requires-Dist: langgraph==0.3.0
Requires-Dist: faiss-cpu>=1.9.0
Requires-Dist: jq==1.7.0
Requires-Dist: rank_bm25==0.2.2
Requires-Dist: matplotlib==3.9.2
Requires-Dist: tabulate==0.9.0
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: weasyprint==61.2
Requires-Dist: markdown2==2.4.13
Requires-Dist: psycopg-binary==3.2.5
Provides-Extra: agents
Requires-Dist: numexpr==2.10.2; extra == "agents"
Requires-Dist: numba==0.59.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: wikibase-rest-api-client==0.2.2; extra == "agents"
Requires-Dist: asknews>=0.10.0; extra == "agents"
Requires-Dist: pyowm==3.3.0; extra == "agents"
Requires-Dist: O365==2.0.35; 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.86.0; extra == "agents"
Requires-Dist: google-api-core==2.24.1; extra == "agents"
Requires-Dist: grpcio-status==1.67.1; extra == "agents"
Provides-Extra: vector
Requires-Dist: torch==2.5.1; extra == "vector"
Requires-Dist: langchain_huggingface==0.1.2; extra == "vector"
Requires-Dist: fastembed==0.3.4; extra == "vector"
Requires-Dist: tiktoken==0.7.0; extra == "vector"
Requires-Dist: accelerate==0.34.2; extra == "vector"
Requires-Dist: llama-index==0.11.20; extra == "vector"
Requires-Dist: llama_cpp_python==0.2.56; extra == "vector"
Requires-Dist: bitsandbytes==0.44.1; extra == "vector"
Requires-Dist: datasets>=3.0.2; extra == "vector"
Requires-Dist: safetensors>=0.4.3; extra == "vector"
Requires-Dist: transformers>=4.44.2; extra == "vector"
Requires-Dist: sentence-transformers==3.4.1; extra == "vector"
Requires-Dist: tokenizers==0.20.1; extra == "vector"
Requires-Dist: torchvision==0.20.1; extra == "vector"
Requires-Dist: tensorflow==2.18.0; extra == "vector"
Requires-Dist: tf-keras==2.18.0; extra == "vector"
Requires-Dist: simsimd==4.3.1; extra == "vector"
Requires-Dist: opencv-python==4.10.0.84; extra == "vector"
Requires-Dist: langchain-postgres==0.0.13; extra == "vector"
Requires-Dist: langchain_chroma==0.2.2; extra == "vector"
Requires-Dist: chromadb==0.6.3; extra == "vector"
Requires-Dist: langchain_duckdb==0.1.1; extra == "vector"
Requires-Dist: langchain-ollama==0.2.3; extra == "vector"
Provides-Extra: anthropic
Requires-Dist: langchain-anthropic==0.2.4; 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-genai==2.0.1; extra == "google"
Requires-Dist: langchain-google-vertexai==2.0.5; extra == "google"
Requires-Dist: vertexai==1.71.1; extra == "google"
Provides-Extra: hunggingfaces
Requires-Dist: llama-index-llms-huggingface==0.2.7; extra == "hunggingfaces"
Provides-Extra: groq
Requires-Dist: groq==0.11.0; extra == "groq"
Requires-Dist: langchain-groq==0.2.0; extra == "groq"
Provides-Extra: qdrant
Requires-Dist: qdrant-client==1.13.2; extra == "qdrant"
Requires-Dist: langchain-qdrant==0.2.0; extra == "qdrant"
Provides-Extra: milvus
Requires-Dist: langchain-milvus>=0.1.6; 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"
Requires-Dist: langchain-chroma==0.2.2; extra == "chroma"
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"
Dynamic: author
Dynamic: author-email
Dynamic: classifier
Dynamic: description
Dynamic: description-content-type
Dynamic: home-page
Dynamic: keywords
Dynamic: license
Dynamic: platform
Dynamic: project-url
Dynamic: provides-extra
Dynamic: requires-dist
Dynamic: requires-python
Dynamic: summary

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