Logotipo de Zephyrnet

Explorando la API OpenAI con Python – KDnuggets

Fecha:

Explorando la API OpenAI con Python
Imagen generada con Ideograma.ai
 

¿Quién no ha oído hablar de OpenAI? El laboratorio de investigación de IA ha cambiado el mundo gracias a su famoso producto, ChatGPT.

Literalmente cambió el panorama de la implementación de la IA y muchas empresas ahora se apresuran a convertirse en la próxima gran novedad.

A pesar de la gran competencia, OpenAI sigue siendo la empresa a la que acudir para cualquier necesidad empresarial de IA generativa porque tiene uno de los mejores modelos y soporte continuo. La empresa ofrece muchos modelos de IA generativa de última generación con diversas capacidades de tareas: generación de imágenes, conversión de texto a voz y muchas más. 

Todos los modelos que ofrece OpenAI están disponibles mediante llamadas API. Con un código Python simple, ya puedes usar el modelo. 

En este artículo, exploraremos cómo usar la API OpenAI con Python y varias tareas que puede realizar. Espero que aprendas mucho de este artículo.

Para seguir este artículo, hay algunas cosas que debes preparar.

Lo más importante que necesita son las claves API de OpenAI, ya que no puede acceder a los modelos de OpenAI sin la clave. Para adquirir acceso, debe registrarse para obtener una cuenta OpenAI y solicitar la clave API en el página de la cuenta. Después de recibir la clave, guárdela en algún lugar que pueda recordar, ya que no volverá a aparecer en la interfaz de OpenAI.

Lo siguiente que debe configurar es comprar el crédito prepago para usar la API OpenAI. Recientemente, OpenAI anunció cambios en cómo sus trabajos de facturación. En lugar de pagar a final de mes, debemos comprar crédito prepago para la llamada API. Puedes visitar el Precios de OpenAI página para estimar el crédito que necesita. También puedes consultar sus página modelo para entender qué modelo necesita.

Por último, debe instalar el paquete OpenAI Python en su entorno. Puedes hacerlo usando el siguiente código.

pip install openai

 

Luego, debe configurar su variable de entorno clave OpenAI usando el siguiente código.

import os

os.environ['OPENAI_API_KEY'] = 'YOUR API KEY'

 

Con todo listo, comencemos a explorar la API de los modelos OpenAI con Python.

La estrella de OpenAI API es su modelo Text Generations. Esta familia de modelos de lenguaje grandes puede producir salida de texto a partir de la entrada de texto llamada solicitud. Las indicaciones son básicamente instrucciones sobre lo que esperamos del modelo, como análisis de texto, generación de borradores de documentos y mucho más.

Comencemos ejecutando una simple llamada a la API de Text Generations. Utilizaríamos el modelo GPT-3.5-Turbo de OpenAI como modelo base. No es el modelo más avanzado, pero los más baratos suelen ser suficientes para realizar tareas relacionadas con texto.

from openai import OpenAI
client = OpenAI()

completion = client.chat.completions.create(
  model="gpt-3.5-turbo",
  messages=[
    {"role": "system", "content": "You are a helpful assistant."},
    {"role": "user", "content": "Generate me 3 Jargons that I can use for my Social Media content as a Data Scientist content creator"}
  ]
)

print(completion.choices[0].message.content)

 

  1. "¡Liberando el poder del análisis predictivo para impulsar decisiones basadas en datos!"
  2. "Sumergirse profundamente en el océano de datos para descubrir información valiosa".
  3. "Transformar datos sin procesar en inteligencia procesable a través de algoritmos avanzados".

La llamada API para el modelo de generación de texto utiliza el punto final API chat.compleciones para crear la respuesta de texto desde nuestro mensaje. 

Hay dos parámetros requeridos para la generación de texto: modelo y mensajes. 

Para el modelo, puede consultar la lista de modelos que puede utilizar en la página del modelo relacionado. 

