|
| 1 | +<h1 align="center">● Open Interpreter</h1> |
| 2 | + |
| 3 | +<p align="center"> |
| 4 | + <a href="https://discord.gg/6p3fD6rBVm"> |
| 5 | + <img alt="Discord" src="https://img.shields.io/discord/1146610656779440188?logo=discord&style=flat&logoColor=white"> |
| 6 | + </a> |
| 7 | + <a href="README_JA.md"><img src="https://img.shields.io/badge/ドキュメント-日本語-white.svg" alt="JA doc"></a> |
| 8 | + <a href="README_ZH.md"><img src="https://img.shields.io/badge/文档-中文版-white.svg" alt="ZH doc"></a> |
| 9 | + <a href="README.md"><img src="https://img.shields.io/badge/english-document-white.svg" alt="EN doc"></a> |
| 10 | + <img src="https://img.shields.io/static/v1?label=license&message=MIT&color=white&style=flat" alt="License"> |
| 11 | + <br><br> |
| 12 | + <b>Lassen Sie Sprachmodelle Code auf Ihrem Computer ausführen.</b><br> |
| 13 | + Eine Open-Source, lokal laufende Implementierung von OpenAIs Code-Interpreter.<br> |
| 14 | + <br><a href="https://openinterpreter.com">Erhalten Sie frühen Zugang zur Desktop-Anwendung.</a><br> |
| 15 | +</p> |
| 16 | + |
| 17 | +<br> |
| 18 | + |
| 19 | + |
| 20 | + |
| 21 | +<br> |
| 22 | + |
| 23 | +```shell |
| 24 | +pip install open-interpreter |
| 25 | +``` |
| 26 | + |
| 27 | +```shell |
| 28 | +interpreter |
| 29 | +``` |
| 30 | + |
| 31 | +<br> |
| 32 | + |
| 33 | +**Open Interpreter** ermöglicht es LLMs (Language Models), Code (Python, Javascript, Shell und mehr) lokal auszuführen. Sie können mit Open Interpreter über eine ChatGPT-ähnliche Schnittstelle in Ihrem Terminal chatten, indem Sie $ interpreter nach der Installation ausführen. |
| 34 | + |
| 35 | +Dies bietet eine natürliche Sprachschnittstelle zu den allgemeinen Fähigkeiten Ihres Computers: |
| 36 | + |
| 37 | +- Erstellen und bearbeiten Sie Fotos, Videos, PDFs usw. |
| 38 | +- Steuern Sie einen Chrome-Browser, um Forschungen durchzuführen |
| 39 | +- Darstellen, bereinigen und analysieren Sie große Datensätze |
| 40 | +- ...usw. |
| 41 | + |
| 42 | +**⚠️ Hinweis: Sie werden aufgefordert, Code zu genehmigen, bevor er ausgeführt wird.** |
| 43 | + |
| 44 | +<br> |
| 45 | + |
| 46 | +## Demo |
| 47 | + |
| 48 | +https://github.com/KillianLucas/open-interpreter/assets/63927363/37152071-680d-4423-9af3-64836a6f7b60 |
| 49 | + |
| 50 | +#### Eine interaktive Demo ist auch auf Google Colab verfügbar: |
| 51 | + |
| 52 | +[](https://colab.research.google.com/drive/1WKmRXZgsErej2xUriKzxrEAXdxMSgWbb?usp=sharing) |
| 53 | + |
| 54 | +## Schnellstart |
| 55 | + |
| 56 | +```shell |
| 57 | +pip install open-interpreter |
| 58 | +``` |
| 59 | + |
| 60 | +### Terminal |
| 61 | + |
| 62 | +Nach der Installation führen Sie einfach `interpreter` aus: |
| 63 | + |
| 64 | +```shell |
| 65 | +interpreter |
| 66 | +``` |
| 67 | + |
| 68 | +### Python |
| 69 | + |
| 70 | +```python |
| 71 | +import interpreter |
| 72 | + |
| 73 | +interpreter.chat("Stellen Sie AAPL und METAs normalisierte Aktienpreise dar") # Führt einen einzelnen Befehl aus |
| 74 | +interpreter.chat() # Startet einen interaktiven Chat |
| 75 | +``` |
| 76 | + |
| 77 | +## Vergleich zu ChatGPTs Code Interpreter |
| 78 | + |
| 79 | +OpenAIs Veröffentlichung des [Code Interpreters](https://openai.com/blog/chatgpt-plugins#code-interpreter) mit GPT-4 bietet eine fantastische Möglichkeit, reale Aufgaben mit ChatGPT zu erledigen. |
| 80 | + |
| 81 | +Allerdings ist OpenAIs Dienst gehostet, Closed-Source und stark eingeschränkt: |
| 82 | +- Kein Internetzugang. |
| 83 | +- [Begrenzte Anzahl vorinstallierter Pakete](https://wfhbrian.com/mastering-chatgpts-code-interpreter-list-of-python-packages/). |
| 84 | +- 100 MB maximale Uploadgröße, 120.0 Sekunden Laufzeitlimit. |
| 85 | +- Der Zustand wird gelöscht (zusammen mit allen generierten Dateien oder Links), wenn die Umgebung abstirbt. |
| 86 | + |
| 87 | +--- |
| 88 | + |
| 89 | +Open Interpreter überwindet diese Einschränkungen, indem es in Ihrer lokalen Umgebung läuft. Es hat vollen Zugang zum Internet, ist nicht durch Zeit oder Dateigröße eingeschränkt und kann jedes Paket oder jede Bibliothek nutzen. |
| 90 | + |
| 91 | +Dies kombiniert die Kraft von GPT-4s Code Interpreter mit der Flexibilität Ihrer lokalen Maschine. |
| 92 | + |
| 93 | +## Befehle |
| 94 | + |
| 95 | +**Update:** Das Generator-Update (0.1.5) hat das Streaming eingeführt: |
| 96 | + |
| 97 | +```python |
| 98 | +nachricht = "Unter welchem Betriebssystem sind wir?" |
| 99 | + |
| 100 | +for chunk in interpreter.chat(nachricht, display=False, stream=True): |
| 101 | + print(chunk) |
| 102 | +``` |
| 103 | + |
| 104 | +### Interaktiver Chat |
| 105 | + |
| 106 | +Um einen interaktiven Chat in deinem Terminal zu starten, führe entweder `interpreter` von der Kommandozeile aus: |
| 107 | + |
| 108 | +```shell |
| 109 | +interpreter |
| 110 | +``` |
| 111 | + |
| 112 | +Oder `interpreter.chat()` aus einer .py-Datei: |
| 113 | + |
| 114 | +```python |
| 115 | +interpreter.chat() |
| 116 | +``` |
| 117 | + |
| 118 | +**Du kannst auch jeden Abschnitt streamen:** |
| 119 | + |
| 120 | +```python |
| 121 | +nachricht = "Unter welchem Betriebssystem sind wir?" |
| 122 | + |
| 123 | +for chunk in interpreter.chat(nachricht, display=False, stream=True): |
| 124 | + print(chunk) |
| 125 | +``` |
| 126 | + |
| 127 | +### Programmatischer Chat |
| 128 | + |
| 129 | +Für eine genauere Steuerung kannst du Nachrichten direkt an `.chat(nachricht)` senden: |
| 130 | + |
| 131 | +```python |
| 132 | +interpreter.chat("Füge Untertitel zu allen Videos in /videos hinzu.") |
| 133 | + |
| 134 | +# ... Streamt die Ausgabe in dein Terminal, führt die Aufgabe aus ... |
| 135 | + |
| 136 | +interpreter.chat("Die sehen toll aus, aber kannst du die Untertitel größer machen?") |
| 137 | + |
| 138 | +# ... |
| 139 | +``` |
| 140 | + |
| 141 | +### Starte einen neuen Chat |
| 142 | + |
| 143 | +In Python merkt sich Open Interpreter den Gesprächsverlauf. Wenn du von vorne beginnen möchtest, kannst du ihn zurücksetzen: |
| 144 | + |
| 145 | +```python |
| 146 | +interpreter.reset() |
| 147 | +``` |
| 148 | + |
| 149 | +### Speichern und Wiederherstellen von Chats |
| 150 | + |
| 151 | +`interpreter.chat()` gibt eine Liste von Nachrichten zurück, die verwendet werden kann, um ein Gespräch mit `interpreter.messages = nachrichten` fortzusetzen: |
| 152 | + |
| 153 | +```python |
| 154 | +nachrichten = interpreter.chat("Mein Name ist Killian.") # Speichere Nachrichten in 'nachrichten' |
| 155 | +interpreter.reset() # Setze den Interpreter zurück ("Killian" wird vergessen) |
| 156 | + |
| 157 | +interpreter.messages = nachrichten # Setze den Chat von 'nachrichten' fort ("Killian" wird erinnert) |
| 158 | +``` |
| 159 | + |
| 160 | +### Anpassen der Systemnachricht |
| 161 | + |
| 162 | +Du kannst die Systemnachricht von Open Interpreter überprüfen und konfigurieren, um die Funktionalität zu erweitern, Berechtigungen zu ändern oder ihm mehr Kontext zu geben. |
| 163 | + |
| 164 | +```python |
| 165 | +interpreter.system_message += """ |
| 166 | +Führe Shell-Befehle mit -y aus, damit der Benutzer sie nicht bestätigen muss. |
| 167 | +""" |
| 168 | +print(interpreter.system_message) |
| 169 | +``` |
| 170 | + |
| 171 | +### Ändere dein Sprachmodell |
| 172 | + |
| 173 | +Open Interpreter verwendet [LiteLLM](https://docs.litellm.ai/docs/providers/) um eine Verbindung zu gehosteten Sprachmodellen herzustellen. |
| 174 | + |
| 175 | +Du kannst das Modell ändern, indem du den Modell-Parameter einstellst: |
| 176 | + |
| 177 | +```shell |
| 178 | +interpreter --model gpt-3.5-turbo |
| 179 | +interpreter --model claude-2 |
| 180 | +interpreter --model command-nightly |
| 181 | +``` |
| 182 | + |
| 183 | +In Python, setze das Modell auf dem Objekt: |
| 184 | + |
| 185 | +```python |
| 186 | +interpreter.model = "gpt-3.5-turbo" |
| 187 | +``` |
| 188 | + |
| 189 | +[Finde hier die passende "Modell"-Zeichenkette für dein Sprachmodell.](https://docs.litellm.ai/docs/providers/) |
| 190 | + |
| 191 | +### Open Interpreter lokal ausführen |
| 192 | + |
| 193 | +Open Interpreter verwendet [LM Studio](https://lmstudio.ai/) um eine Verbindung zu lokalen Sprachmodellen herzustellen (experimentell). |
| 194 | + |
| 195 | +Führe einfach `interpreter` im lokalen Modus von der Kommandozeile aus: |
| 196 | + |
| 197 | +```shell |
| 198 | +interpreter --local |
| 199 | +``` |
| 200 | + |
| 201 | +**Du musst LM Studio im Hintergrund laufen haben.** |
| 202 | + |
| 203 | +1. Lade [https://lmstudio.ai/](https://lmstudio.ai/) herunter und starte es. |
| 204 | +2. Wähle ein Modell aus und klicke auf **↓ Download**. |
| 205 | +3. Klicke auf den **↔️**-Button links (unter 💬). |
| 206 | +4. Wähle dein Modell oben aus und klicke auf **Start Server**. |
| 207 | + |
| 208 | +Sobald der Server läuft, kannst du deine Unterhaltung mit Open Interpreter beginnen. |
| 209 | + |
| 210 | +(Wenn du den Befehl `interpreter --local` ausführst, werden die oben genannten Schritte angezeigt.) |
| 211 | + |
| 212 | +> **Hinweis:** Der lokale Modus setzt dein `context_window` auf 3000 und deine `max_tokens` auf 1000. Wenn dein Modell andere Anforderungen hat, stelle diese Parameter manuell ein (siehe unten). |
| 213 | +
|
| 214 | +#### Kontextfenster, Maximale Tokens |
| 215 | + |
| 216 | +Du kannst die `max_tokens` und das `context_window` (in Token) von lokal laufenden Modellen ändern. |
| 217 | + |
| 218 | +Für den lokalen Modus wird ein kleineres Kontextfenster weniger RAM verwenden, daher empfehlen wir, ein viel kürzeres Fenster (~1000) zu probieren, wenn es fehlschlägt oder wenn es langsam ist. Stelle sicher, dass `max_tokens` kleiner als `context_window` ist. |
| 219 | + |
| 220 | +```shell |
| 221 | +interpreter --local --max_tokens 1000 --context_window 3000 |
| 222 | +``` |
| 223 | + |
| 224 | + |
| 225 | +### Debug-Modus |
| 226 | + |
| 227 | +Um Mitwirkenden die Überprüfung von Open Interpreter zu erleichtern, ist der `--debug` Modus sehr ausführlich. |
| 228 | + |
| 229 | +Du kannst den Debug-Modus aktivieren, indem du den entsprechenden Flag verwendest (`interpreter --debug`), oder mitten im Chat: |
| 230 | + |
| 231 | +```shell |
| 232 | +$ interpreter |
| 233 | +... |
| 234 | +> %debug true <- Aktiviert den Debug-Modus |
| 235 | + |
| 236 | +> %debug false <- Deaktiviert den Debug-Modus |
| 237 | +``` |
| 238 | + |
| 239 | +### Befehle im Interaktiven Modus |
| 240 | + |
| 241 | +Im interaktiven Modus kannst du die untenstehenden Befehle nutzen, um deine Erfahrung zu verbessern. Hier ist eine Liste der verfügbaren Befehle: |
| 242 | + |
| 243 | +**Verfügbare Befehle:** |
| 244 | + |
| 245 | +- `%debug [true/false]`: Schaltet den Debug-Modus um. Ohne Argumente oder mit `true` |
| 246 | + wird in den Debug-Modus gewechselt. Mit `false` wird der Debug-Modus beendet. |
| 247 | +- `%reset`: Setzt das aktuelle Gespräch der Sitzung zurück. |
| 248 | +- `%undo`: Entfernt die vorherige Nutzernachricht und die Antwort der KI aus dem Nachrichtenverlauf. |
| 249 | +- `%save_message [Pfad]`: Speichert Nachrichten in einem spezifizierten JSON-Pfad. Wenn kein Pfad angegeben wird, wird standardmäßig `messages.json` verwendet. |
| 250 | +- `%load_message [Pfad]`: Lädt Nachrichten von einem spezifizierten JSON-Pfad. Wenn kein Pfad angegeben wird, wird standardmäßig `messages.json` verwendet. |
| 251 | +- `%tokens [Eingabeaufforderung]`: (_Experimentell_) Berechnet die Tokens, die mit der nächsten Eingabeaufforderung als Kontext gesendet werden und schätzt deren Kosten. Optional werden die Tokens und die geschätzten Kosten einer `Eingabeaufforderung` berechnet, falls eine angegeben wird. Verlässt sich auf [LiteLLMs `cost_per_token()` Methode](https://docs.litellm.ai/docs/completion/token_usage#2-cost_per_token) für geschätzte Kosten. |
| 252 | +- `%help`: Zeigt die Hilfe-Nachricht an. |
| 253 | + |
| 254 | +### Konfiguration |
| 255 | + |
| 256 | +Open Interpreter ermöglicht es dir, Standardverhaltensweisen mit einer `config.yaml`-Datei festzulegen. |
| 257 | + |
| 258 | +Dies bietet eine flexible Möglichkeit, den Interpreter zu konfigurieren, ohne jedes Mal die Kommandozeilenargumente zu ändern. |
| 259 | + |
| 260 | +Führe den folgenden Befehl aus, um die Konfigurationsdatei zu öffnen: |
| 261 | + |
| 262 | +``` |
| 263 | +interpreter --config |
| 264 | +``` |
| 265 | + |
| 266 | +#### Mehrere Konfigurationsdateien |
| 267 | + |
| 268 | +Open Interpreter unterstützt mehrere `config.yaml`-Dateien, was es dir ermöglicht, einfach zwischen Konfigurationen zu wechseln über das `--config_file` Argument. |
| 269 | + |
| 270 | +**Hinweis**: `--config_file` akzeptiert entweder einen Dateinamen oder einen Dateipfad. Dateinamen verwenden das Standardkonfigurationsverzeichnis, während Dateipfade den angegebenen Pfad verwenden. |
| 271 | + |
| 272 | +Um eine neue Konfiguration zu erstellen oder zu bearbeiten, führe aus: |
| 273 | + |
| 274 | +``` |
| 275 | +interpreter --config --config_file $config_path |
| 276 | +``` |
| 277 | + |
| 278 | +Um Open Interpreter zu veranlassen, eine spezifische Konfigurationsdatei zu laden, führe aus: |
| 279 | + |
| 280 | +``` |
| 281 | +interpreter --config_file $config_path |
| 282 | +``` |
| 283 | + |
| 284 | +**Hinweis**: Ersetze `$config_path` durch den Namen oder Pfad deiner Konfigurationsdatei. |
| 285 | + |
| 286 | +##### CLI-Beispiel |
| 287 | + |
| 288 | +1. Erstelle eine neue `config.turbo.yaml`-Datei |
| 289 | + ``` |
| 290 | + interpreter --config --config_file config.turbo.yaml |
| 291 | + ``` |
| 292 | +2. Bearbeite die `config.turbo.yaml`-Datei, um `model` auf `gpt-3.5-turbo` zu setzen |
| 293 | +3. Führe Open Interpreter mit der `config.turbo.yaml`-Konfiguration aus |
| 294 | + ``` |
| 295 | + interpreter --config_file config.turbo.yaml |
| 296 | + ``` |
| 297 | + |
| 298 | +##### Python-Beispiel |
| 299 | + |
| 300 | +Du kannst auch Konfigurationsdateien laden, wenn du Open Interpreter aus Python-Skripten aufrufst: |
| 301 | + |
| 302 | +```python |
| 303 | +import os |
| 304 | +import interpreter |
| 305 | + |
| 306 | +currentPath = os.path.dirname(os.path.abspath(__file__)) |
| 307 | +config_path=os.path.join(currentPath, './config.test.yaml') |
| 308 | + |
| 309 | +interpreter.extend_config(config_path=config_path) |
| 310 | + |
| 311 | +message = "Unter welchem Betriebssystem sind wir?" |
| 312 | + |
| 313 | +for chunk in interpreter.chat(message, display=False, stream=True): |
| 314 | + print(chunk) |
| 315 | +``` |
| 316 | + |
| 317 | +## Beispiel FastAPI-Server |
| 318 | + |
| 319 | +Das Generator-Update ermöglicht es, Open Interpreter über HTTP REST-Endpunkte zu steuern: |
| 320 | + |
| 321 | +```python |
| 322 | +# server.py |
| 323 | + |
| 324 | +from fastapi import FastAPI |
| 325 | +from fastapi.responses import StreamingResponse |
| 326 | +import interpreter |
| 327 | + |
| 328 | +app = FastAPI() |
| 329 | + |
| 330 | +@app.get("/chat") |
| 331 | +def chat_endpoint(message: str): |
| 332 | + def event_stream(): |
| 333 | + for result in interpreter.chat(message, stream=True): |
| 334 | + yield f"data: {result}nn" |
| 335 | + |
| 336 | + return StreamingResponse(event_stream(), media_type="text/event-stream") |
| 337 | + |
| 338 | +@app.get("/history") |
| 339 | +def history_endpoint(): |
| 340 | + return interpreter.messages |
| 341 | +``` |
| 342 | + |
| 343 | +```shell |
| 344 | +pip install fastapi uvicorn |
| 345 | +uvicorn server:app --reload |
| 346 | +``` |
| 347 | + |
| 348 | +## Sicherheitshinweis |
| 349 | + |
| 350 | +Da generierter Code in deiner lokalen Umgebung ausgeführt wird, kann er mit deinen Dateien und Systemeinstellungen interagieren, was potenziell zu unerwarteten Ergebnissen wie Datenverlust oder Sicherheitsrisiken führen kann. |
| 351 | + |
| 352 | +**⚠️ Open Interpreter wird um Nutzerbestätigung bitten, bevor Code ausgeführt wird.** |
| 353 | + |
| 354 | +Du kannst `interpreter -y` ausführen oder `interpreter.auto_run = True` setzen, um diese Bestätigung zu umgehen, in diesem Fall: |
| 355 | + |
| 356 | +- Sei vorsichtig bei Befehlsanfragen, die Dateien oder Systemeinstellungen ändern. |
| 357 | +- Beobachte Open Interpreter wie ein selbstfahrendes Auto und sei bereit, den Prozess zu beenden, indem du dein Terminal schließt. |
| 358 | +- Betrachte die Ausführung von Open Interpreter in einer eingeschränkten Umgebung wie Google Colab oder Replit. Diese Umgebungen sind isolierter und reduzieren das Risiko der Ausführung willkürlichen Codes. |
| 359 | + |
| 360 | +Es gibt **experimentelle** Unterstützung für einen [Sicherheitsmodus](docs/SAFE_MODE.md), um einige Risiken zu mindern. |
| 361 | + |
| 362 | +## Wie funktioniert es? |
| 363 | + |
| 364 | +Open Interpreter rüstet ein [funktionsaufrufendes Sprachmodell](https://platform.openai.com/docs/guides/gpt/function-calling) mit einer `exec()`-Funktion aus, die eine `language` (wie "Python" oder "JavaScript") und auszuführenden `code` akzeptiert. |
| 365 | + |
| 366 | +Wir streamen dann die Nachrichten des Modells, Code und die Ausgaben deines Systems zum Terminal als Markdown. |
| 367 | + |
| 368 | +# Mitwirken |
| 369 | + |
| 370 | +Danke für dein Interesse an der Mitarbeit! Wir begrüßen die Beteiligung der Gemeinschaft. |
| 371 | + |
| 372 | +Bitte sieh dir unsere [Richtlinien für Mitwirkende](CONTRIBUTING.md) für weitere Details an, wie du dich einbringen kannst. |
| 373 | + |
| 374 | +## Lizenz |
| 375 | + |
| 376 | +Open Interpreter ist unter der MIT-Lizenz lizenziert. Du darfst die Software verwenden, kopieren, modifizieren, verteilen, unterlizenzieren und Kopien der Software verkaufen. |
| 377 | + |
| 378 | +**Hinweis**: Diese Software ist nicht mit OpenAI affiliiert. |
| 379 | + |
| 380 | +> Zugriff auf einen Junior-Programmierer zu haben, der mit der Geschwindigkeit deiner Fingerspitzen arbeitet ... kann neue Arbeitsabläufe mühelos und effizient machen sowie das Programmieren einem neuen Publikum öffnen. |
| 381 | +> |
| 382 | +> — _OpenAIs Code Interpreter Release_ |
| 383 | +
|
| 384 | +<br> |
| 385 | + |
| 386 | + |
0 commit comments