Skip to main content

Automatyczne generowanie API na podstawie opisu tekstowego z wykorzystaniem NLP i Ollama

Project description

text2api 🚀

Automatyczne generowanie API z opisu tekstowego używając NLP i Ollama

text2api to zaawansowane narzędzie, które automatycznie generuje kompletne API na podstawie opisu w języku naturalnym. Wykorzystuje modele językowe (Ollama) do analizy tekstu i generuje kod, dokumentację, testy i pliki Docker.

✨ Cechy

  • 🤖 NLP Analysis - Inteligentna analiza tekstu używając Ollama
  • 🌍 Wielojęzyczność - Obsługa polskiego, angielskiego i innych języków
  • 🔧 Wiele protokołów - REST, GraphQL, gRPC, WebSocket, CLI
  • 📦 Kompletne projekty - Kod + Docker + testy + dokumentacja
  • Framework'i - FastAPI, Flask, Graphene, Click i inne
  • 🔐 Autoryzacja - JWT, OAuth, basic auth
  • 💾 Bazy danych - PostgreSQL, SQLite, MongoDB
  • 🐳 Docker ready - Gotowe do deploymentu

🚀 Szybki start

Wymagania wstępne

  • Python 3.9+
  • Poetry (zalecane do zarządzania zależnościami)
  • Ollama (dla analizy NLP)
  • Docker (opcjonalnie, dla konteneryzacji)

Instalacja z użyciem Makefile

# Klonuj repozytorium
git clone https://github.com/veridock/text2api.git
cd text2api

# Zainstaluj zależności (wykonuje również `poetry install`)
make install

# Zainstaluj zależności deweloperskie
make install-dev

# Aktywuj środowisko Poetry
poetry shell

Dostępne komendy Makefile

  • make install - Instaluje główne zależności projektu
  • make install-dev - Instaluje zależności deweloperskie
  • make publish - Publikuje pakiet do PyPI
  • make clean - Czyści wygenerowane pliki
  • make test - Uruchamia testy
  • make format - Formatuje kod źródłowy
  • make lint - Sprawdza jakość kodu

Uruchomienie z Dockerem

# Zbuduj i uruchom kontenery
docker-compose up -d

# Użyj text2api
docker-compose exec text2api text2api generate "API do zarządzania użytkownikami"

📋 Wymagania systemowe

  • Python 3.9+
  • Poetry - do zarządzania zależnościami
  • Ollama - dla analizy NLP (zalecany model: llama3.1:8b)
  • Docker (opcjonalnie) - dla konteneryzacji
  • Git - do kontroli wersji

Instalacja Ollama

# Linux/Mac
curl -fsSL https://ollama.ai/install.sh | sh

# Uruchom serwer
ollama serve

# Pobierz zalecany model
ollama pull llama3.1:8b

🛠️ Rozwój projektu

Konfiguracja środowiska

  1. Sklonuj repozytorium:

    git clone https://github.com/veridock/text2api.git
    cd text2api
    
  2. Zainstaluj zależności:

    make install
    make install-dev
    
  3. Skonfiguruj Ollama:

    # Uruchom serwer Ollama
    ollama serve
    
    # Pobierz zalecany model
    ollama pull llama3.1:8b
    

Publikacja nowej wersji

  1. Zaktualizuj wersję w pyproject.toml
  2. Zatwierdź zmiany i utwórz tag:
    git add .
    git commit -m "Bump version to X.Y.Z"
    git tag -a vX.Y.Z -m "Version X.Y.Z"
    git push --tags
    
  3. Opublikuj nową wersję:
    make publish
    

💡 Przykłady użycia

Podstawowe użycie

# Generuj REST API
text2api generate "API do zarządzania produktami sklepu z kategoriami i cenami"

# Wymusi określony typ
text2api generate "System czatu" --type websocket

# Określ framework
text2api generate "Blog API" --framework flask

# Bez Dockera
text2api generate "Todo API" --no-docker

Tryb interaktywny

text2api generate-from-file --interactive

Sprawdź status

# Sprawdź Ollama i modele
text2api check

# Lista projektów
text2api list-projects

# Info o projekcie
text2api info ./generated_apis/my_api

Z pliku

# Utwórz plik opisu
echo "API dla systemu rezerwacji hoteli z pokojami i gośćmi" > api_description.txt

# Generuj z pliku
text2api generate-from-file --file api_description.txt

🎯 Obsługiwane typy API

🌐 REST API

  • FastAPI - Nowoczesne, szybkie API z automatyczną dokumentacją
  • Flask - Klasyczny, prosty framework
  • Automatyczna walidacja Pydantic
  • OpenAPI/Swagger dokumentacja
  • Middleware CORS
  • Autoryzacja JWT

