-
Notifications
You must be signed in to change notification settings - Fork 0
Architecture System Generation
Version: 3.1.0
Status: ✅ Vollständig implementiert
Der SystemGenerator erkennt High-Level APIs und generiert vollständige, produktionsreife Systeme automatisch - ohne Boilerplate-Code.
Datei: compiler/src/codegen/system_generator.rs
Funktionalität:
- Erkennt API-Typ automatisch (Chatbot, Database, Auth, REST, Custom)
- Analysiert System-Anforderungen
- Generiert vollständige Komponenten
- Erstellt Integration-Code
- Generiert Deployment-Configs
Der Generator erkennt automatisch den API-Typ durch Analyse des Codes:
Erkannte API-Typen:
-
Chatbot: Erkennt
llm.chat(),llm.generate(),@llm.*Calls -
Database: Erkennt
db.find(),db.save(),db.findAll()Calls -
Authentication: Erkennt
auth.login(),auth.verifyToken(),@AuthDecorator -
REST: Erkennt
@GET,@POST,@PUT,@DELETEDecorators - Custom: Fallback für andere APIs
Beispiele:
// Wird als Chatbot erkannt
@GET("/api/chat")
fn chat(message: string): string {
return await @llm.analyze(message);
}
// Wird als Database API erkannt
@GET("/api/users/:id")
fn getUser(id: string): User {
return db.find(User, id);
}
// Wird als Auth API erkannt
@POST("/api/login")
fn login(username: string, password: string): Result<Token, string> {
return auth.login(username, password);
}
- Server: Axum/Actix-Web Server
- Routing: Automatisches Routing aus Decorators
- Error Handling: Strukturierte Fehlerbehandlung
- Logging: Structured Logging mit Tracing
-
Authentication: JWT/OAuth2 (wenn
needs_auth) -
Rate Limiting: Redis-basiert (wenn
needs_rate_limit) -
AI Client: LLM-Integration via
AIClient(OpenAI, Anthropic) (wennneeds_ai) -
Database: Connection Pool & Auth-Integration (wenn
needs_database) -
Caching: Redis Cache (wenn
needs_caching)
Der Generator analysiert die System-Anforderungen (Requirements) und erstellt automatisch den passenden Routing-Code für den Webserver (z.B. Axum).
// Generierter Code (Beispiel)
pub fn add_routes(router: Router) -> Router {
router
.route("/health", get(|| async { "OK" }))
.route("/chat", post(crate::handlers::chat))
.route("/login", post(crate::handlers::login))
.route("/register", post(crate::handlers::register))
.route("/items", get(crate::handlers::list_items))
.route("/items", post(crate::handlers::create_item))
}Wenn needs_ai erkannt wird (z.B. durch llm.chat()), generiert der SystemGenerator automatisch einen AIClient, der mit echten LLM-APIs (OpenAI, etc.) kommuniziert.
Der Code nutzt reqwest für HTTP-Calls und verarbeitet Umgebungsvariablen (OPENAI_API_KEY).
// Generierter Code (Auszug)
let client = AIClient::new(LLMProvider::OpenAI, api_key);
let response = client.generate(&message).await?;Wenn needs_database erkannt wird, generiert das System automatisch einen Database Connection Pool (via sqlx) und integriert diesen in die Handler.
- Login-Handler: Enthält vorbereiteten Code für Datenbank-Abfragen zur Authentifizierung.
-
CRUD-Handler: Generiert Beispiel-Handler (
list_items,create_item) mit Datenbank-Zugriff.
Hinweis: Der generierte Datenbank-Code enthält Sicherheits-Best-Practices (z.B. Prepared Statements Hinweise), muss aber für das spezifische Schema angepasst werden.
- Dockerfile: Multi-stage Build
- docker-compose.yml: Mit Dependencies (Redis, Postgres)
- Kubernetes: Manifests mit Auto-Scaling
- Helm Charts: Für komplexe Deployments
Datei: compiler/src/codegen/templates/
Generiert vollständigen Server mit:
- Axum oder Actix-Web
- Middleware-Stack
- CORS-Konfiguration
- Health-Check Endpoint
Generiert Authentication mit:
- JWT Token Generation/Validation
- OAuth2 Integration
- Middleware für geschützte Routes
Generiert Rate Limiting mit:
- Fixed Window
- Sliding Window
- Token Bucket
Generiert LLM-Client mit:
- OpenAI/Anthropic/Gemini Support
- Chat Completion
- Text Generation
Generiert Infrastructure-as-Code:
- Dockerfile
- docker-compose.yml
- Kubernetes Manifests
- Serverless Configs
use velin_compiler::codegen::system_generator::{SystemGenerator, APICall};
let generator = SystemGenerator::new(llm_client);
let api_call = APICall {
name: "chatbot".to_string(),
args: vec!["prompt".to_string()],
};
let system = generator.generate_system(&api_call)?;
// System enthält:
// - system.components: Alle generierten Komponenten
// - system.integration_code: Integration-Code
// - system.deployment_config: Deployment-ConfigDatei: compiler/src/codegen/infrastructure.rs
Generiert Infrastructure-as-Code basierend auf Deployment-Plan:
- Local: Keine Infrastructure
- CloudSingle: Dockerfile + docker-compose.yml
- CloudMulti: Kubernetes + Helm Charts
- Serverless: Lambda + API Gateway
Input:
@GET("/api/chat")
fn chat(message: string): string {
return llm.chat(message);
}
Generiertes System:
- API Server (Axum)
- Routing
- AI Client (LLM Integration)
- Authentication (JWT)
- Rate Limiting
- Error Handling
- Logging
- Dockerfile
- docker-compose.yml
- API-Typ klar definieren: Nutze aussagekräftige Funktionsnamen
- Requirements spezifizieren: Decorators helfen bei der Erkennung
- Deployment-Plan prüfen: Generierte Configs sollten reviewt werden
- Komponenten anpassen: Templates können erweitert werden
- Compiler Architecture
- Pass-Verlauf
- Type Inference
- Code Ordering
- IR Representation
- Borrow Checker
- Code Generation
- Multi-Target Compilation
- Module Resolution
- Framework Integration
- Parallelization
- AI Compiler Passes
- Prompt Optimizer
- System Generation
- Basics
- APIs
- Security
- Database
- Validation
- Authentication
- ML/LLM
- Intelligence Features
- Type Inference
- ML Training
- Pattern Matching
- Closures
- Collections
- HTTP Client
- String Interpolation
- Debugger
- Vektor-Datenbanken
- CLI Reference
- API Keys Setup
- Advanced
- Backend
- Security Best Practices
- AI/ML
- Auto Imports
- Plugin Development