Skip to main content

Dynamiczny procesor danych z automatycznym wykrywaniem bibliotek

Project description

Runy - Dynamiczny Procesor Danych

run LLM procesor on python with dynamic inlcuding and building pipelines based on imported libraries just based on Natural Command Sentence

System automatycznego przetwarzania danych z wykorzystaniem LLM (Mistral 7B) do interpretacji żądań w języku naturalnym i dynamicznego instalowania bibliotek Python.

🚀 Funkcje

  • Interpretacja języka naturalnego: Przetwarzanie żądań w zwykłym języku polskim
  • Dynamiczne zarządzanie bibliotekami: Automatyczna instalacja wymaganych pakietów Python
  • Lokalna skrzynka IMAP: Testowa skrzynka pocztowa z przykładowymi wiadomościami
  • Integracja z Ollama: Wykorzystanie modelu Mistral 7B do analizy żądań
  • Organizacja plików: Automatyczne sortowanie emaili według dat w strukturze folderów

📋 Wymagania

  • Docker & Docker Compose
  • Python 3.11+ (dla lokalnego uruchamiania)
  • Poetry (dla lokalnego uruchamiania)

🔧 Instalacja i uruchomienie

1. Klonowanie i przygotowanie

git clone <repository>
cd runy

2. Utworzenie przykładowych emaili

python setup_test_emails.py

3. Uruchomienie z Docker

# Zbuduj i uruchom wszystkie serwisy
docker-compose up --build

# Lub w tle
docker-compose up -d --build

4. Uruchomienie lokalne (opcjonalnie)

# Zainstaluj zależności
poetry install

# Uruchom główny skrypt
poetry run python run.py

🏗️ Architektura

runy/
├── src/
│   ├── processor_engine.py    # Główny silnik procesora
│   └── llm_analyzer.py        # Analizator LLM
├── docker/
│   ├── dovecot.conf          # Konfiguracja serwera IMAP
│   ├── users                 # Dane użytkowników
│   └── mail/                 # Folder z wiadomościami
├── output/                   # Folder wynikowy
├── run.py                    # Główny skrypt
├── .env                      # Konfiguracja
└── docker-compose.yml        # Definicja serwisów

📧 Przykładowe użycie

