KI-Agent-Backup / app.py
Astridkraft's picture
Update app.py
3da3ea3 verified
Raw
History Blame Contribute Delete
3.21 kB
import os
import gradio as gr
from fastapi import FastAPI, HTTPException
from pydantic import BaseModel
import uvicorn
from agent.core import CodeAgent
# Agent nur initialisieren, wenn aktiviert
AGENT_ACTIVE = True # Auf False setzen zum Deaktivieren
if AGENT_ACTIVE:
# Agenten Instanziierung - Umgebung für Agent aufbauen!
agent = CodeAgent(api_key=None, dummy_mode=True, project="bild")
print("✅ Agent aktiviert")
else:
agent = None # Agent deaktiviert
print("⚠️ Agent ist deaktiviert - API läuft im Dummy-Modus")
# ============================================
# FASTAPI FÜR PROJEKTE
# ============================================
app = FastAPI(title="Code-Agent API")
class PatchRequest(BaseModel):
project: str
file: str
line: int
content: str
api_key: str
# Einfache API-Key Validierung (später erweiterbar)
API_KEYS = {
"bildgenerierung": "test-key-123",
"finanzen": "test-key-456",
"hr": "test-key-789"
}
@app.post("/api/chat")
async def chat_with_agent(request: dict):
"""
Chat-Endpoint für Projekte
"""
# 1. API-Key prüfen
api_key = request.get("api_key")
project = request.get("project")
message = request.get("message", "")
expected_key = API_KEYS.get(project)
if not expected_key or expected_key != api_key:
raise HTTPException(403, "❌ Unauthorized")
# 2. Agent antworten lassen
try:
# Hier deine Agent-Logik!
response = agent.handle_message(message, [])
return {
"response": response,
"project": project
}
except Exception as e:
raise HTTPException(500, f"❌ Fehler: {str(e)}")
@app.post("/api/patch")
async def patch_code(request: PatchRequest):
"""
POST-Endpoint für Code-Änderungen von Projekten
"""
# 1. API-Key prüfen
expected_key = API_KEYS.get(request.project)
if not expected_key or expected_key != request.api_key:
raise HTTPException(403, "❌ Unauthorized: Falscher API-Key")
print(f"📡 API-Aufruf von Projekt: {request.project}")
print(f" Datei: {request.file}, Zeile: {request.line}")
# 2. Agent ausführen
try:
result = agent.handle_patch(
project=request.project,
file=request.file,
line=request.line,
content=request.content
)
# 3. Erfolg zurückgeben
return {
"status": "success",
"result": result,
"project": request.project,
"file": request.file
}
except Exception as e:
raise HTTPException(500, f"❌ Agent-Fehler: {str(e)}")
@app.get("/api/health")
async def health_check():
"""Monitoring-Endpoint"""
return {
"status": "healthy",
"agent": "running",
"projects": list(API_KEYS.keys())
}
# ============================================
# 6. START (angepasst für HF)
# ============================================
if __name__ == "__main__":
uvicorn.run(
"app:app", # Wichtig: "app:app" für HF!
host="0.0.0.0",
port=7860,
reload=False
)