Zephyrnet-logo

De OpenAI API verkennen met Python – KDnuggets

Datum:

De OpenAI API verkennen met Python
Afbeelding gegenereerd met Ideogram.ai
 

Wie heeft er nog nooit van OpenAI gehoord? Het AI-onderzoekslaboratorium heeft de wereld veranderd dankzij zijn beroemde product ChatGPT.

Het veranderde letterlijk het landschap van AI-implementatie, en veel bedrijven haasten zich nu om het volgende grote ding te worden.

Ondanks veel concurrentie is OpenAI nog steeds het go-to-bedrijf voor alle zakelijke behoeften op het gebied van generatieve AI, omdat het een van de beste modellen en voortdurende ondersteuning heeft. Het bedrijf biedt veel geavanceerde generatieve AI-modellen met verschillende taakmogelijkheden: het genereren van afbeeldingen, tekst-naar-spraak en nog veel meer. 

Alle modellen die OpenAI aanbiedt zijn beschikbaar via API-aanroepen. Met eenvoudige Python-code kun je het model al gebruiken. 

In dit artikel zullen we onderzoeken hoe u de OpenAI API met Python kunt gebruiken en welke taken u kunt uitvoeren. Ik hoop dat je veel leert van dit artikel.

Om dit artikel te volgen, zijn er een paar dingen die je moet voorbereiden.

Het belangrijkste dat u nodig heeft zijn de API Keys van OpenAI, aangezien u zonder de sleutel geen toegang heeft tot de OpenAI-modellen. Om toegang te krijgen, moet u zich registreren voor een OpenAI-account en de API-sleutel aanvragen op de accountpagina. Nadat u de sleutel heeft ontvangen, bewaart u deze ergens waar u zich kunt herinneren, aangezien deze niet meer zal verschijnen in de OpenAI-interface.

Het volgende dat u moet instellen, is het kopen van prepaidtegoed om de OpenAI API te gebruiken. Onlangs heeft OpenAI wijzigingen aangekondigd in de manier waarop hun facturering werkt. In plaats van aan het einde van de maand te betalen, moeten we prepaidtegoed kopen voor de API-oproep. U kunt een bezoek brengen aan de OpenAI-prijzen pagina om het benodigde krediet te schatten. Je kunt ook hun modelpagina om te begrijpen welk model u nodig heeft.

Ten slotte moet u het OpenAI Python-pakket in uw omgeving installeren. Dat kun je doen met behulp van de volgende code.

pip install openai

 

Vervolgens moet u uw OpenAI Key Environment-variabele instellen met behulp van de onderstaande code.

import os

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

 

Nu alles klaar is, gaan we de API van de OpenAI-modellen met Python verkennen.

De ster van OpenAI API is hun Text Generations-model. Deze familie van grote taalmodellen kan tekstuitvoer produceren via de tekstinvoer die prompt wordt genoemd. Aanwijzingen zijn in feite instructies over wat we van het model verwachten, zoals tekstanalyse, het genereren van documentconcepten en nog veel meer.

Laten we beginnen met het uitvoeren van een eenvoudige Text Generations API-aanroep. We zouden het GPT-3.5-Turbo-model van OpenAI als basismodel gebruiken. Het is niet het meest geavanceerde model, maar de goedkoopste zijn vaak voldoende om tekstgerelateerde taken uit te voeren.

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. “Ontketen de kracht van voorspellende analyses om datagestuurde beslissingen te nemen!”
  2. “Diep in de data-oceaan duiken om waardevolle inzichten te ontdekken.”
  3. “Het transformeren van ruwe data in bruikbare intelligentie via geavanceerde algoritmen.”

De API-aanroep voor het tekstgeneratiemodel maakt gebruik van het API-eindpunt chat.voltooiingen om het tekstantwoord van onze prompt te maken. 

Er zijn twee vereiste parameters voor het genereren van tekst: model en berichten. 

Voor het model kunt u de lijst met modellen bekijken die u kunt gebruiken op de gerelateerde modelpagina. 

Wat de berichten betreft, geven we een woordenboek door met twee paren: de rol en de inhoud. De rolsleutel specificeerde de rolafzender in het gespreksmodel. Er zijn 3 verschillende rollen: systeem, gebruiker en assistent.

Met behulp van de rol in berichten kunnen we helpen bij het instellen van het modelgedrag en een voorbeeld geven van hoe het model onze prompt moet beantwoorden.

Laten we het vorige codevoorbeeld uitbreiden met de rolassistent om richtlijnen te geven voor ons model. Daarnaast zouden we enkele parameters voor het tekstgeneratiemodel onderzoeken om het resultaat ervan te verbeteren.

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)

 