En cuanto a los mensajes, pasamos un diccionario con dos pares: el rol y el contenido. La clave de rol especificaba el rol de remitente en el modelo de conversación. Hay 3 roles diferentes: sistema, usuario y asistente.

Usando el rol en los mensajes, podemos ayudar a establecer el comportamiento del modelo y un ejemplo de cómo el modelo debe responder a nuestra pregunta.

Ampliemos el ejemplo de código anterior con el asistente de funciones para brindar orientación sobre nuestro modelo. Además, exploraríamos algunos parámetros del modelo de generación de texto para mejorar su resultado.

completion = client.chat.completions.create(
    model="gpt-3.5-turbo",
    messages=[
        {"role": "system", "content": "You are a helpful assistant."},
        {"role": "user", "content": "Generate me 3 jargons that I can use for my Social Media content as a Data Scientist content creator."},
        {"role": "assistant", "content": "Sure, here are three jargons: Data Wrangling is the key, Predictive Analytics is the future, and Feature Engineering help your model."},
        {"role": "user", "content": "Great, can you also provide me with 3 content ideas based on these jargons?"}
    ],
    max_tokens=150,
    temperature=0.7,
    top_p=1,
    frequency_penalty=0
)

print(completion.choices[0].message.content)

 

¡Por supuesto! Aquí hay tres ideas de contenido basadas en las jergas proporcionadas:

  1. “Liberar el poder de la manipulación de datos: una guía paso a paso para científicos de datos”: cree una publicación de blog o un video tutorial que muestre las mejores prácticas y herramientas para la manipulación de datos en un proyecto de ciencia de datos del mundo real.
  1. “El futuro del análisis predictivo: tendencias e innovaciones en la ciencia de datos”: escriba un artículo de liderazgo intelectual que analice las tendencias y tecnologías emergentes en el análisis predictivo y cómo están dando forma al futuro de la ciencia de datos.
  1. “Dominar la ingeniería de funciones: técnicas para impulsar el rendimiento del modelo”: desarrolle una infografía o una serie de redes sociales que destaque diferentes técnicas de ingeniería de funciones y su impacto en la mejora de la precisión y eficiencia de los modelos de aprendizaje automático.

El resultado resultante sigue el ejemplo que proporcionamos al modelo. Usar el asistente de roles es útil si tenemos un determinado estilo o resultado que queremos que siga el modelo.

En cuanto a los parámetros, aquí hay explicaciones simples de cada parámetro que utilizamos:

  • tokens_max: Este parámetro establece el número máximo de palabras que el modelo puede generar.
  • temperatura: Este parámetro controla la imprevisibilidad de la salida del modelo. Una temperatura más alta da como resultado resultados más variados e imaginativos. El rango aceptable es de 0 a infinito, aunque los valores superiores a 2 son inusuales.
  • arriba_p: También conocido como muestreo de núcleos, este parámetro ayuda a determinar el subconjunto de la distribución de probabilidad del cual el modelo obtiene su salida. Por ejemplo, un valor top_p de 0.1 significa que el modelo considera solo el 10% superior de la distribución de probabilidad para el muestreo. Sus valores pueden oscilar entre 0 y 1, y los valores más altos permiten una mayor diversidad de salida.
  • penalización_frecuencia: Esto penaliza los tokens repetidos en la salida del modelo. El valor de la penalización puede oscilar entre -2 y 2, donde los valores positivos desalientan la repetición de fichas y los valores negativos hacen lo contrario, fomentando el uso repetido de palabras. Un valor de 0 indica que no se aplica ninguna penalización por repetición.

Por último, puede cambiar la salida del modelo al formato JSON con el siguiente código.

completion = client.chat.completions.create(
  model="gpt-3.5-turbo",
  response_format={ "type": "json_object" },
  messages=[
    {"role": "system", "content": "You are a helpful assistant designed to output JSON.."},
    {"role": "user", "content": "Generate me 3 Jargons that I can use for my Social Media content as a Data Scientist content creator"}
  ]
)

print(completion.choices[0].message.content)

 

