File size: 3,126 Bytes
1dab660
5fb63e2
 
 
 
1dab660
b1e48a7
32addc8
1dab660
5fb63e2
a010946
1dab660
 
5fb63e2
 
ed9cfa3
5fb63e2
ed9cfa3
5fb63e2
ed9cfa3
 
 
 
5fb63e2
ed9cfa3
5fb63e2
ed9cfa3
 
 
 
5fb63e2
ed9cfa3
5fb63e2
ed9cfa3
5fb63e2
ed9cfa3
5fb63e2
ed9cfa3
 
5fb63e2
ed9cfa3
5fb63e2
ed9cfa3
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
5fb63e2
ed9cfa3
 
 
 
 
 
 
 
 
5fb63e2
 
 
 
ed9cfa3
 
 
5fb63e2
ed9cfa3
5fb63e2
ed9cfa3
5fb63e2
ed9cfa3
5fb63e2
ed9cfa3
5fb63e2
ed9cfa3
 
 
5fb63e2
ed9cfa3
5fb63e2
ed9cfa3
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
---
title: JacekAI - A11y Expert
emoji: 
colorFrom: blue
colorTo: green
sdk: gradio
sdk_version: "6.1.0"
python_version: "3.10"
app_file: app.py
pinned: true
short_description: Inteligentny asystent do spraw dostępności cyfrowej
---

# 🤖 A11y Expert - Asystent Dostępności Cyfrowej

Inteligentny agent AI wyspecjalizowany w dostępności cyfrowej (a11y), wykorzystujący RAG (Retrieval-Augmented Generation) z bazą wiedzy WCAG, ARIA i najlepszych praktyk.

## ✨ Główne Funkcje

- **Obsługa wielu języków**: Płynna rozmowa po polsku i angielsku z automatycznym wykrywaniem języka.
- **Bogata baza wiedzy**: Odpowiedzi oparte na standardach WCAG 2.2, ARIA oraz sprawdzonych praktykach dostępności.
- **Wiarygodne odpowiedzi (RAG)**: Każda odpowiedź jest generowana w oparciu o konkretne źródła z bazy wektorowej, z możliwością cytowania.
- **Streaming odpowiedzi**: Agent generuje odpowiedzi w sposób płynny, token po tokenie.

## 🔧 Architektura i Technologie

- **Interfejs użytkownika**: Gradio
- **Model językowy**: OpenAI GPT-4 (lub nowszy)
- **Wektorowa baza danych**: LanceDB do przechowywania i przeszukiwania wiedzy.
- **Wyszukiwanie semantyczne**: Architektura RAG do precyzyjnego odnajdywania informacji.

---

## 🛠️ Uruchomienie i Rozwój

### 1. Wymagania wstępne

- Python 3.10+
- Klucz API OpenAI

### 2. Instalacja lokalna

1.  **Sklonuj repozytorium:**
    ```bash
    git clone <URL_repozytorium>
    cd <nazwa_repozytorium>
    ```

2.  **Zainstaluj zależności:**
    ```bash
    pip install -r requirements.txt
    ```

3.  **Skonfiguruj zmienne środowiskowe:**
    - Skopiuj plik `.env.example` do `.env`:
      ```bash
      cp .env.example .env
      ```
    - Otwórz plik `.env` i wklej swój klucz API OpenAI:
      ```
      OPENAI_API_KEY="sk-..."
      ```

4.  **Uruchom aplikację:**
    ```bash
    python app.py
    ```
    Aplikacja będzie dostępna pod adresem `http://127.0.0.1:7860`.

### 3. Testowanie

Przed wdrożeniem warto uruchomić prosty test startowy, aby upewnić się, że agent inicjalizuje się poprawnie:
```bash
python test_startup.py
```

---

## ☁️ Wdrożenie na Hugging Face Spaces

Aplikacja jest skonfigurowana do wdrożenia jako Gradio App na Hugging Face Spaces.

### 1. Konfiguracja w Hugging Face

- W ustawieniach swojego Space, w sekcji **Secrets**, dodaj sekret o nazwie `OPENAI_API_KEY` i wklej swój klucz API.

### 2. Kluczowe aspekty wdrożenia

- **Baza danych `lancedb`**: Baza jest tylko do odczytu i musi znajdować się w repozytorium, aby była dostępna dla aplikacji. Zalecane jest użycie `git lfs` do śledzenia katalogu `lancedb/`.
- **Plik `app.py`**: Logika startowa aplikacji jest dostosowana do wymogów HF Spaces - nie używa bloku `if __name__ == "__main__:"` do uruchomienia i nie wymaga ręcznego wywoływania `demo.launch()`.
- **Zarządzanie zasobami**: Mechanizm `atexit` został celowo wyłączony, aby uniknąć przedwczesnego zamykania aplikacji w środowisku HF Spaces.

## 📄 Licencja

Ten projekt służy celom edukacyjnym. Baza wiedzy pochodzi z publicznych źródeł (W3C, MDN).