Natuurlijk! Hier zijn drie inhoudsideeën gebaseerd op de aangeboden jargons:

  1. “Unleashing the Power of Data Wrangling: A Step-by-Step Guide for Data Scientists” – Maak een blogpost of videotutorial waarin best practices en tools voor datawrangling in een realistisch datawetenschapsproject worden gepresenteerd.
  1. “De toekomst van voorspellende analyses: trends en innovaties in datawetenschap” – Schrijf een thought leadership-stuk waarin opkomende trends en technologieën in voorspellende analyses worden besproken en hoe deze de toekomst van datawetenschap vormgeven.
  1. “Mastering Feature Engineering: Techniques to Boost Model Performance” – Ontwikkel een infographic of social media-serie waarin verschillende feature engineering-technieken worden belicht en hun impact op het verbeteren van de nauwkeurigheid en efficiëntie van machine learning-modellen.

De resulterende uitvoer volgt het voorbeeld dat we aan het model hebben gegeven. Het gebruik van de rolassistent is handig als we een bepaalde stijl of resultaat willen dat het model volgt.

Wat de parameters betreft, volgt hier een eenvoudige uitleg van elke parameter die we hebben gebruikt:

  • max_tokens: Deze parameter stelt het maximale aantal woorden in dat het model kan genereren.
  • temperatuur-: Deze parameter bepaalt de onvoorspelbaarheid van de uitvoer van het model. Een hogere temperatuur resulteert in outputs die gevarieerder en fantasierijker zijn. Het acceptabele bereik loopt van 0 tot oneindig, hoewel waarden boven de 2 ongebruikelijk zijn.
  • top_p: Deze parameter, ook bekend als kernbemonstering, helpt bij het bepalen van de subset van de waarschijnlijkheidsverdeling waaruit het model zijn output haalt. Een top_p-waarde van 0.1 betekent bijvoorbeeld dat het model alleen rekening houdt met de bovenste 10% van de kansverdeling voor steekproeven. De waarden kunnen variëren van 0 tot 1, waarbij hogere waarden een grotere outputdiversiteit mogelijk maken.
  • frequentie_straf: Dit bestraft herhaalde tokens in de uitvoer van het model. De strafwaarde kan variëren van -2 tot 2, waarbij positieve waarden de herhaling van tokens ontmoedigen, en negatieve waarden het tegenovergestelde doen, waardoor herhaald woordgebruik wordt aangemoedigd. Een waarde van 0 geeft aan dat er geen straf wordt opgelegd voor herhaling.

Ten slotte kunt u de modeluitvoer wijzigen in het JSON-formaat met de volgende code.

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)

 

{
“jargon”: [
“Gebruik maken van voorspellende analyses om waardevolle inzichten te ontsluiten”,
“Verdiepen in de fijne kneepjes van geavanceerde machine learning-algoritmen”,
“De kracht van big data benutten om datagestuurde beslissingen te nemen”
]
}

Het resultaat is in JSON-indeling en volgt de prompt die we in het model invoeren.

Voor de volledigheid Documentatie voor het genereren van tekst-API, je kunt ze bekijken op hun speciale pagina.

Het OpenAI-model is handig voor gebruiksscenario's voor het genereren van tekst en kan de API ook aanroepen voor het genereren van afbeeldingen. 

Met behulp van het DALL·E-model kunnen we op verzoek een afbeelding genereren. De eenvoudige manier om dit uit te voeren is met behulp van de volgende code.

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)

 

De OpenAI API verkennen met Python
Afbeelding gegenereerd met DALL·E 3
 

Voor de parameters volgt hier de uitleg:

  • model: Het te gebruiken model voor het genereren van afbeeldingen. Momenteel ondersteunt de API alleen DALL·E 3- en DALL·E 2-modellen. 
  • prompt: Dit is de tekstuele beschrijving op basis waarvan het model een afbeelding zal genereren. 
  • grootte: Bepaalt de resolutie van de gegenereerde afbeelding. Er zijn drie keuzes voor het DALL·E 3-model (1024×1024, 1024×1792 of 1792×1024).
  • kwaliteit: Deze parameter beïnvloedt de kwaliteit van de gegenereerde afbeelding. Als er rekentijd nodig is, is ‘standaard’ sneller dan ‘hd’.
  • n: specificeert het aantal afbeeldingen dat moet worden gegenereerd op basis van de prompt. DALL·E 3 kan slechts één afbeelding tegelijk genereren. DALL·E 2 kan maximaal 10 tegelijk genereren.