{
“jergas”: [
"Aprovechar el análisis predictivo para desbloquear conocimientos valiosos",
“Profundizando en las complejidades de los algoritmos avanzados de aprendizaje automático”,
“Aprovechar el poder del big data para impulsar decisiones basadas en datos”
]
}

El resultado está en formato JSON y se ajusta al mensaje que ingresamos en el modelo.

Para completar Documentación de la API de generación de texto, puedes consultarlos en su página dedicada.

El modelo OpenAI es útil para casos de uso de generación de texto y también puede llamar a la API para fines de generación de imágenes. 

Utilizando el modelo DALL·E, podemos generar una imagen según lo solicitado. La forma sencilla de realizarlo es utilizando el siguiente código.

from openai import OpenAI
from IPython.display import Image

client = OpenAI()

response = client.images.generate(
  model="dall-e-3",
  prompt="White Piano on the Beach",
  size="1792x1024",
  quality="hd",
  n=1,
)

image_url = response.data[0].url
Image(url=image_url)

 

Explorando la API OpenAI con Python
Imagen generada con DALL·E 3
 

Para los parámetros, aquí están las explicaciones:

  • modelo: El modelo de generación de imágenes que se utilizará. Actualmente, la API solo admite los modelos DALL·E 3 y DALL·E 2. 
  • puntual: Esta es la descripción textual a partir de la cual el modelo generará una imagen. 
  • tamaño: Determina la resolución de la imagen generada. Hay tres opciones para el modelo DALL·E 3 (1024×1024, 1024×1792 o 1792×1024).
  • calidad: Este parámetro influye en la calidad de la imagen generada. Si se necesita tiempo de cálculo, "estándar" es más rápido que "hd".
  • n: Especifica el número de imágenes que se generarán según el mensaje. DALL·E 3 sólo puede generar una imagen a la vez. DALL·E 2 puede generar hasta 10 a la vez.

También es posible generar una imagen variación a partir de la imagen existente, aunque sólo está disponible utilizando el modelo DALL·E 2. La API solo acepta imágenes PNG cuadradas de menos de 4 MB.

from openai import OpenAI
from IPython.display import Image

client = OpenAI()

response = client.images.create_variation(
  image=open("white_piano_ori.png", "rb"),
  n=2,
  size="1024x1024"
)

image_url = response.data[0].url

Image(url=image_url)

 

Es posible que la imagen no sea tan buena como la del DALL·E de 3 generaciones, ya que utiliza el modelo anterior.

OpenAI es una empresa líder que proporciona modelos que pueden comprender la entrada de imágenes. Este modelo se llama modelo Vision, a veces llamado GPT-4V. El modelo es capaz de responder preguntas dada la imagen que dimos.

Probemos la API del modelo Vision. En este ejemplo, usaría la imagen del piano blanco que generamos a partir del modelo DALL·E 3 y la almacenaría localmente. Además, crearía una función que tome la ruta de la imagen y devuelva el texto de descripción de la imagen. No olvide cambiar la variable api_key a su clave API.

from openai import OpenAI
import base64
import requests
def provide_image_description(img_path):

    client = OpenAI()

    api_key = 'YOUR-API-KEY'
    # Function to encode the image
    def encode_image(image_path):
      with open(image_path, "rb") as image_file:
        return base64.b64encode(image_file.read()).decode('utf-8')
   
    # Path to your image
    image_path = img_path
   
    # Getting the base64 string
    base64_image = encode_image(image_path)
   
    headers = {
      "Content-Type": "application/json",
      "Authorization": f"Bearer {api_key}"
    }
   
    payload = {
      "model": "gpt-4-vision-preview",
      "messages": [
        {
          "role": "user",
          "content": [
            {
              "type": "text",
              "text": """Can you describe this image? """
            },
            {
              "type": "image_url",
              "image_url": {
                "url": f"data:image/jpeg;base64,{base64_image}"
              }
            }
          ]
        }
      ],
      "max_tokens": 300
    }
   
    response = requests.post("https://api.openai.com/v1/chat/completions", headers=headers, json=payload)

    return response.json()['choices'][0]['message']['content']

 

