semvec/pypi-packages huggingface dataset:
revolver-ai-bot 0.2.7
Revolver AI Bot
Requires Python: >=3.10

![Tests](https://github.com/romeocavazza/revolver-ai-bot/actions/workflows/test.yml/badge.svg)
[![codecov](https://codecov.io/gh/romeocavazza/revolver-ai-bot/branch/main/graph/badge.svg)](https://codecov.io/gh/romeocavazza/revolver-ai-bot)

# 🤖 Revolver AI Bot

Agent IA full-stack pour ingestion de briefs, veille stratégique, analyse automatique et génération de livrables professionnels (PDF, PPTX, API). Compatible Slack, CLI et FastAPI.

---

## 🚀 Installation rapide

### 1. Cloner le dépôt

```bash
git clone https://github.com/Namtar-afk/revolver-ai-bot.git
cd revolver-ai-bot
```

### 2. Environnement virtuel

```bash
python3 -m venv .venv
source .venv/bin/activate
```

### 3. Installer les dépendances

```bash
pip install -r requirements.txt
```

### 4. Clés API et config

```bash
cp config.example.py config.py
# Puis éditez `config.py` avec vos clés (OpenAI, Slack, Google, SerpAPI...)
```

## 🧠 Fonctionnalités principales

- ✨ Parsing intelligent de briefs PDF → JSON valide
- 📊 Analyse automatisée via LLM (insights, KPIs, hypothèses…)
- 📈 Agrégation et clustering de veille (RSS, Google, TikTok…)
- 🗞️ Génération de slides .pptx (Deck complet)
- 🧪 API REST (FastAPI) pour intégration facile
- 💬 Mode Slack bot interactif

## 🗂 Structure du projet

```
revolver-ai-bot/
├── bot/                ← Slack handler + veille + analyse
├── parser/             ← Extraction et NLP des briefs PDF
├── pptx_generator/     ← Génération de PowerPoint
├── prompts/            ← Templates markdown pour GPT
├── reco/               ← Recommandation stratégique (LLM + logique)
├── schema/             ← JSON Schema pour validation
├── api/                ← FastAPI server (REST endpoints)
├── tests/              ← Unitaires, intégration et snapshots
├── run_parser.py       ← CLI : PDF → JSON/PPTX
├── run_monitor.py      ← CLI : veille
└── README.md
```

## 🧪 Tests unitaires

```bash
export PYTHONPATH=$(pwd)
pytest -v
```

Couverture : extraction, parsing, génération, intégration, Slack.

## 🖥 Utilisation CLI

### 1. Parser un brief

```bash
python run_parser.py
```

### 2. Générer un rapport complet (.pptx)

```bash
python run_parser.py --report output.pptx
```

### 3. Lancer la veille

```bash
python run_monitor.py --out data/veille.csv
```

## 🌐 API (FastAPI)

Démarrer le serveur :

```bash
uvicorn api.main:app --reload --port 8001
```

→ Accès live : http://127.0.0.1:8001/docs

## 💬 Slack bot

Démarrer :

```bash
export SLACK_BOT_TOKEN="xoxb-..."
export SLACK_APP_TOKEN="xapp-..."
python bot/slack_handler.py
```

Commandes supportées :

- `!veille` — récupère et affiche la veille
- `!analyse` — affiche les clusters de tendance
- `!report` — génère un rapport PPT depuis Slack

### Mode debug :

```bash
python bot/slack_handler.py --simulate
```
ontologist 0.2.0
A Python library for validating RDF data alignment with ontologies without requiring shape resources.
Requires Python: <4.0,>=3.9

# ontologist

[![Release](https://img.shields.io/github/v/release/atomobianco/ontologist)](https://img.shields.io/github/v/release/atomobianco/ontologist)
[![Build status](https://img.shields.io/github/actions/workflow/status/atomobianco/ontologist/main.yml?branch=main)](https://github.com/atomobianco/ontologist/actions/workflows/main.yml?query=branch%3Amain)
[![License](https://img.shields.io/github/license/atomobianco/ontologist)](https://img.shields.io/github/license/atomobianco/ontologist)

A Python library for validating RDF data alignment with ontologies without requiring shape resources.

- **Github repository**: <https://github.com/atomobianco/ontologist/>

## Why?

When working with Large Language Models (LLMs) to extract RDF data based on ontologies, it's crucial to verify that the extracted data aligns correctly with the target ontology.
While tools like [pySHACL](https://github.com/RDFLib/pySHACL) or [PyShEx](https://github.com/hsolbrig/PyShEx) exist for RDF validation, they may require additional shape resources, or may fail on certain validation checks.

This library provides a programmatic approach to verify ontology alignment, making it particularly suitable for:

- Validating LLM-extracted RDF data
- Working with ontologies that lack shape definitions
- Getting detailed violation reports for debugging and improvement

## Installation

```bash
pip install ontologist
```

## Quick Start

```python
from rdflib import Graph
from ontologist import validate

# Load your ontology and data graphs
data = Graph().parse("your_data.ttl")
ontology = Graph().parse("your_ontology.ttl")

# Validate the data
is_valid, violations, report = validate(data, ontology)

print(report)
```

```
Validation Report
Conforms: False
Results (1):
PROPERTY type violation:
	Property 'ex:Prop1' of instance 'ex:Class1' can't have value of type 'http://www.w3.org/2001/XMLSchema#string' because it requires type 'http://www.w3.org/2001/XMLSchema#integer'.

```
md-streamer 0.1.0
streaming markdown parser
Requires Python: >=3.9

# Streaming Markdown to HTML Converter (md_streamer-py)
 
## Overview
This repository provides a lightweight and efficient Python package for converting streaming Markdown content into HTML in real-time. It is designed for applications that need dynamic Markdown rendering, such as live blogging, documentation platforms, and chat applications.

## Features
- **Streaming Conversion**: Processes Markdown input incrementally and converts it to HTML on the fly.
- **Lightweight and Fast**: Optimized for performance and minimal resource usage.
- **Easy Integration**: Can be used as a standalone module or integrated into larger applications.

## Installation

```sh
pip install md-streamer
```

## Usage

### Basic Example
```python
from md_streamer import MDStreamer

md_stream_obj = MDStreamer()

example_content = """Certainly! To split a string in Python, you can use the built-in `split()` method, which divides a string into a list of substrings based on a specified delimiter. By default, it splits on whitespace."""

for md_text in example_content.split(): 
    html_text = md_stream_obj.process_chunk(f" {md_text}")
    print(html_text)
```

### When stream ends to get final output
``` python
html_text = md_stream_obj.process_chunk("", last=True)
print(html_text)
```

### Async Example
```python
import asyncio
from md_streamer import MDStreamer

md_stream_obj = MDStreamer()

example_content = """Certainly! To split a string in Python, you can use the built-in `split()` method, which divides a string into a list of substrings based on a specified delimiter. By default, it splits on whitespace."""

async def md_to_html(text):
    for md_text in text.split(): 
        print(await md_stream_obj.aprocess_chunk(f" {md_text}")))
    print(await md_stream_obj.aprocess_chunk("", last=True))

asyncio.run(md_to_html(example_text))
```

## Contributing
Contributions are welcome! Please fork the repository and submit a pull request with your improvements.

## License
This project is licensed under the Apache License. See the `LICENSE` file for details.