Introducción a la API de OpenAI: cómo escribir Chat Completions, llamadas a funciones y salida en streaming