📊 GraphQL

  • Graphene - Pełna implementacja GraphQL
  • Schema auto-generation
  • Resolvers dla CRUD operacji
  • Subscription support dla real-time

⚡ gRPC

  • Protocol Buffers - Definicje schema
  • Wysokowydajne RPC
  • Streaming support
  • Multi-platform compatibility

🔌 WebSocket

  • Real-time komunikacja
  • Event-driven architecture
  • Room management
  • Broadcasting

🖥️ CLI Tools

  • Click framework
  • Argumenty i opcje
  • Kolorowe output (Rich)
  • Pluggable commands

📁 Struktura projektu

text2api/
├── text2api/         # Pakiet Pythona
│   ├── core/         # Analiza tekstu i specyfikacje API
│   │   ├── analyzer.py
│   │   ├── api_spec.py
│   │   └── __init__.py
│   ├── generators/   # Generatory kodu dla różnych framework'ów
│   │   ├── flask_gen.py
│   │   ├── fastapi_gen.py
│   │   ├── graphql_gen.py
│   │   ├── grpc_gen.py
│   │   ├── websocket_gen.py
│   │   ├── cli_gen.py
│   │   └── __init__.py
│   ├── llm/         # Integracja z Ollama
│   │   ├── client.py
│   │   ├── model.py
│   │   ├── prompts.py
│   │   └── __init__.py
│   ├── utils/        # Narzędzia pomocnicze
│   │   ├── docker_utils.py
│   │   ├── file_utils.py
│   │   ├── validation.py
│   │   └── __init__.py
│   └── examples/     # Przykłady API
│       └── __init__.py
├── tests/            # Testy jednostkowe i integracyjne
│   ├── test_core.py
│   ├── test_generators.py
│   └── conftest.py
└── docs/             # Dokumentacja

Struktura wygenerowanego projektu

generated_api/
├── main.py              # Główny plik aplikacji
├── models.py            # Modele danych
├── requirements.txt     # Zależności Python
├── Dockerfile          # Konfiguracja kontenera
├── docker-compose.yml  # Środowisko deweloperskie
├── .env.example        # Przykładowe zmienne środowiskowe
├── README.md           # Dokumentacja projektu
├── tests/              # Testy automatyczne
│   ├── test_api.py
│   └── conftest.py
└── docs/               # Dokumentacja
    ├── api.md
    └── deployment.md

🎨 Przykłady opisów

Proste API

"API do zarządzania książkami z autorami i kategoriami"
"System logowania użytkowników z rejestracją"
"Todo list z projektami i terminami"

Złożone systemy

"E-commerce platform z produktami, koszykiem, płatnościami, 
użytkownikami, zamówieniami, recenzjami i systemem promocji"

"System zarządzania projektami z zadaniami, zespołami, 
timetrackingiem, raportami i integracjami Git"

Różne protokoły

"GraphQL API dla mediów społecznościowych"  # -> GraphQL
"Mikrousługa płatności"                     # -> gRPC  
"Serwer czatu w czasie rzeczywistym"        # -> WebSocket
"CLI do konwersji plików"                   # -> Click

🔧 Konfiguracja

Zmienne środowiskowe

# .env
OLLAMA_URL=http://localhost:11434
GENERATED_APIS_DIR=./generated_apis
DEFAULT_FRAMEWORK=fastapi
DEFAULT_DATABASE=postgresql
SECRET_KEY=your-secret-key

Konfiguracja Ollama

# Sprawdź dostępne modele
text2api models

# Pobierz zalecane modele
ollama pull llama3.1:8b
ollama pull llama3.1:7b
ollama pull codellama:7b

🐳 Docker

Rozwój lokalny

# Zbuduj obraz
docker build -t text2api .

# Uruchom z volumami
docker run -v $(pwd)/generated_apis:/app/generated_apis \
           -v /var/run/docker.sock:/var/run/docker.sock \
           text2api generate "My API description"

Docker Compose

# Pełne środowisko
docker-compose up -d

# Tylko podstawowe usługi
docker-compose up -d ollama text2api postgres

# Sprawdź logi
docker-compose logs -f text2api

Usługi w Docker Compose

  • ollama - Serwer LLM na porcie 11434
  • text2api - Główne narzędzie
  • postgres - Baza danych na porcie 5432
  • redis - Cache na porcie 6379
  • nginx - Reverse proxy na porcie 80
  • adminer - Web UI bazy danych na porcie 8080
  • portainer - Docker management na porcie 9000
  • jupyter - Notebooks na porcie 8888

🧪 Testy

