|
| 1 | +# Demos de Python con OpenAI |
| 2 | + |
| 3 | +Este repositorio contiene una colección de scripts en Python que demuestran cómo usar la API de OpenAI para generar completados de chat. |
| 4 | + |
| 5 | +En orden creciente de complejidad, los scripts son: |
| 6 | + |
| 7 | +1. [`chat.py`](./chat.py): Un script simple que demuestra cómo usar la API de OpenAI para generar completados de chat. |
| 8 | +2. [`chat_stream.py`](./chat_stream.py): Añade `stream=True` a la llamada de API para devolver un generador que transmite el completado mientras se está generando. |
| 9 | +3. [`chat_history.py`](./chat_history.py): Añade una interfaz de chat bidireccional usando `input()` que mantiene un registro de los mensajes anteriores y los envía con cada llamada de completado de chat. |
| 10 | +4. [`chat_history_stream.py`](./chat_history_stream.py): La misma idea, pero con `stream=True` habilitado. |
| 11 | + |
| 12 | +Además de estos scripts para demostrar características adicionales: |
| 13 | + |
| 14 | +* [`chat_safety.py`](./chat_safety.py): El script simple con manejo de excepciones para errores de filtro de Seguridad de Contenido de Azure AI. |
| 15 | +* [`chat_async.py`](./chat_async.py): Utiliza los clientes asíncronos para hacer llamadas asincrónicas, incluyendo un ejemplo de envío de múltiples solicitudes a la vez usando `asyncio.gather`. |
| 16 | +* [`chat_langchain.py`](./chat_langchain.py): Utiliza el SDK de langchain para generar completados de chat. [Aprende más en la documentación de Langchain](https://python.langchain.com/docs/get_started/quickstart) |
| 17 | +* [`chat_llamaindex.py`](./chat_llamaindex.py): Utiliza el SDK de LlamaIndex para generar completados de chat. [Aprende más en la documentación de LlamaIndex](https://docs.llamaindex.ai/en/stable/) |
| 18 | + |
| 19 | + |
| 20 | +## Configuración del entorno |
| 21 | + |
| 22 | +Si abres esto en un Dev Container o GitHub Codespaces, todo estará configurado para ti. |
| 23 | +Si no, sigue estos pasos: |
| 24 | + |
| 25 | +1. Configura un entorno virtual de Python y actívalo. |
| 26 | + |
| 27 | +2. Instala las librerías requeridas: |
| 28 | + |
| 29 | +```bash |
| 30 | +python -m pip install -r requirements.txt |
| 31 | +``` |
| 32 | + |
| 33 | +## Configurando las variables de entorno de OpenAI |
| 34 | + |
| 35 | +Estos scripts pueden ejecutarse con una cuenta de Azure OpenAI, OpenAI.com, servidor local de Ollama o modelos de GitHub, dependiendo de las variables de entorno que configures. |
| 36 | + |
| 37 | +1. Copia el archivo `.env.sample` a un nuevo archivo llamado `.env`: |
| 38 | + |
| 39 | + ```bash |
| 40 | + cp .env.sample .env |
| 41 | + ``` |
| 42 | + |
| 43 | +2. Para Azure OpenAI, crea un deployment de Azure OpenAI gpt-3.5 o gpt-4 (quizás usando [este template](https://github.com/Azure-Samples/azure-openai-keyless)), and actualiza el `.env` con tu Azure OpenAI endpoint y deployment id. |
| 44 | + |
| 45 | + ```bash |
| 46 | + API_HOST=azure |
| 47 | + AZURE_OPENAI_ENDPOINT=https://YOUR-AZURE-OPENAI-SERVICE-NAME.openai.azure.com |
| 48 | + AZURE_OPENAI_DEPLOYMENT=YOUR-AZURE-DEPLOYMENT-NAME |
| 49 | + AZURE_OPENAI_VERSION=2024-03-01-preview |
| 50 | + ``` |
| 51 | + |
| 52 | + Si aún no has iniciado sesión en la cuenta de Azure asociada con ese deployment, ejecuta este comando para iniciar sesión: |
| 53 | + |
| 54 | + ```shell |
| 55 | + az login |
| 56 | + ``` |
| 57 | +3. Para OpenAI.com, actualiza el archivo `.env` con tu clave API de OpenAI y el nombre del modelo deseado. |
| 58 | + |
| 59 | + ```bash |
| 60 | + API_HOST=openai |
| 61 | + OPENAI_KEY=TU-CLAVE-API-OPENAI |
| 62 | + OPENAI_MODEL=gpt-3.5-turbo |
| 63 | + ``` |
| 64 | + |
| 65 | +4. Para Ollama, actualiza el archivo [.env](http://_vscodecontentref_/0) con tu endpoint de Ollama y nombre del modelo (cualquier modelo que hayas descargado). |
| 66 | + |
| 67 | + ```bash |
| 68 | + API_HOST=ollama |
| 69 | + OLLAMA_ENDPOINT=http://localhost:11434/v1 |
| 70 | + OLLAMA_MODEL=llama2 |
| 71 | + ``` |
| 72 | + |
| 73 | + Si estás ejecutando dentro del Dev Container, reemplaza `localhost` con `host.docker.internal`. |
| 74 | + |
| 75 | +5. Para GitHub Models, actualiza el archivo [.env](http://_vscodecontentref_/1) con el nombre de tu GitHub Model. |
| 76 | + |
| 77 | + ```bash |
| 78 | + API_HOST=github |
| 79 | + GITHUB_MODEL=gpt-4o |
| 80 | + ``` |
| 81 | + |
| 82 | + Necesitarás una variable de entorno `GITHUB_TOKEN` que almacene un token de acceso personal de GitHub. |
| 83 | + Si estás ejecutando esto dentro de un GitHub Codespace, el token estará disponible automáticamente. |
| 84 | + Si no, genera un nuevo [token de acceso personal](https://github.com/settings/tokens) y ejecuta este comando para establecer la variable de entorno `GITHUB_TOKEN`: |
| 85 | + |
| 86 | + ```shell |
| 87 | + export GITHUB_TOKEN="<aquí-va-tu-token-de-github>" |
0 commit comments