Automated API package generator with LLM integration
Project description
APIpack - Architektura Systemu
APIpack ๐
Automated API Package Generator with LLM Integration
APIpack is a powerful framework that generates complete API packages from function specifications using local LLM models (Mistral 7B) and customizable templates. Focus on writing business logic while APIpack handles all the interface boilerplate.
โจ Features
- ๐ค LLM-Powered: Uses Mistral 7B for intelligent function generation
- ๐ฏ Multi-Interface: Generates REST, gRPC, GraphQL, WebSocket, and CLI interfaces
- ๐ Multi-Language: Supports Python, JavaScript, Go, Rust, and more
- ๐ฆ Template System: Extensible template engine with built-in and custom templates
- ๐ Plugin Architecture: Easy to extend with custom interfaces and generators
- ๐ณ Deployment Ready: Includes Docker, Kubernetes, and CI/CD configurations
- ๐งช Test Generation: Automatically generates comprehensive test suites
- ๐ Documentation: Auto-generates API docs, README files, and examples
๐ Quick Start
Installation
pip install apipack
Prerequisites
- Install Ollama (for local LLM):
curl -fsSL https://ollama.ai/install.sh | sh
ollama pull mistral:7b
- Start Ollama server:
ollama serve
Generate Your First API Package
- Create a function specification:
apipack init --name pdf_to_text --description "Extract text from PDF files"
- Edit the generated
function_spec.yml:
name: pdf_to_text
description: Extract text from PDF files
input_type: bytes
output_type: string
interfaces:
- rest
- grpc
- cli
dependencies:
- PyPDF2>=3.0.0
- Generate the package:
apipack generate function_spec.yml --language python --output ./my-pdf-service
- Build and run:
cd my-pdf-service
docker build -t pdf-service .
docker run -p 8080:8080 pdf-service
- Test your API:
curl -X POST -F "file=@document.pdf" http://localhost:8080/extract
๐ Example Specifications
Simple Function
name: image_resize
description: Resize images to specified dimensions
input_type: bytes
output_type: bytes
parameters:
- name: image_data
type: bytes
required: true
- name: width
type: int
default: 800
- name: height
type: int
default: 600
interfaces:
- rest
- cli
Complex Service
project:
name: document-processor
description: Multi-format document processing service
functions:
- name: pdf_to_text
description: Extract text from PDF
input_type: bytes
output_type: string
- name: html_to_pdf
description: Convert HTML to PDF
input_type: string
output_type: bytes
- name: image_to_text
description: OCR for images
input_type: bytes
output_type: string
interfaces: [rest, grpc, websocket]
language: python
๐๏ธ Architecture
โโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโ
โ Function โ โ Mistral 7B โ โ Templates โ
โ Specifications โโโโโถโ (Logic Gen) โ โ (Interfaces) โ
โโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโ
โ โ
โผ โผ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ APIpack Engine โ
โ โโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโ โ
โ โ Parser โ โ Generator โ โ
โ โโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโ โ
โ โโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโ โ
โ โ Validator โ โ Deployer โ โ
โ โโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
โผ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Generated Package โ
โ โโโโโโโโโโโ โโโโโโโโโโโ โโโโโโโโ โ
โ โ REST โ โ gRPC โ โ CLI โ โ
โ โโโโโโโโโโโ โโโโโโโโโโโ โโโโโโโโ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
๐ ๏ธ CLI Commands
Core Commands
# Generate package from specification
apipack generate spec.yml --language python --interfaces rest,grpc
# Validate specification file
apipack validate spec.yml
# Initialize new specification
apipack init --name my_function
# List available templates
apipack templates
# Show current configuration
apipack config
# Health check
apipack health
Advanced Usage
# Generate with custom output directory
apipack generate spec.yml -o ./custom-output --language go
# Dry run (preview without generating)
apipack generate spec.yml --dry-run
# Build generated package
apipack build ./generated-package --type docker --push
# Generate with specific interfaces
apipack generate spec.yml -i rest -i grpc -i websocket
๐ฏ Supported Interfaces
| Interface | Description | Status |
|---|---|---|
| REST | HTTP/JSON API with OpenAPI docs | โ |
| gRPC | High-performance RPC | โ |
| GraphQL | Query language API | โ |
| WebSocket | Real-time bidirectional communication | โ |
| CLI | Command-line interface | โ |
| Async | Async/await patterns | ๐ง |
๐ Supported Languages
| Language | Status | Features |
|---|---|---|
| Python | โ | FastAPI, asyncio, type hints |
| JavaScript | โ | Express, async/await, ESM |
| TypeScript | โ | Type safety, decorators |
| Go | โ | Goroutines, channels, modules |
| Rust | ๐ง | Memory safety, performance |
| Java | ๐ง | Spring Boot, annotations |
๐ฆ Template System
APIpack uses a flexible template system that can be extended:
Built-in Templates
templates/
โโโ interfaces/
โ โโโ rest/ # REST API templates
โ โโโ grpc/ # gRPC service templates
โ โโโ graphql/ # GraphQL schema templates
โ โโโ cli/ # CLI application templates
โโโ languages/
โ โโโ python/ # Python-specific templates
โ โโโ javascript/ # JavaScript-specific templates
โ โโโ go/ # Go-specific templates
โโโ deployment/
โโโ docker/ # Docker configurations
โโโ kubernetes/ # K8s manifests
โโโ ci/ # CI/CD pipelines
Custom Templates
Create custom templates in ~/.apipack/templates/:
# ~/.apipack/templates/my-interface/template.yml
name: my-interface
category: interface
language: python
description: Custom interface template
files:
- src: server.py.j2
dest: "{{ interface_type }}/server.py"
- src: client.py.j2
dest: "{{ interface_type }}/client.py"
โ๏ธ Configuration
Global Configuration
Create ~/.apipack/config.yml:
llm:
provider: mistral
model: mistral:7b
temperature: 0.1
max_tokens: 2048
templates:
auto_discover: true
cache_enabled: true
validation_level: strict
output:
format: package
include_tests: true
include_docs: true
Project Configuration
Create project.apipack.yml in your project:
name: my-api-service
language: python
interfaces:
- rest
- grpc
functions:
- spec: functions/pdf_processor.yml
- spec: functions/image_resizer.yml
deployment:
docker:
base_image: python:3.11-slim
kubernetes:
replicas: 3
๐ Plugin Development
Create custom plugins to extend APIpack:
# plugins/my_plugin.py
from apipack.plugins import BasePlugin
class MyInterfacePlugin(BasePlugin):
name = "my-interface"
def generate(self, function_specs, language, output_dir):
# Custom generation logic
return generated_files
def validate(self, generated_files):
# Custom validation logic
return validation_result
Register plugin:
from apipack.plugins import register_plugin
register_plugin(MyInterfacePlugin())
๐ Examples
PDF Processing Service
git clone https://github.com/apipack/examples
cd examples/pdf-processor
apipack generate config.yml
docker-compose up
Image Resize API
apipack init --name image_resize
# Edit function_spec.yml
apipack generate function_spec.yml --language go --interfaces rest,grpc
Multi-Function Service
# multi-service.yml
project:
name: document-tools
functions:
- name: pdf_to_text
input_type: bytes
output_type: string
- name: html_to_pdf
input_type: string
output_type: bytes
- name: compress_image
input_type: bytes
output_type: bytes
interfaces: [rest, grpc]
language: python
๐งช Testing
Generated packages include comprehensive tests:
# Run tests in generated package
cd generated-package
pytest tests/ --cov=src --cov-report=html
# Integration tests
python -m pytest tests/integration/
# Load tests
locust -f tests/load/locustfile.py
๐ Deployment
Docker
# Generated Dockerfile is production-ready
docker build -t my-service .
docker run -p 8080:8080 my-service
Kubernetes
# Apply generated manifests
kubectl apply -f kubernetes/
Cloud Platforms
# Deploy to various platforms
apipack deploy --platform heroku
apipack deploy --platform aws-lambda
apipack deploy --platform gcp-cloud-run
๐ Monitoring & Observability
Generated services include:
- Health Checks:
/healthendpoint - Metrics: Prometheus metrics
- Logging: Structured logging with correlation IDs
- Tracing: OpenTelemetry integration
- Documentation: Auto-generated OpenAPI/gRPC docs
๐ค Contributing
We welcome contributions! See CONTRIBUTING.md for guidelines.
Development Setup
git clone https://github.com/apipack/apipack
cd apipack
pip install -e ".[dev]"
pre-commit install
Running Tests
pytest tests/ --cov=apipack
๐ License
MIT License - see LICENSE file for details.
๐ Links
- Documentation: https://apipack.readthedocs.io
- GitHub: https://github.com/apipack/apipack
- PyPI: https://pypi.org/project/apipack
- Discord: https://discord.gg/apipack
๐ Support
- ๐ Documentation: Comprehensive guides and API reference
- ๐ฌ Discord: Community support and discussions
- ๐ Issues: Bug reports and feature requests on GitHub
- ๐ง Email: team@apipack.dev for enterprise support
๐ฏ Roadmap
- v0.2: Rust and Java language support
- v0.3: GraphQL and WebSocket interfaces
- v0.4: Cloud-native deployment templates
- v0.5: Visual interface builder
- v1.0: Production-ready release
Made with โค๏ธ by the APIpack team
๐ฏ Cel projektu
APIpack to framework do automatycznego generowania pakietรณw API z funkcji biznesowych przy uลผyciu lokalnych modeli LLM (Mistral 7B) i systemu szablonรณw.
๐๏ธ Architektura wysokiego poziomu
โโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโ
โ User Input โ โ Mistral 7B โ โ Templates โ
โ (Functions) โโโโโถโ (Logic Gen) โ โ (Interface) โ
โโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโ
โ โ
โผ โผ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ APIpack Core Engine โ
โ โโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโ โ
โ โ Parser โ โ Generator โ โ
โ โโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโ โ
โ โโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโ โ
โ โ Validator โ โ Deployer โ โ
โ โโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ
โผ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
โ Generated Package โ
โ โโโโโโโโโโโ โโโโโโโโโโโ โโโโโโโโ โ
โ โ REST โ โ gRPC โ โ CLI โ โ
โ โโโโโโโโโโโ โโโโโโโโโโโ โโโโโโโโ โ
โโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโโ
๐ Struktura projektu
apipack/
โโโ apipack/ # Main package
โ โโโ __init__.py
โ โโโ core/ # Core engine
โ โ โโโ __init__.py
โ โ โโโ engine.py # Main orchestrator
โ โ โโโ parser.py # Function spec parser
โ โ โโโ generator.py # Code generator
โ โ โโโ validator.py # Generated code validator
โ โ โโโ deployer.py # Deployment manager
โ โโโ llm/ # LLM integration
โ โ โโโ __init__.py
โ โ โโโ mistral_client.py # Mistral 7B client
โ โ โโโ prompt_manager.py # Prompt templates
โ โ โโโ response_parser.py # LLM response parser
โ โโโ templates/ # Template system
โ โ โโโ __init__.py
โ โ โโโ base/ # Base templates
โ โ โโโ interfaces/ # Interface templates
โ โ โ โโโ rest/
โ โ โ โโโ grpc/
โ โ โ โโโ graphql/
โ โ โ โโโ websocket/
โ โ โ โโโ cli/
โ โ โโโ languages/ # Language-specific templates
โ โ โ โโโ python/
โ โ โ โโโ javascript/
โ โ โ โโโ golang/
โ โ โ โโโ rust/
โ โ โโโ registry.py # Template registry
โ โโโ plugins/ # Plugin system
โ โ โโโ __init__.py
โ โ โโโ base_plugin.py
โ โ โโโ builtin/ # Built-in plugins
โ โโโ config/ # Configuration
โ โ โโโ __init__.py
โ โ โโโ settings.py
โ โ โโโ schemas.py
โ โโโ utils/ # Utilities
โ โโโ __init__.py
โ โโโ file_utils.py
โ โโโ docker_utils.py
โ โโโ test_utils.py
โโโ examples/ # Example projects
โโโ tests/ # Test suite
โโโ docs/ # Documentation
โโโ scripts/ # Setup scripts
โโโ pyproject.toml # Project configuration
โโโ requirements.txt # Dependencies
โโโ README.md # Main documentation
โโโ setup.py # Package setup
๐ Przepลyw pracy
1. Input Processing
function_spec = {
"name": "pdf_to_text",
"description": "Extract text from PDF files",
"input_type": "bytes",
"output_type": "string",
"interfaces": ["rest", "grpc", "cli"]
}
2. LLM Function Generation
- Mistral 7B generuje implementacjฤ funkcji
- Optimized prompts dla rรณลผnych jฤzykรณw
- Walidacja i sanityzacja kodu
3. Template Processing
- Wybรณr odpowiednich szablonรณw
- Generowanie interfejsรณw API
- Integracja z funkcjami biznesowymi
4. Package Assembly
- Kompilacja wszystkich komponentรณw
- Generowanie testรณw
- Przygotowanie deployment files
๐งฉ Komponenty systemu
Core Engine
- Parser: Analizuje specyfikacjฤ funkcji
- Generator: Orkiestruje generowanie kodu
- Validator: Sprawdza poprawnoลฤ kodu
- Deployer: Zarzฤ dza wdroลผeniem
LLM Integration
- Mistral Client: Interface do Mistral 7B
- Prompt Manager: Zarzฤ dza promptami
- Response Parser: Przetwarza odpowiedzi LLM
Template System
- Registry: Rejestr dostฤpnych szablonรณw
- Base Templates: Podstawowe struktury
- Interface Templates: Szablony interfejsรณw
- Language Templates: Szablony jฤzykowe
Plugin System
- Base Plugin: Abstrakcyjna klasa bazowa
- Built-in Plugins: Wbudowane rozszerzenia
- Custom Plugins: Moลผliwoลฤ dodawania wลasnych
๐ Extensibility Points
1. Nowe Interfejsy
# plugins/custom_interface.py
class CustomInterfacePlugin(BasePlugin):
def generate(self, function_spec):
# Custom interface generation logic
pass
2. Nowe Jฤzyki
# templates/languages/kotlin/config.yml
language: kotlin
extension: .kt
runtime: jvm
dependencies:
- kotlinx-coroutines-core
3. Nowe LLM Providers
# llm/custom_provider.py
class CustomLLMProvider(BaseLLMProvider):
def generate_function(self, spec):
# Custom LLM integration
pass
๐ Konfiguracja
Global Settings
# config/default.yml
llm:
provider: mistral
model: mistral:7b
temperature: 0.1
max_tokens: 2048
templates:
auto_discover: true
cache_enabled: true
validation_level: strict
output:
format: package
include_tests: true
include_docs: true
Project Settings
# project.apipack.yml
name: my-api-service
language: python
interfaces:
- rest
- grpc
functions:
- spec: functions/pdf_to_text.yml
- spec: functions/image_resize.yml
๐ฏ Rozszerzalnoลฤ
Template Discovery
System automatycznie odkrywa nowe szablony w:
~/.apipack/templates/./templates/- Package templates
Plugin Loading
Plugins sฤ ลadowane z:
- Built-in plugins
~/.apipack/plugins/- Project plugins directory
Custom Generators
Moลผliwoลฤ dodania wลasnych generatorรณw:
@register_generator("custom-api")
class CustomAPIGenerator(BaseGenerator):
def generate(self, spec):
# Custom generation logic
pass
๐ API Usage
Programmatic API
from apipack import APIPackEngine
engine = APIPackEngine()
package = engine.generate_package(
function_specs=[pdf_to_text_spec],
interfaces=["rest", "grpc"],
language="python"
)
package.deploy()
CLI Interface
apipack generate \
--spec functions.yml \
--interfaces rest,grpc \
--language python \
--output ./generated
Configuration-based
apipack build --config project.apipack.yml
๐ Monitoring & Observability
Metrics Collection
- Generation time
- Template usage
- LLM token consumption
- Success/failure rates
Logging
- Structured logging
- Debug modes
- Performance profiling
Health Checks
- Template validation
- LLM connectivity
- Generated code syntax check
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file apipack-0.1.1.tar.gz.
File metadata
- Download URL: apipack-0.1.1.tar.gz
- Upload date:
- Size: 41.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/2.1.3 CPython/3.11.12 Linux/6.14.9-300.fc42.x86_64
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d23ffe66b4489703090625ee91f9adde6ddb4c3f36bf86fd69f47bca0bb03abe
|
|
| MD5 |
f1802aa57375dc1c79ef9d416ac6f8e6
|
|
| BLAKE2b-256 |
9c62e24bc9b076ffa1c0223d9d884cfdf2deccf364e22d036387c88dc75b37af
|
File details
Details for the file apipack-0.1.1-py3-none-any.whl.
File metadata
- Download URL: apipack-0.1.1-py3-none-any.whl
- Upload date:
- Size: 37.8 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/2.1.3 CPython/3.11.12 Linux/6.14.9-300.fc42.x86_64
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
97dd2ba8ce53289dfc007f5e7fc3100c17fb465e559404a1b4c320862234a19f
|
|
| MD5 |
51413f1cab5ee351841150018de0d375
|
|
| BLAKE2b-256 |
2b76bd47186558b95a9932fc8cd5332aaee9c607e8fcfe7c27a0c33644ecdc4f
|