Esta imagen muestra un piano de cola colocado en un entorno de playa sereno. El piano es blanco, lo que indica un acabado que a menudo se asocia con la elegancia. El instrumento está situado justo al borde de la costa, donde las suaves olas acarician ligeramente la arena, creando una espuma que apenas toca la base del piano y el taburete a juego. Los alrededores de la playa implican una sensación de tranquilidad y aislamiento con cielos azules claros, nubes esponjosas en la distancia y un mar en calma que se expande hasta el horizonte. Esparcidas alrededor del piano en la arena hay numerosas conchas marinas de varios tamaños y formas, resaltando la belleza natural y la atmósfera serena del entorno. La yuxtaposición de un instrumento de música clásica en un entorno natural de playa crea una composición surrealista y visualmente poética.

Puede modificar los valores de texto en el diccionario anterior para que coincidan con los requisitos de su modelo Vision.

OpenAI también proporciona un modelo para generar audio basado en su modelo Text-to-Speech. Es muy fácil de usar, aunque el estilo de narración de voz es limitado. Además, el modelo admite muchos idiomas, que puedes ver en su página de soporte de idiomas.

Para generar el audio, puede utilizar el siguiente código.

from openai import OpenAI
client = OpenAI()

speech_file_path = "speech.mp3"
response = client.audio.speech.create(
  model="tts-1",
  voice="alloy",
  input="I love data science and machine learning"
)

response.stream_to_file(speech_file_path)

 

Deberías ver el archivo de audio en tu directorio. Intente jugarlo y vea si está a la altura de su estándar. 

Actualmente, sólo existen unos pocos parámetros que puede utilizar para el modelo Texto a voz:

  • modelo: el modelo de texto a voz que se utilizará. Sólo hay dos modelos disponibles (tts-1 o tts-1-hd), donde tts-1 optimiza la velocidad y tts-1-hd para la calidad.
  • voz: El estilo de voz a usar donde toda la voz está optimizada para inglés. La selección es aleación, eco, fábula, ónix, nova y brillo.
  • Response_format: el archivo de formato de audio. Actualmente, los formatos admitidos son mp3, opus, aac, flac, wav y pcm.
  • velocidad: La velocidad del audio generado. Puede seleccionar valores entre 0.25 y 4. 
  • entrada: El texto para crear el audio. Actualmente, el modelo sólo admite hasta 4096 caracteres.

OpenAI proporciona los modelos para transcribir y traducir datos de audio. Usando el modelo de susurros, podemos transcribir audio del idioma admitido a archivos de texto y traducirlos al inglés.

Probemos una transcripción simple del archivo de audio que generamos anteriormente.

from openai import OpenAI
client = OpenAI()

audio_file= open("speech.mp3", "rb")
transcription = client.audio.transcriptions.create(
  model="whisper-1",
  file=audio_file
)

print(transcription.text)

 

Me encanta la ciencia de datos y el aprendizaje automático.

También es posible realizar la traducción de los archivos de audio al idioma inglés. El modelo aún no está disponible para traducir a otro idioma.

from openai import OpenAI
client = OpenAI()

audio_file = open("speech.mp3", "rb")
translate = client.audio.translations.create(
  model="whisper-1",
  file=audio_file
)

Hemos explorado varios servicios modelo que ofrece OpenAI, desde modelos de generación de texto, generación de imágenes, generación de audio, visión y texto a voz. Cada modelo tiene su parámetro API y especificaciones que debes conocer antes de usarlos.
 
 

Cornelio Yudha Wijaya es subgerente de ciencia de datos y redactor de datos. Mientras trabaja a tiempo completo en Allianz Indonesia, le encanta compartir consejos sobre datos y Python a través de las redes sociales y los medios escritos. Cornellius escribe sobre una variedad de temas de inteligencia artificial y aprendizaje automático.

punto_img

Información más reciente

punto_img