# Uruchom testy
poetry run pytest

# Z coverage
poetry run pytest --cov=text2api

# Testy konkretnego modułu
poetry run pytest tests/test_analyzer.py

📚 Dokumentacja API

Każde wygenerowane API zawiera:

  • OpenAPI/Swagger - Interaktywna dokumentacja
  • README.md - Instrukcje instalacji i użycia
  • docs/api.md - Szczegółowa dokumentacja endpointów
  • docs/deployment.md - Instrukcje wdrożenia

Dostęp do dokumentacji

# FastAPI
http://localhost:8000/docs      # Swagger UI
http://localhost:8000/redoc     # ReDoc

# Flask
http://localhost:5000/swagger   # Flask-RESTX

🔌 Integracje

Model Context Protocol (MCP)

text2api obsługuje MCP do zaawansowanej integracji z LLM:

from text2api.core.mcp_integration import MCPIntegration

mcp = MCPIntegration()
enhanced_spec = await mcp.enhance_spec(api_spec)

Zewnętrzne API

Automatyczne rozpoznawanie i generowanie klientów dla:

  • REST APIs
  • GraphQL endpoints
  • Third-party services
  • Database connections

🎯 Roadmap

v0.2.0

  • Więcej frameworków (Django, Spring Boot)
  • TypeScript/Node.js support
  • Automatic OpenAPI import
  • Cloud deployment templates

v0.3.0

  • Visual API designer
  • Real-time collaboration
  • CI/CD integration
  • Performance optimization

v1.0.0

  • Production-ready
  • Enterprise features
  • SaaS platform
  • Plugin ecosystem

🤝 Wkład w projekt

Zapraszamy do współpracy!

# Fork repozytorium
git clone https://github.com/yourusername/text2api.git

# Utwórz branch dla feature
git checkout -b feature/amazing-feature

# Zacommituj zmiany
git commit -m "Add amazing feature"

# Push do brancha
git push origin feature/amazing-feature

# Utwórz Pull Request

Standardy kodu

  • Black - formatowanie kodu
  • isort - sortowanie importów
  • flake8 - linting
  • mypy - type checking
  • pytest - testy
# Uruchom wszystkie sprawdzenia
poetry run black text2api/
poetry run isort text2api/
poetry run flake8 text2api/
poetry run mypy text2api/
poetry run pytest

🐛 Zgłaszanie błędów

Znalazłeś błąd? Utwórz issue

Podaj:

  • Opis problemu
  • Kroki do reprodukcji
  • Oczekiwane zachowanie
  • Wersję text2api i Python
  • Logi błędów

📄 Licencja

MIT License - zobacz LICENSE dla szczegółów.

👥 Autorzy

🙏 Podziękowania

  • Ollama - Za wspaniały lokalny LLM server
  • FastAPI - Za nowoczesny framework API
  • Anthropic - Za inspirację i wsparcie AI
  • Community - Za feedback i contribucje

📞 Wsparcie


Made with ❤️ and 🤖 AI

text2api - Transform ideas into APIs instantly

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

text2api-0.1.2.tar.gz (63.8 kB view details)

Uploaded Source

Built Distribution

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

text2api-0.1.2-py3-none-any.whl (75.4 kB view details)

Uploaded Python 3

File details

Details for the file text2api-0.1.2.tar.gz.

File metadata

  • Download URL: text2api-0.1.2.tar.gz
  • Upload date:
  • Size: 63.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.1.3 CPython/3.13.3 Linux/6.15.3-200.fc42.x86_64

File hashes

Hashes for text2api-0.1.2.tar.gz
Algorithm Hash digest
SHA256 0f9a233c4365f3353d781ba238fde92227d52dc5c6859de546d1b5e1ddb7169b
MD5 0832f79d6d1f1caa55e593495b526fb3
BLAKE2b-256 50d22103d6f3ad4f8250829a56e402850b16228eea5921b5194358b3d9c1e95a

See more details on using hashes here.

File details

Details for the file text2api-0.1.2-py3-none-any.whl.

File metadata

  • Download URL: text2api-0.1.2-py3-none-any.whl
  • Upload date:
  • Size: 75.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.1.3 CPython/3.13.3 Linux/6.15.3-200.fc42.x86_64

File hashes

Hashes for text2api-0.1.2-py3-none-any.whl
Algorithm Hash digest
SHA256 1a9620cc4f48b09701174b6f63cbc71d5fa39ffda1dba807dff9643843cc32ba
MD5 eb9d7fb81aecd1297746324414f7fea0
BLAKE2b-256 1702ff71f7c15efce5735498be2c7000c36baf7135388e13ab8a03a170f721e0

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