Metadata-Version: 2.4
Name: solace_ai_connector
Version: 1.3.0
Summary: Solace AI Connector - make it easy to connect Solace PubSub+ Event Brokers to AI/ML frameworks
Project-URL: homepage, https://github.com/SolaceLabs/solace-ai-connector
Project-URL: repository, https://github.com/SolaceLabs/solace-ai-connector
Project-URL: documentation, https://github.com/SolaceLabs/solace-ai-connector/blob/main/docs/index.md
Author-email: Edward Funnekotter <edward.funnekotter@solace.com>
License-File: LICENSE
Classifier: License :: OSI Approved :: Apache Software License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.10
Classifier: Programming Language :: Python :: 3.11
Classifier: Programming Language :: Python :: 3.12
Classifier: Programming Language :: Python :: 3.13
Requires-Python: >=3.10.16
Requires-Dist: gevent-websocket==0.10.1
Requires-Dist: gevent==25.8.2
Requires-Dist: python-json-logger==4.0.0
Requires-Dist: pywin32==306; sys_platform == 'win32'
Requires-Dist: pyyaml==6.0.2
Requires-Dist: requests==2.32.5
Requires-Dist: solace-pubsubplus==1.9.0
Requires-Dist: sqlalchemy==2.0.40
Requires-Dist: urllib3==2.5.0
Provides-Extra: all
Requires-Dist: beautifulsoup4==4.13.3; extra == 'all'
Requires-Dist: boto3==1.39.0; extra == 'all'
Requires-Dist: chromadb==1.0.15; extra == 'all'
Requires-Dist: dotenv==0.9.9; extra == 'all'
Requires-Dist: flask-socketio==5.4.1; extra == 'all'
Requires-Dist: flask-wtf==1.2.2; extra == 'all'
Requires-Dist: flask==3.0.3; extra == 'all'
Requires-Dist: langchain-aws==0.2.19; extra == 'all'
Requires-Dist: langchain-chroma==0.2.4; extra == 'all'
Requires-Dist: langchain-milvus==0.1.8; extra == 'all'
Requires-Dist: langchain-openai==0.3.8; extra == 'all'
Requires-Dist: langchain-postgres==0.0.15; extra == 'all'
Requires-Dist: langchain-qdrant==0.2.0; extra == 'all'
Requires-Dist: langchain-text-splitters==0.3.9; extra == 'all'
Requires-Dist: langchain==0.3.21; extra == 'all'
Requires-Dist: litellm==1.74.3; extra == 'all'
Requires-Dist: mysql-connector-python==9.3.0; extra == 'all'
Requires-Dist: numpy; extra == 'all'
Requires-Dist: openai==1.72.0; extra == 'all'
Requires-Dist: pgvector==0.3.6; extra == 'all'
Requires-Dist: playwright==1.51.0; extra == 'all'
Requires-Dist: psycopg-binary==3.2.6; extra == 'all'
Requires-Dist: psycopg2-binary==2.9.10; extra == 'all'
Requires-Dist: pymilvus==2.5.6; extra == 'all'
Requires-Dist: pymongo==4.10.1; extra == 'all'
Requires-Dist: python-dotenv==1.1.1; extra == 'all'
Requires-Dist: qdrant-client==1.14.3; extra == 'all'
Requires-Dist: requests-aws4auth>=1.3.1; extra == 'all'
Provides-Extra: aws
Requires-Dist: boto3==1.39.0; extra == 'aws'
Requires-Dist: langchain-aws==0.2.19; extra == 'aws'
Requires-Dist: requests-aws4auth>=1.3.1; extra == 'aws'
Provides-Extra: chromadb-vector-store
Requires-Dist: chromadb==1.0.15; extra == 'chromadb-vector-store'
Requires-Dist: langchain-chroma==0.2.4; extra == 'chromadb-vector-store'
Provides-Extra: langchain
Requires-Dist: langchain==0.3.21; extra == 'langchain'
Provides-Extra: llm
Requires-Dist: litellm==1.74.3; extra == 'llm'
Provides-Extra: llm-ext-release
Requires-Dist: aiohappyeyeballs==2.6.1; extra == 'llm-ext-release'
Requires-Dist: aiohttp==3.12.14; extra == 'llm-ext-release'
Requires-Dist: aiosignal>=1.4.0; extra == 'llm-ext-release'
Requires-Dist: annotated-types==0.7.0; extra == 'llm-ext-release'
Requires-Dist: anyio==4.9.0; extra == 'llm-ext-release'
Requires-Dist: attrs==25.3.0; extra == 'llm-ext-release'
Requires-Dist: certifi==2025.1.31; extra == 'llm-ext-release'
Requires-Dist: charset-normalizer==3.4.1; extra == 'llm-ext-release'
Requires-Dist: click==8.1.8; extra == 'llm-ext-release'
Requires-Dist: distro==1.9.0; extra == 'llm-ext-release'
Requires-Dist: dotenv==0.9.9; extra == 'llm-ext-release'
Requires-Dist: filelock==3.18.0; extra == 'llm-ext-release'
Requires-Dist: frozenlist==1.5.0; extra == 'llm-ext-release'
Requires-Dist: fsspec==2025.3.2; extra == 'llm-ext-release'
Requires-Dist: h11==0.16.0; extra == 'llm-ext-release'
Requires-Dist: httpcore==1.0.9; extra == 'llm-ext-release'
Requires-Dist: httpx==0.28.1; extra == 'llm-ext-release'
Requires-Dist: huggingface-hub==0.30.2; extra == 'llm-ext-release'
Requires-Dist: idna==3.10; extra == 'llm-ext-release'
Requires-Dist: importlib-metadata==8.6.1; extra == 'llm-ext-release'
Requires-Dist: jinja2==3.1.6; extra == 'llm-ext-release'
Requires-Dist: jiter==0.9.0; extra == 'llm-ext-release'
Requires-Dist: jsonschema-specifications==2024.10.1; extra == 'llm-ext-release'
Requires-Dist: jsonschema==4.23.0; extra == 'llm-ext-release'
Requires-Dist: litellm==1.74.3; extra == 'llm-ext-release'
Requires-Dist: markupsafe==3.0.2; extra == 'llm-ext-release'
Requires-Dist: multidict==6.2.0; extra == 'llm-ext-release'
Requires-Dist: openai==1.72.0; extra == 'llm-ext-release'
Requires-Dist: packaging==24.2; extra == 'llm-ext-release'
Requires-Dist: propcache==0.3.1; extra == 'llm-ext-release'
Requires-Dist: pydantic-core==2.33.1; extra == 'llm-ext-release'
Requires-Dist: pydantic==2.11.3; extra == 'llm-ext-release'
Requires-Dist: python-dotenv==1.1.1; extra == 'llm-ext-release'
Requires-Dist: pyyaml==6.0.2; extra == 'llm-ext-release'
Requires-Dist: referencing==0.36.2; extra == 'llm-ext-release'
Requires-Dist: regex==2024.11.6; extra == 'llm-ext-release'
Requires-Dist: rpds-py==0.24.0; extra == 'llm-ext-release'
Requires-Dist: sniffio==1.3.1; extra == 'llm-ext-release'
Requires-Dist: tiktoken==0.9.0; extra == 'llm-ext-release'
Requires-Dist: tokenizers==0.21.1; extra == 'llm-ext-release'
Requires-Dist: tqdm==4.67.1; extra == 'llm-ext-release'
Requires-Dist: typing-extensions==4.13.1; extra == 'llm-ext-release'
Requires-Dist: typing-inspection==0.4.0; extra == 'llm-ext-release'
Requires-Dist: yarl==1.19.0; extra == 'llm-ext-release'
Requires-Dist: zipp==3.21.0; extra == 'llm-ext-release'
Provides-Extra: milvus-vector-store
Requires-Dist: langchain-milvus==0.1.8; extra == 'milvus-vector-store'
Requires-Dist: pymilvus==2.5.6; extra == 'milvus-vector-store'
Provides-Extra: mongodb
Requires-Dist: pymongo==4.10.1; extra == 'mongodb'
Provides-Extra: openai
Requires-Dist: langchain-openai==0.3.8; extra == 'openai'
Requires-Dist: openai==1.72.0; extra == 'openai'
Provides-Extra: openai-ext-release
Requires-Dist: annotated-types==0.7.0; extra == 'openai-ext-release'
Requires-Dist: anyio==4.9.0; extra == 'openai-ext-release'
Requires-Dist: certifi==2025.1.31; extra == 'openai-ext-release'
Requires-Dist: charset-normalizer==3.4.1; extra == 'openai-ext-release'
Requires-Dist: distro==1.9.0; extra == 'openai-ext-release'
Requires-Dist: h11==0.16.0; extra == 'openai-ext-release'
Requires-Dist: httpcore==1.0.9; extra == 'openai-ext-release'
Requires-Dist: httpx==0.28.1; extra == 'openai-ext-release'
Requires-Dist: idna==3.10; extra == 'openai-ext-release'
Requires-Dist: jiter==0.9.0; extra == 'openai-ext-release'
Requires-Dist: jsonpatch==1.33; extra == 'openai-ext-release'
Requires-Dist: jsonpointer==3.0.0; extra == 'openai-ext-release'
Requires-Dist: langchain-core==0.3.72; extra == 'openai-ext-release'
Requires-Dist: langchain-openai==0.3.8; extra == 'openai-ext-release'
Requires-Dist: langsmith==0.3.45; extra == 'openai-ext-release'
Requires-Dist: openai==1.72.0; extra == 'openai-ext-release'
Requires-Dist: orjson==3.10.16; extra == 'openai-ext-release'
Requires-Dist: packaging==24.2; extra == 'openai-ext-release'
Requires-Dist: pydantic-core==2.33.1; extra == 'openai-ext-release'
Requires-Dist: pydantic==2.11.3; extra == 'openai-ext-release'
Requires-Dist: pyyaml==6.0.2; extra == 'openai-ext-release'
Requires-Dist: regex==2024.11.6; extra == 'openai-ext-release'
Requires-Dist: requests-toolbelt==1.0.0; extra == 'openai-ext-release'
Requires-Dist: sniffio==1.3.1; extra == 'openai-ext-release'
Requires-Dist: tenacity==9.1.2; extra == 'openai-ext-release'
Requires-Dist: tiktoken==0.9.0; extra == 'openai-ext-release'
Requires-Dist: tqdm==4.67.1; extra == 'openai-ext-release'
Requires-Dist: typing-extensions==4.13.1; extra == 'openai-ext-release'
Requires-Dist: typing-inspection==0.4.0; extra == 'openai-ext-release'
Requires-Dist: zstandard==0.23.0; extra == 'openai-ext-release'
Provides-Extra: pgvector-vector-store
Requires-Dist: langchain-postgres==0.0.15; extra == 'pgvector-vector-store'
Requires-Dist: pgvector==0.3.6; extra == 'pgvector-vector-store'
Requires-Dist: psycopg-binary==3.2.6; extra == 'pgvector-vector-store'
Provides-Extra: qdrant-ext-release
Requires-Dist: annotated-types==0.7.0; extra == 'qdrant-ext-release'
Requires-Dist: anyio==4.9.0; extra == 'qdrant-ext-release'
Requires-Dist: certifi==2025.1.31; extra == 'qdrant-ext-release'
Requires-Dist: charset-normalizer==3.4.1; extra == 'qdrant-ext-release'
Requires-Dist: grpcio-tools==1.73.1; extra == 'qdrant-ext-release'
Requires-Dist: grpcio==1.73.1; extra == 'qdrant-ext-release'
Requires-Dist: h11==0.16.0; extra == 'qdrant-ext-release'
Requires-Dist: h2==4.3.0; extra == 'qdrant-ext-release'
Requires-Dist: hpack==4.1.0; extra == 'qdrant-ext-release'
Requires-Dist: httpcore==1.0.9; extra == 'qdrant-ext-release'
Requires-Dist: httpx==0.28.1; extra == 'qdrant-ext-release'
Requires-Dist: hyperframe==6.1.0; extra == 'qdrant-ext-release'
Requires-Dist: idna==3.10; extra == 'qdrant-ext-release'
Requires-Dist: jsonpatch==1.33; extra == 'qdrant-ext-release'
Requires-Dist: jsonpointer==3.0.0; extra == 'qdrant-ext-release'
Requires-Dist: langchain-core==0.3.72; extra == 'qdrant-ext-release'
Requires-Dist: langchain-qdrant==0.2.0; extra == 'qdrant-ext-release'
Requires-Dist: langsmith==0.3.45; extra == 'qdrant-ext-release'
Requires-Dist: orjson==3.10.16; extra == 'qdrant-ext-release'
Requires-Dist: packaging==24.2; extra == 'qdrant-ext-release'
Requires-Dist: portalocker==2.10.1; extra == 'qdrant-ext-release'
Requires-Dist: protobuf==6.31.1; extra == 'qdrant-ext-release'
Requires-Dist: pydantic-core==2.33.1; extra == 'qdrant-ext-release'
Requires-Dist: pydantic==2.11.3; extra == 'qdrant-ext-release'
Requires-Dist: pyyaml==6.0.2; extra == 'qdrant-ext-release'
Requires-Dist: qdrant-client==1.14.3; extra == 'qdrant-ext-release'
Requires-Dist: requests-toolbelt==1.0.0; extra == 'qdrant-ext-release'
Requires-Dist: requests==2.32.5; extra == 'qdrant-ext-release'
Requires-Dist: setuptools==78.1.1; extra == 'qdrant-ext-release'
Requires-Dist: sniffio==1.3.1; extra == 'qdrant-ext-release'
Requires-Dist: tenacity==9.1.2; extra == 'qdrant-ext-release'
Requires-Dist: typing-extensions==4.13.1; extra == 'qdrant-ext-release'
Requires-Dist: typing-inspection==0.4.0; extra == 'qdrant-ext-release'
Requires-Dist: zstandard==0.23.0; extra == 'qdrant-ext-release'
Provides-Extra: qdrant-vector-store
Requires-Dist: langchain-qdrant==0.2.0; extra == 'qdrant-vector-store'
Provides-Extra: splitter
Requires-Dist: langchain-text-splitters==0.3.9; extra == 'splitter'
Provides-Extra: splitter-ext-release
Requires-Dist: annotated-types==0.7.0; extra == 'splitter-ext-release'
Requires-Dist: anyio==4.9.0; extra == 'splitter-ext-release'
Requires-Dist: certifi==2025.1.31; extra == 'splitter-ext-release'
Requires-Dist: charset-normalizer==3.4.1; extra == 'splitter-ext-release'
Requires-Dist: h11==0.16.0; extra == 'splitter-ext-release'
Requires-Dist: httpcore==1.0.9; extra == 'splitter-ext-release'
Requires-Dist: httpx==0.28.1; extra == 'splitter-ext-release'
Requires-Dist: idna==3.10; extra == 'splitter-ext-release'
Requires-Dist: jsonpatch==1.33; extra == 'splitter-ext-release'
Requires-Dist: jsonpointer==3.0.0; extra == 'splitter-ext-release'
Requires-Dist: langchain-core==0.3.72; extra == 'splitter-ext-release'
Requires-Dist: langchain-text-splitters==0.3.9; extra == 'splitter-ext-release'
Requires-Dist: langsmith==0.3.45; extra == 'splitter-ext-release'
Requires-Dist: orjson==3.10.16; extra == 'splitter-ext-release'
Requires-Dist: packaging==24.2; extra == 'splitter-ext-release'
Requires-Dist: pydantic-core==2.33.1; extra == 'splitter-ext-release'
Requires-Dist: pydantic==2.11.3; extra == 'splitter-ext-release'
Requires-Dist: pyyaml==6.0.2; extra == 'splitter-ext-release'
Requires-Dist: requests-toolbelt==1.0.0; extra == 'splitter-ext-release'
Requires-Dist: sniffio==1.3.1; extra == 'splitter-ext-release'
Requires-Dist: tenacity==9.1.2; extra == 'splitter-ext-release'
Requires-Dist: typing-extensions==4.13.1; extra == 'splitter-ext-release'
Requires-Dist: typing-inspection==0.4.0; extra == 'splitter-ext-release'
Requires-Dist: zstandard==0.23.0; extra == 'splitter-ext-release'
Provides-Extra: sql
Requires-Dist: mysql-connector-python==9.3.0; extra == 'sql'
Requires-Dist: psycopg2-binary==2.9.10; extra == 'sql'
Provides-Extra: test
Requires-Dist: pytest-asyncio>=1.2.0; extra == 'test'
Requires-Dist: pytest-cov>=4.0.0; extra == 'test'
Requires-Dist: pytest-mock>=3.0.0; extra == 'test'
Requires-Dist: pytest>=8.0.0; extra == 'test'
Provides-Extra: webscraping
Requires-Dist: beautifulsoup4==4.13.3; extra == 'webscraping'
Requires-Dist: playwright==1.51.0; extra == 'webscraping'
Provides-Extra: websocket
Requires-Dist: flask-socketio==5.4.1; extra == 'websocket'
Requires-Dist: flask-wtf==1.2.2; extra == 'websocket'
Requires-Dist: flask==3.0.3; extra == 'websocket'
Description-Content-Type: text/markdown

# Solace AI Connector

## Overview

This project provides a standalone, Python-based application to allow Solace event brokers to connect to
a wide range of AI models and services. The application is designed to be easily extensible to
support new AI models and services.

## Documentation

Please see the [documentation](docs/index.md) for more information.

## Getting started quickly

Please see the [getting started guide](docs/getting_started.md) for instructions on how to get started quickly.

## Support

This is not an officially supported Solace product.

For more information try these resources:

- Ask the [Solace Community](https://solace.community)
- The Solace Developer Portal website at: https://solace.dev

## Contributing

Contributions are encouraged! Please read [CONTRIBUTING](CONTRIBUTING.md) for details on our code of conduct, and the process for submitting pull requests to us.

## License

See the [LICENSE](LICENSE) file for details.

