Desde sgcWebSockets 2023.3.0 la API de OpenAI es totalmente compatible.
La API de OpenAI se puede aplicar a prácticamente cualquier tarea que implique entender o generar lenguaje natural, código o imágenes. OpenAI ofrece un espectro de modelos con distintos niveles de potencia adecuados para distintas tareas, así como la posibilidad de hacer fine-tuning de tus propios modelos personalizados. Estos modelos pueden usarse para todo, desde generación de contenido hasta búsqueda semántica y clasificación.
Autenticación
La API de OpenAI usa API keys para la autenticación. Visita tu página de API Keys para obtener la API key que usarás en tus peticiones.
Recuerda que tu API key es un secreto. No la compartas con nadie ni la expongas en ningún código del lado del cliente (navegadores, apps). Las peticiones en producción deben enrutarse a través de tu propio servidor backend, donde la API key se pueda cargar de forma segura desde una variable de entorno o un servicio de gestión de claves.Esta API Key debe configurarse en la propiedad OpenAIOptions.ApiKey del componente. Opcionalmente, para los usuarios que pertenezcan a varias organizaciones, puedes establecer tu Organización en la propiedad OpenAIOptions.Organization si tu cuenta pertenece a una organización.
Modelos de OpenAI
Una vez configurada la API Key, a continuación encontrarás un listado de las funciones disponibles para interactuar con la API de OpenAI.
ModelsLista y describe los distintos modelos disponibles en la API.
- GetModels: Lista los modelos actualmente disponibles y proporciona información básica de cada uno, como el propietario y la disponibilidad.
- GetModel: Recupera una instancia de modelo, aportando información básica sobre el modelo como el propietario y los permisos.
- Model: el ID del modelo que se va a usar en esta petición
Completions
Dado un prompt, el modelo devolverá una o varias completaciones previstas y también puede devolver las probabilidades de tokens alternativos en cada posición.
- CreateCompletion: Crea una completación para el prompt y los parámetros indicados
- Model: ID del modelo a usar. Puedes utilizar la API List models para ver todos los modelos disponibles o consultar el resumen de modelos para ver sus descripciones.
- Prompt: el prompt para el que generar completaciones.
Chat
Dada una conversación de chat, el modelo devolverá una respuesta de tipo chat completion.
- Model: ID del modelo a usar. Llama a GetModels para obtener una lista de todos los modelos admitidos por la API de Chat.
- Message: el mensaje para el que generar las completaciones de chat.
- Role: por defecto user; otras opciones son: system, assistant.
Edits
Dado un prompt y una instrucción, el modelo devolverá una versión editada del prompt.
- CreateEdit: Crea una nueva edición para la entrada, la instrucción y los parámetros indicados.
- Model: ID del modelo a usar. Puedes utilizar el modelo text-davinci-edit-001 o code-davinci-edit-001 con este endpoint.
- Instruction: la instrucción que indica al modelo cómo editar el prompt.
- Input: (opcional) texto de entrada que sirve como punto de partida para la edición.
Dado un prompt y/o una imagen de entrada, el modelo generará una nueva imagen.
- CreateImage: Crea una imagen a partir de un prompt.
- Prompt: descripción textual de la(s) imagen(es) deseada(s). La longitud máxima es de 1000 caracteres.
- CreateImageEdit: Crea una imagen editada o extendida a partir de una imagen original y un prompt.
- Image: imagen a editar. Debe ser un archivo PNG válido, de menos de 4MB y cuadrado. Si no se proporciona máscara, la imagen debe tener transparencia, que se usará como máscara.
- Prompt: descripción textual de la(s) imagen(es) deseada(s). La longitud máxima es de 1000 caracteres.
- CreateImageVariations: Crea una variación de una imagen dada.
- Image: imagen que se usará como base para la(s) variación(es). Debe ser un archivo PNG válido, de menos de 4MB y cuadrado.
Embeddings
Obtén una representación vectorial de una entrada que pueda consumirse fácilmente desde modelos y algoritmos de machine learning.
- CreateEmbeddings: Crea un vector de embedding que representa el texto de entrada.
- Model: ID del modelo a usar.
- Input: texto de entrada del que obtener los embeddings.
Audio
Convierte audio en texto.
- CreateTranscriptionFromFile: Transcribe audio al idioma de entrada a partir de un nombre de archivo
- Model: ID del modelo a usar. Por ahora solo está disponible whisper-1.
- Filename: el archivo de audio a transcribir, en uno de estos formatos: mp3, mp4, mpeg, mpga, m4a, wav o webm.
- CreateTranscription: Graba audio durante X segundos y lo transcribe.
- Model: ID del modelo a usar. Por ahora solo está disponible whisper-1.
- Time: tiempo en milisegundos; por defecto 10 segundos.
- CreateTranslationFromFile: Traduce audio al inglés.
- Model: ID del modelo a usar. Por ahora solo está disponible whisper-1.
- Filename: el archivo de audio a traducir, en uno de estos formatos: mp3, mp4, mpeg, mpga, m4a, wav o webm.
- CreateTranslation: Graba audio durante X segundos y lo traduce.
- Model: ID del modelo a usar. Por ahora solo está disponible whisper-1.
- Time: tiempo en milisegundos; por defecto 10 segundos.
Files
Los archivos se usan para subir documentos que se pueden utilizar con características como Fine-tuning.
- ListFiles: Devuelve una lista de archivos pertenecientes a la organización del usuario.
- UploadFile: Sube un archivo que contiene documento(s) para usar en distintos endpoints/características. Actualmente, el tamaño total de todos los archivos subidos por una organización puede llegar hasta 1 GB.
- Filename: nombre del archivo JSON Lines que se va a subir. Si el propósito es "fine-tune", cada línea es un registro JSON con los campos "prompt" y "completion" que representan tus ejemplos de entrenamiento.
- Purpose: propósito previsto de los documentos subidos. Usa "fine-tune" para Fine-tuning.
- DeleteFile: Elimina un archivo.
- FileId: el ID del archivo a usar en esta petición
- RetrieveFile: Devuelve información sobre un archivo concreto.
- FileId: el ID del archivo a usar en esta petición
- RetrieveFileContent: Devuelve el contenido del archivo indicado
- FileId: el ID del archivo a usar en esta petición.
Fine-Tunes
Gestiona los trabajos de fine-tuning para ajustar un modelo a tus datos de entrenamiento específicos.
- CreateFineTune: Crea un trabajo que hace fine-tuning de un modelo a partir de un conjunto de datos. La respuesta incluye detalles del trabajo encolado, incluyendo su estado y el nombre del modelo afinado una vez completado.
- TrainingFile: ID de un archivo subido que contiene los datos de entrenamiento.
- ListFineTunes: Lista los trabajos de fine-tuning de tu organización
- RetrieveFineTune: Obtiene información sobre el trabajo de fine-tune.
- FineTuneId: el ID del trabajo de fine-tune
- CancelFineTune: Cancela inmediatamente un trabajo de fine-tune.
- FineTuneId: el ID del trabajo de fine-tune
- ListFineTuneEvents: Obtiene actualizaciones detalladas del estado de un trabajo de fine-tune.
- FineTuneId: el ID del trabajo de fine-tune
- DeleteFineTuneModel: Elimina un modelo afinado. Debes tener el rol Owner en tu organización.
- Model: el modelo a eliminar.
Moderations
Dado un texto de entrada, indica si el modelo lo clasifica como violación de la política de contenido de OpenAI.
- CreateModeration: Clasifica si un texto infringe la política de contenido de OpenAI
- Input: texto de entrada a clasificar
Ejemplos de OpenAI
A continuación encontrarás algunos ejemplos de aplicaciones construidas en Delphi usando la API de OpenAI
2. Cliente Delphi de transcripción OpenAI
3. Cliente Delphi de traducción OpenAI
4. Cliente Delphi de generador de imágenes OpenAI
A continuación encontrarás un cliente de ejemplo de la API de OpenAI compilado para Windows usando la librería Delphi sgcWebSockets que muestra los principales métodos de la API.
