semvec/pypi-packages huggingface dataset:
busbot-memory 0.1.0
LLM-powered working memory for Vietnamese bus booking bots
License: MIT
Requires Python: >=3.10
Keywords: llm, memory, chatbot, bus-booking, vietnamese, groq, voice-bot

# BusBotMemory SDK

LLM-powered working memory for Vietnamese bus booking bots.

## Installation

```bash
pip install busbot-memory
```

Or install from source:
```bash
cd busbot-memory
pip install -e .
```

## Quick Start

```python
import asyncio
from busbot_memory import BusBotMemory, BusBotConfig

async def main():
    # Configure (set GROQ_API_KEY env var or pass directly)
    config = BusBotConfig(groq_api_key="gsk_xxx")
    
    # Initialize memory for a session
    memory = BusBotMemory(
        session_id="call_001",
        customer_id="0987654321",
        config=config
    )
    
    # Process messages
    result = await memory.process("đặt 2 vé đi đà nẵng ngày mai 8h sáng")
    
    print(result.state.slots)
    # {"destination": "Đà Nẵng", "date": "ngày mai", "time": "08:00", "quantity": 2}

asyncio.run(main())
```

## Features

- **LLM-powered extraction**: Uses Groq (llama-3.3-70b) for accurate entity extraction
- **Change-of-mind detection**: Automatically detects when user changes their booking
- **State tracking**: Maintains structured booking state with missing slot tracking
- **Low latency**: Optimized for < 250ms processing time
- **Fallback support**: Falls back to regex when LLM is unavailable

## Configuration

```python
config = BusBotConfig(
    # LLM Provider (at least one required)
    groq_api_key="gsk_xxx",           # Primary - fast & free
    openai_api_key="sk-xxx",          # Optional fallback
    
    # Performance
    latency_target_ms=250,
    enable_fallback=True,             # Use regex if LLM fails
    
    # Memory settings
    max_working_items=20,
    max_context_window=5,
)
```

## ProcessResult

```python
result = await memory.process(message)

result.entities       # Extracted entities
result.state          # BookingState object
result.is_noise       # Is filler message ("ừ", "ok")
result.is_change      # Did user change their mind
result.changes        # List of changes made
result.intent         # Detected intent
result.latency_ms     # Processing time
```

## License

MIT
propix-gui-analysis 0.1.0
GUI analysis tools for Propix JSON processing
License: MIT
Requires Python: >=3.8

# PROPIX GUI Analysis

A lightweight Python library to **load, inspect, summarize, and visualize JSON frames generated by the PROPIX GUI**.

This package is designed to work directly with PROPIX GUI outputs, including:
- RGB images
- Segmentation masks
- Hyperspectral data (wavelengths and spectra)

It provides a clean, NumPy-friendly API for **analysis, debugging, and visualization**.

---

## ✨ Features

- Load PROPIX GUI JSON frames into Python structures
- Decode base64-encoded RGB images and masks
- Normalize and handle multiple segmentation masks
- Visualize:
  - RGB images
  - Masks (overlayed or individual)
  - RGB + masks
  - Spectral curves
  - RGB + masks + spectra (side-by-side)
- Print a **human-readable frame summary**:
  - Image resolution
  - Mask coverage (percentage of pixels)
  - Spectral range
  - Number of spectral bands
  - Spectral resolution (Δλ)

---

## 📦 Installation

```bash
pip install propix_gui_analysis
```

Or for development:

```bash
pip install -e .
```

---

## 🚀 Quick Start

```python
from propix_gui_analysis.propix_json_analysis import (
    load_frame,
    frame_summary,
    plot_rgb,
    plot_rgb_with_masks,
    plot_masks_only,
    plot_spectra,
    plot_frame_rgb_and_spectra,
)

frame = load_frame("frame.json")
frame_summary(frame)
```

---

## 📂 Frame Structure

```python
frame = {
    "frame_id": int,
    "task_finished": bool,

    "rgb": np.ndarray,          # [H, W, 3]
    "masks": List[np.ndarray],  # list of [H, W] masks (values in [0,1])
    "mask_colors": List[List[float]],  # normalized RGBA colors

    "wavelengths": np.ndarray,  # [N]
    "spectra": {
        "values": np.ndarray,   # [num_masks, N]
        "labels": List[str]
    }
}
```

---

## 🖨️ Frame Summary

```python
frame_summary(frame)
```

---

## 📊 Visualization

- `plot_rgb(frame)`
- `plot_rgb_with_masks(frame)`
- `plot_masks_only(frame)`
- `plot_spectra(frame)`
- `plot_frame_rgb_and_spectra(frame)`

---

## 🔬 Spectral Resolution

Defined as the **average wavelength spacing (Δλ)** between consecutive bands.

---

## 🧰 Dependencies

- Python ≥ 3.8
- NumPy
- Pillow
- Matplotlib

---

## 📄 License

MIT License.