● Intérprete Abierto

Discord EN doc JA doc ZH doc IN doc License


Obtenga acceso temprano a la aplicación de escritorio‎ ‎ |‎ ‎ Documentación


![poster](https://github.com/KillianLucas/open-interpreter/assets/63927363/08f0d493-956b-4d49-982e-67d4b20c4b56)

La Nueva Actualización del Computador presenta --os y una nueva API de Computadora. Lea más →


```shell pip install open-interpreter ``` > ¿No funciona? Lea nuestra [guía de configuración](https://docs.openinterpreter.com/getting-started/setup). ```shell interpreter ```
**Intérprete Abierto** permite a los LLMs ejecutar código (Python, JavaScript, Shell, etc.) localmente. Puede chatear con Intérprete Abierto a través de una interfaz de chat como ChatGPT en su terminal después de instalar. Esto proporciona una interfaz de lenguaje natural para las capacidades generales de su computadora: - Crear y editar fotos, videos, PDF, etc. - Controlar un navegador de Chrome para realizar investigaciones - Graficar, limpiar y analizar conjuntos de datos grandes - ... etc. **⚠️ Nota: Se le pedirá que apruebe el código antes de ejecutarlo.**
## Demo https://github.com/KillianLucas/open-interpreter/assets/63927363/37152071-680d-4423-9af3-64836a6f7b60 #### También hay disponible una demo interactiva en Google Colab: [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/drive/1WKmRXZgsErej2xUriKzxrEAXdxMSgWbb?usp=sharing) #### Además, hay un ejemplo de interfaz de voz inspirada en _Her_: [![Open In Colab](https://colab.research.google.com/assets/colab-badge.svg)](https://colab.research.google.com/drive/1NojYGHDgxH6Y1G1oxThEBBb2AtyODBIK) ## Inicio Rápido ```shell pip install open-interpreter ``` ### Terminal Después de la instalación, simplemente ejecute `interpreter`: ```shell interpreter ``` ### Python ```python from interpreter import interpreter interpreter.chat("Plot AAPL and META's normalized stock prices") # Ejecuta un comando sencillo interpreter.chat() # Inicia una sesión de chat interactiva ``` ### GitHub Codespaces Presione la tecla `,` en la página de GitHub de este repositorio para crear un espacio de códigos. Después de un momento, recibirá un entorno de máquina virtual en la nube con Interprete Abierto pre-instalado. Puede entonces empezar a interactuar con él directamente y confirmar su ejecución de comandos del sistema sin preocuparse por dañar el sistema. ## Comparación con el Intérprete de Código de ChatGPT El lanzamiento de [Intérprete de Código](https://openai.com/blog/chatgpt-plugins#code-interpreter) de OpenAI con GPT-4 presenta una oportunidad fantástica para realizar tareas del mundo real con ChatGPT. Sin embargo, el servicio de OpenAI está alojado, su codigo es cerrado y está fuertemente restringido: - No hay acceso a Internet. - [Conjunto limitado de paquetes preinstalados](https://wfhbrian.com/mastering-chatgpts-code-interpreter-list-of-python-packages/). - Límite de 100 MB de carga, límite de tiempo de 120.0 segundos. - El estado se elimina (junto con cualquier archivo generado o enlace) cuando el entorno se cierra. --- Intérprete Abierto supera estas limitaciones al ejecutarse en su entorno local. Tiene acceso completo a Internet, no está restringido por tiempo o tamaño de archivo y puede utilizar cualquier paquete o libreria. Esto combina el poder del Intérprete de Código de GPT-4 con la flexibilidad de su entorno de desarrollo local. ## Comandos **Actualización:** La Actualización del Generador (0.1.5) introdujo streaming: ```python message = "¿Qué sistema operativo estamos utilizando?" for chunk in interpreter.chat(message, display=False, stream=True): print(chunk) ``` ### Chat Interactivo Para iniciar una sesión de chat interactiva en su terminal, puede ejecutar `interpreter` desde la línea de comandos: ```shell interpreter ``` O `interpreter.chat()` desde un archivo `.py`: ```python interpreter.chat() ``` **Puede también transmitir cada trozo:** ```python message = "¿Qué sistema operativo estamos utilizando?" for chunk in interpreter.chat(message, display=False, stream=True): print(chunk) ``` ### Chat Programático Para un control más preciso, puede pasar mensajes directamente a `.chat(message)`: ```python interpreter.chat("Añade subtítulos a todos los videos en /videos.") # ... Transmite salida a su terminal, completa tarea ... interpreter.chat("Estos se ven bien, pero ¿pueden hacer los subtítulos más grandes?") # ... ``` ### Iniciar un nuevo chat En Python, Intérprete Abierto recuerda el historial de conversación. Si desea empezar de nuevo, puede resetearlo: ```python interpreter.messages = [] ``` ### Guardar y Restaurar Chats `interpreter.chat()` devuelve una lista de mensajes, que puede utilizar para reanudar una conversación con `interpreter.messages = messages`: ```python messages = interpreter.chat("Mi nombre es Killian.") # Guarda mensajes en 'messages' interpreter.messages = [] # Resetear Intérprete ("Killian" será olvidado) interpreter.messages = messages # Reanuda chat desde 'messages' ("Killian" será recordado) ``` ### Personalizar el Mensaje del Sistema Puede inspeccionar y configurar el mensaje del sistema de Intérprete Abierto para extender su funcionalidad, modificar permisos o darle más contexto. ```python interpreter.system_message += """ Ejecute comandos de shell con -y para que el usuario no tenga que confirmarlos. """ print(interpreter.system_message) ``` ### Cambiar el Modelo de Lenguaje Intérprete Abierto utiliza [LiteLLM](https://docs.litellm.ai/docs/providers/) para conectarse a modelos de lenguaje hospedados. Puede cambiar el modelo estableciendo el parámetro de modelo: ```shell interpreter --model gpt-3.5-turbo interpreter --model claude-2 interpreter --model command-nightly ``` En Python, establezca el modelo en el objeto: ```python interpreter.llm.model = "gpt-3.5-turbo" ``` [Encuentre la cadena adecuada para su modelo de lenguaje aquí.](https://docs.litellm.ai/docs/providers/) ### Ejecutar Intérprete Abierto localmente #### Terminal Intérprete Abierto puede utilizar un servidor de OpenAI compatible para ejecutar modelos localmente. (LM Studio, jan.ai, ollama, etc.) Simplemente ejecute `interpreter` con la URL de base de API de su servidor de inferencia (por defecto, `http://localhost:1234/v1` para LM Studio): ```shell interpreter --api_base "http://localhost:1234/v1" --api_key "fake_key" ``` O puede utilizar Llamafile sin instalar software adicional simplemente ejecutando: ```shell interpreter --local ``` Para una guía mas detallada, consulte [este video de Mike Bird](https://www.youtube.com/watch?v=CEs51hGWuGU?si=cN7f6QhfT4edfG5H) **Cómo ejecutar LM Studio en segundo plano.** 1. Descargue [https://lmstudio.ai/](https://lmstudio.ai/) luego ejecutelo. 2. Seleccione un modelo, luego haga clic **↓ Descargar**. 3. Haga clic en el botón **↔️** en la izquierda (debajo de 💬). 4. Seleccione su modelo en la parte superior, luego haga clic **Iniciar Servidor**. Una vez que el servidor esté funcionando, puede empezar su conversación con Intérprete Abierto. > **Nota:** El modo local establece su `context_window` en 3000 y su `max_tokens` en 1000. Si su modelo tiene requisitos diferentes, ajuste estos parámetros manualmente (ver a continuación). #### Python Nuestro paquete de Python le da más control sobre cada ajuste. Para replicar y conectarse a LM Studio, utilice estos ajustes: ```python from interpreter import interpreter interpreter.offline = True # Desactiva las características en línea como Procedimientos Abiertos interpreter.llm.model = "openai/x" # Indica a OI que envíe mensajes en el formato de OpenAI interpreter.llm.api_key = "fake_key" # LiteLLM, que utilizamos para hablar con LM Studio, requiere esto interpreter.llm.api_base = "http://localhost:1234/v1" # Apunta esto a cualquier servidor compatible con OpenAI interpreter.chat() ``` #### Ventana de Contexto, Tokens Máximos Puede modificar los `max_tokens` y `context_window` (en tokens) de los modelos locales. Para el modo local, ventanas de contexto más cortas utilizarán menos RAM, así que recomendamos intentar una ventana mucho más corta (~1000) si falla o si es lenta. Asegúrese de que `max_tokens` sea menor que `context_window`. ```shell interpreter --local --max_tokens 1000 --context_window 3000 ``` ### Modo Detallado Para ayudarle a inspeccionar Intérprete Abierto, tenemos un modo `--verbose` para depuración. Puede activar el modo detallado utilizando el parámetro (`interpreter --verbose`), o en plena sesión: ```shell $ interpreter ... > %verbose true <- Activa el modo detallado > %verbose false <- Desactiva el modo verbose ``` ### Comandos de Modo Interactivo En el modo interactivo, puede utilizar los siguientes comandos para mejorar su experiencia. Aquí hay una lista de comandos disponibles: **Comandos Disponibles:** - `%verbose [true/false]`: Activa o desactiva el modo detallado. Sin parámetros o con `true` entra en modo detallado. Con `false` sale del modo verbose. - `%reset`: Reinicia la sesión actual de conversación. - `%undo`: Elimina el mensaje de usuario previo y la respuesta del AI del historial de mensajes. - `%tokens [prompt]`: (_Experimental_) Calcula los tokens que se enviarán con el próximo prompt como contexto y estima su costo. Opcionalmente, calcule los tokens y el costo estimado de un `prompt` si se proporciona. Depende de [LiteLLM's `cost_per_token()` method](https://docs.litellm.ai/docs/completion/token_usage#2-cost_per_token) para costos estimados. - `%help`: Muestra el mensaje de ayuda. ### Configuración / Perfiles Intérprete Abierto permite establecer comportamientos predeterminados utilizando archivos `yaml`. Esto proporciona una forma flexible de configurar el intérprete sin cambiar los argumentos de línea de comandos cada vez. Ejecutar el siguiente comando para abrir el directorio de perfiles: ``` interpreter --profiles ``` Puede agregar archivos `yaml` allí. El perfil predeterminado se llama `default.yaml`. #### Perfiles Múltiples Intérprete Abierto admite múltiples archivos `yaml`, lo que permite cambiar fácilmente entre configuraciones: ``` interpreter --profile my_profile.yaml ``` ## Servidor de FastAPI de ejemplo El generador actualiza permite controlar Intérprete Abierto a través de puntos de conexión HTTP REST: ```python # server.py from fastapi import FastAPI from fastapi.responses import StreamingResponse from interpreter import interpreter app = FastAPI() @app.get("/chat") def chat_endpoint(message: str): def event_stream(): for result in interpreter.chat(message, stream=True): yield f"data: {result}\n\n" return StreamingResponse(event_stream(), media_type="text/event-stream") @app.get("/history") def history_endpoint(): return interpreter.messages ``` ```shell pip install fastapi uvicorn uvicorn server:app --reload ``` Puede iniciar un servidor idéntico al anterior simplemente ejecutando `interpreter.server()`. ## Android La guía paso a paso para instalar Intérprete Abierto en su dispositivo Android se encuentra en el [repo de open-interpreter-termux](https://github.com/MikeBirdTech/open-interpreter-termux). ## Aviso de Seguridad Ya que el código generado se ejecuta en su entorno local, puede interactuar con sus archivos y configuraciones del sistema, lo que puede llevar a resultados inesperados como pérdida de datos o riesgos de seguridad. **⚠️ Intérprete Abierto le pedirá que apruebe el código antes de ejecutarlo.** Puede ejecutar `interpreter -y` o establecer `interpreter.auto_run = True` para evitar esta confirmación, en cuyo caso: - Sea cuidadoso al solicitar comandos que modifican archivos o configuraciones del sistema. - Vigile Intérprete Abierto como si fuera un coche autónomo y esté preparado para terminar el proceso cerrando su terminal. - Considere ejecutar Intérprete Abierto en un entorno restringido como Google Colab o Replit. Estos entornos son más aislados, reduciendo los riesgos de ejecutar código arbitrario. Hay soporte **experimental** para un [modo seguro](docs/SAFE_MODE.md) para ayudar a mitigar algunos riesgos. ## ¿Cómo Funciona? Intérprete Abierto equipa un [modelo de lenguaje de llamada a funciones](https://platform.openai.com/docs/guides/gpt/function-calling) con una función `exec()`, que acepta un `lenguaje` (como "Python" o "JavaScript") y `código` para ejecutar. Luego, transmite los mensajes del modelo, el código y las salidas del sistema a la terminal como Markdown. # Acceso a la Documentación Offline La documentación completa está disponible en línea sin necesidad de conexión a Internet. [Node](https://nodejs.org/en) es un requisito previo: - Versión 18.17.0 o cualquier versión posterior 18.x.x. - Versión 20.3.0 o cualquier versión posterior 20.x.x. - Cualquier versión a partir de 21.0.0 sin límite superior especificado. Instale [Mintlify](https://mintlify.com/): ```bash npm i -g mintlify@latest ``` Cambia a la carpeta de documentos y ejecuta el comando apropiado: ```bash # Suponiendo que estás en la carpeta raíz del proyecto cd ./docs # Ejecute el servidor de documentación mintlify dev ``` Una nueva ventana del navegador debería abrirse. La documentación estará disponible en [http://localhost:3000](http://localhost:3000) mientras el servidor de documentación esté funcionando. # Contribuyendo ¡Gracias por su interés en contribuir! Damos la bienvenida a la implicación de la comunidad. Por favor, consulte nuestras [directrices de contribución](docs/CONTRIBUTING.md) para obtener más detalles sobre cómo involucrarse. # Roadmap Visite [nuestro roadmap](https://github.com/KillianLucas/open-interpreter/blob/main/docs/ROADMAP.md) para ver el futuro de Intérprete Abierto. **Nota:** Este software no está afiliado con OpenAI. ![thumbnail-ncu](https://github.com/KillianLucas/open-interpreter/assets/63927363/1b19a5db-b486-41fd-a7a1-fe2028031686) > Tener acceso a un programador junior trabajando a la velocidad de su dedos... puede hacer que los nuevos flujos de trabajo sean sencillos y eficientes, además de abrir los beneficios de la programación a nuevas audiencias. > > — _Lanzamiento del intérprete de código de OpenAI_