From ba6b6fefaf0ecfb1d20796eb37c34b5557182d37 Mon Sep 17 00:00:00 2001 From: "backengine-app-staging[bot]" <141424148+backengine-app-staging[bot]@users.noreply.github.com> Date: Thu, 13 Nov 2025 15:21:37 +0000 Subject: [PATCH] docs(readme): add German README translation This commit adds a German translation of the README as README.de.md to support German-speaking users. The translation mirrors the English content and preserves warnings and usage guidance. - Added README.de.md with a German version of the Self Modifying API README README (documentation only) - Mirrored structure from README.md, including usage, warnings, and examples - Updated formatting and wording for clarity in German - Documentation-only change; no API changes or migrations --- README.de.md | 81 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 81 insertions(+) create mode 100644 README.de.md diff --git a/README.de.md b/README.de.md new file mode 100644 index 0000000..c17acf1 --- /dev/null +++ b/README.de.md @@ -0,0 +1,81 @@ +# Selbstmodifizierende API + +Hinweis: Dies ist die deutsche Fassung der README. Die englische Version findest du in `README.md`. + +WARNUNG: BITTE NICHT IN PRODUKTIONSUMGEBUNGEN VERWENDEN – NUR EIN PROOF OF CONCEPT + +## Was ist das? + +Dies ist ein Versuch, eine API zu bauen, die POST-Anfragen akzeptiert, die wiederum Änderungen an ihrem eigenen Code vornehmen und damit ihre eigene API-Oberfläche verändern. + +In ihrem aktuellen Zustand ist es SEHR GEFÄHRLICH, dies irgendwo öffentlich ins Internet zu deployen. + +Der Kern dieser API ist ein einzelner POST-Request-Handler, der: + +1. Python-Code als String entgegennimmt + 1. Wir erwarten ein bestimmtes Format – siehe `healthcheck.py` als Referenz +2. Den Code als Datei in das eigene GitHub-Repository committet +3. Die `app.py` aktualisiert, um die neue Route in der API verfügbar zu machen +4. Eine neue Bereitstellung auslöst (wir haben Render verwendet, weil wir damit vertraut sind) + +## WARUM?? + +Wir hatten die halbgar gebliebene Idee, dass das mit GPTs bzw. OpenAI's Assistants API gut funktionieren könnte, um es einem GPT zu erlauben, seine eigenen Actions zu bootstrappen. + +Es stellte sich heraus, dass GPTs API-Dokumentationen nicht dynamisch von einer bereitgestellten URL importieren. Deshalb funktioniert das nicht wirklich, ohne die Actions jedes Mal neu zu laden, wenn ein neuer Endpoint erstellt wird. + +Details zur GPT-Konfiguration findest du unten. + +## Nutzung und Installation + +Dies ist ein FastAPI-Projekt. Installiere die Abhängigkeiten aus `requirements.txt` und starte den lokalen Entwicklungsserver mit `./bin/dev`. + +## Verwendung dieser API mit einem GPT + +Wir haben getestet, diese API als Backend für GPT-Aktionen zu verwenden. Die von uns verwendete Konfiguration ist unten beschrieben. + +Name: `API Builder` + +Beschreibung: `API-Endpunkte spontan erzeugen` + +Anweisungen: + + Du erstellst API-Endpunkte, indem du Python-Code für ein FastAPI-Backend schreibst. Ein Beispiel für den Code, den du schreiben könntest, ist: + + ```python + from fastapi import APIRouter + router = APIRouter() + @router.get("/test") + def test(): + return {"status": "test"} + ``` + + Dafür würdest du beispielsweise den Dateipfad "test.py" verwenden. + + Achte darauf, immer + + ```python + from fastapi import APIRouter + router = APIRouter() + ``` + + zu verwenden, wenn du neue Endpunkte erstellst. + +Die Actions wurden vom Endpoint `/openai.json` importiert, der vom FastAPI-Server bereitgestellt wird. Wir mussten jedoch unsere Server-URL manuell in das Dokument eintragen, damit die Actions funktionieren. + +### Beispiel + +![](self-modifying-gpt.png) + +Anfrage, die an das Backend gesendet wurde: + +```json +{ + "code": "from fastapi import APIRouter\nimport random\n\nrouter = APIRouter()\n\n@router.get(\"/random-number\")\ndef generate_random_number():\n return {\"random_number\": random.randint(1, 100)}", + "filepath": "random_number.py" +} +``` + +## Bekannte Einschränkungen + +Neue Abhängigkeiten werden derzeit nicht automatisch behandelt (z. B. wenn Python-Code für einen neuen Endpunkt `numpy` verwendet, versuchen wir nicht, fehlende Abhängigkeiten zu installieren).