Po uruchomieniu systemu, procesor automatycznie:

  1. Analizuje żądanie:

    "Pobierz wszystkie wiadomości email ze skrzynki IMAP i zapisz je w folderach 
    uporządkowanych według roku i miesiąca w formacie skrzynka/rok.miesiąc/*.eml"
    
  2. Wykrywa wymagane biblioteki: imaplib, email

  3. Instaluje biblioteki: Automatycznie instaluje wymagane pakiety

  4. Łączy się z IMAP: Wykorzystuje dane z .env do połączenia

  5. Pobiera emaile: Pobiera wszystkie wiadomości ze skrzynki

  6. Organizuje pliki: Tworzy strukturę folderów:

    output/
    └── skrzynka/
        ├── 2024.11/
        │   ├── email_1.eml
        │   └── email_2.eml
        ├── 2024.12/
        │   └── email_3.eml
        └── 2025.06/
            ├── email_4.eml
            └── email_5.eml
    

🔧 Konfiguracja

Zmienne środowiskowe (.env)

# Konfiguracja IMAP
IMAP_SERVER=localhost          # Adres serwera IMAP
IMAP_PORT=143                  # Port IMAP
IMAP_USERNAME=testuser@example.com
IMAP_PASSWORD=testpass123
IMAP_USE_SSL=false            # Użycie SSL

# Ścieżki
OUTPUT_DIR=./output           # Folder wyjściowy

# Ollama
OLLAMA_BASE_URL=http://localhost:11434
OLLAMA_MODEL=mistral:7b

# Logowanie
LOG_LEVEL=INFO

Testowa skrzynka IMAP

  • Serwer: localhost:143
  • Użytkownik: testuser@example.com
  • Hasło: testpass123
  • Protokół: IMAP bez SSL

📝 Przykładowe żądania w języku naturalnym

System rozpoznaje różne typy żądań:

1. Pobieranie emaili

"Pobierz wszystkie wiadomości email ze skrzynki IMAP i zapisz je w folderach 
uporządkowanych według roku i miesiąca w formacie skrzynka/rok.miesiąc/*.eml"

2. Filtrowanie po dacie

"Pobierz emaile z ostatnich 30 dni i zapisz je w folderze recent_emails"

3. Filtrowanie po nadawcy

"Pobierz wszystkie emaile od sender@example.com i zapisz je w osobnym folderze"

4. Analiza załączników

"Pobierz emaile z załącznikami i wyodrębnij wszystkie pliki PDF do folderu attachments"

🔍 Monitorowanie

Logi systemu

# Podgląd logów Docker
docker-compose logs -f

# Logi konkretnego serwisu
docker-compose logs -f data-processor
docker-compose logs -f ollama
docker-compose logs -f mailserver

Sprawdzenie statusu Ollama

curl http://localhost:11434/api/tags

Testowanie IMAP

# Telnet do serwera IMAP
telnet localhost 143

# Przykładowe komendy IMAP
a1 LOGIN testuser@example.com testpass123
a2 SELECT INBOX
a3 SEARCH ALL
a4 LOGOUT

🧪 Rozwój i testowanie

Struktura projektu

# Dodawanie nowego procesora
class CustomProcessor:
    def setup(self):
        # Instaluj biblioteki
        pass
    
    def process(self, data):
        # Logika przetwarzania
        return result

Dodawanie nowych szablonów LLM

# W llm_analyzer.py
def _get_custom_processor(self) -> ProcessorConfig:
    code_template = '''
    # Twój kod tutaj
    result = {"status": "completed"}
    '''
    return ProcessorConfig(...)

🔧 Rozwiązywanie problemów

Ollama nie odpowiada

# Restart Ollama
docker-compose restart ollama

# Sprawdź czy model jest pobrany
docker-compose exec ollama ollama list

IMAP connection refused

# Sprawdź status serwera pocztowego
docker-compose restart mailserver

# Sprawdź logi
docker-compose logs mailserver

Błędy instalacji pakietów

# Wyczyść cache pip
docker-compose exec data-processor pip cache purge

# Restart kontenera
docker-compose restart data-processor

📊 Przykładowy wynik działania

{
    "status": "completed",
    "downloaded_files": [
        "output/skrzynka/2024.11/email_1.eml",
        "output/skrzynka/2024.12/email_2.eml", 
        "output/skrzynka/2025.06/email_3.eml"
    ],
    "total_count": 3,
    "folders_created": [
        "output/skrzynka/2024.11",
        "output/skrzynka/2024.12", 
        "output/skrzynka/2025.06"
    ]
}

🚀 Rozszerzenia

System może być rozszerzony o:

  • Więcej procesorów: CSV, JSON, XML, bazy danych
  • Różne protokoły: POP3, Exchange, SMTP
  • Chmura: Integracja z Gmail API, Outlook
  • Analiza treści: NLP, klasyfikacja, sentiment analysis
  • Automatyzacja: Cron jobs, watchdog, webhooks

📄 Licencja

Apache License - zobacz plik LICENSE

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

dun-0.1.4.tar.gz (17.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

dun-0.1.4-py3-none-any.whl (13.3 kB view details)

Uploaded Python 3

File details

Details for the file dun-0.1.4.tar.gz.

File metadata

  • Download URL: dun-0.1.4.tar.gz
  • Upload date:
  • Size: 17.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.1.3 CPython/3.11.12 Linux/6.14.11-300.fc42.x86_64

File hashes

Hashes for dun-0.1.4.tar.gz
Algorithm Hash digest
SHA256 48181889fd7e476c69d4e28ad758688fe35e25697614bb239f49ab463ca117a2
MD5 cbaabd03d3fb810ce1d13e99ed6c35b4
BLAKE2b-256 96111f331a8e5edec5a3f30aa20090aca9030bb1b758849958e21a94fe43e474

See more details on using hashes here.

File details

Details for the file dun-0.1.4-py3-none-any.whl.

File metadata

  • Download URL: dun-0.1.4-py3-none-any.whl
  • Upload date:
  • Size: 13.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.1.3 CPython/3.11.12 Linux/6.14.11-300.fc42.x86_64

File hashes

Hashes for dun-0.1.4-py3-none-any.whl
Algorithm Hash digest
SHA256 7bc73715f7ce61019d0cd6eeb6790e614b3f9346c8c42699961aed7f2b35ba17
MD5 93f254f902fb8d3cbfa77ab517bb0383
BLAKE2b-256 a36665194dc32fa52d3add3df7fc6582d48c630a1201b8d1432683b05c6be823

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page