Het is ook mogelijk om een ​​variatieafbeelding te genereren op basis van de bestaande afbeelding, hoewel dit alleen beschikbaar is met het DALL·E 2-model. De API accepteert ook alleen vierkante PNG-afbeeldingen van minder dan 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)

 

Het beeld is mogelijk niet zo goed als dat van de DALL·E 3-generaties, omdat het oudere model wordt gebruikt.

OpenAI is een toonaangevend bedrijf dat modellen levert die beeldinvoer kunnen begrijpen. Dit model wordt het Vision-model genoemd, ook wel GPT-4V genoemd. Het model is in staat vragen te beantwoorden gezien het beeld dat we gaven.

Laten we de Vision-model-API uitproberen. In dit voorbeeld zou ik de witte pianoafbeelding gebruiken die we genereren op basis van het DALL·E 3-model en deze lokaal opslaan. Ik zou ook een functie maken die het afbeeldingspad neemt en de beschrijvingstekst van de afbeelding retourneert. Vergeet niet de variabele api_key te wijzigen in uw API-sleutel.

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']

 

Op deze afbeelding is een vleugel te zien die op een rustige strandomgeving is geplaatst. De piano is wit, wat duidt op een afwerking die vaak wordt geassocieerd met elegantie. Het instrument bevindt zich precies aan de rand van de kustlijn, waar de zachte golven het zand lichtjes strelen, waardoor een schuim ontstaat dat net de voet van de piano en de bijpassende kruk raakt. De strandomgeving impliceert een gevoel van rust en isolatie met een helderblauwe lucht, pluizige wolken in de verte en een kalme zee die zich uitstrekt tot aan de horizon. Verspreid rond de piano op het zand liggen talloze schelpen in verschillende maten en vormen, die de natuurlijke schoonheid en serene sfeer van de omgeving benadrukken. De nevenschikking van een klassiek muziekinstrument in een natuurlijke strandomgeving creëert een surrealistische en visueel poëtische compositie.

U kunt de tekstwaarden in het bovenstaande woordenboek aanpassen aan de vereisten van uw Vision-model.

OpenAI biedt ook een model om audio te genereren op basis van hun Text-to-Speech-model. Het is heel gemakkelijk te gebruiken, hoewel de gesproken vertelstijl beperkt is. Ook heeft het model vele talen ondersteund, wat u kunt zien op hun taalondersteuningspagina.

Om de audio te genereren, kunt u de onderstaande code gebruiken.

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)

 

U zou het audiobestand in uw map moeten zien. Probeer het te spelen en kijk of het aan jouw standaard voldoet. 

Momenteel zijn er slechts een paar parameters die u kunt gebruiken voor het tekst-naar-spraak-model:

  • model: het te gebruiken tekst-naar-spraak-model. Er zijn slechts twee modellen beschikbaar (tts-1 of tts-1-hd), waarbij tts-1 de snelheid optimaliseert en tts-1-hd voor kwaliteit.
  • stem: de te gebruiken stemstijl waarbij alle stemmen zijn geoptimaliseerd voor Engels. De selectie is legering, echo, fabel, onyx, nova en glans.
  • response_format: Het audioformaatbestand. Momenteel zijn de ondersteunde formaten mp3, opus, aac, flac, wav en pcm.
  • snelheid: de gegenereerde audiosnelheid. U kunt waarden tussen 0.25 en 4 selecteren. 
  • invoer: de tekst om de audio te maken. Momenteel ondersteunt het model maximaal 4096 tekens.

OpenAI biedt de modellen voor het transcriberen en vertalen van audiogegevens. Met behulp van het fluistermodel kunnen we audio van de ondersteunde taal naar de tekstbestanden transcriberen en deze naar het Engels vertalen.

Laten we een eenvoudige transcriptie proberen van het audiobestand dat we eerder hebben gegenereerd.

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)

 

Ik hou van datawetenschap en machine learning.

Het is ook mogelijk om de audiobestanden naar de Engelse taal te vertalen. Het model kan nog niet naar een andere taal worden vertaald.

from openai import OpenAI
client = OpenAI()

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

We hebben verschillende modelservices onderzocht die OpenAI biedt, van tekstgeneratie, beeldgeneratie, audiogeneratie, visie en tekst-naar-spraak-modellen. Elk model heeft zijn eigen API-parameter en specificatie die u moet leren voordat u ze gebruikt.
 
 

Cornellius Yudha Wijaya is een data science assistent-manager en dataschrijver. Terwijl hij fulltime bij Allianz Indonesia werkt, deelt hij graag Python- en datatips via sociale media en schrijfmedia. Cornellius schrijft over verschillende AI- en machine learning-onderwerpen.

spot_img

Laatste intelligentie

spot_img