Zephyrnet-logo

Utforsker OpenAI API med Python – KDnuggets

Dato:

Utforsker OpenAI API med Python
Bilde generert med Ideogram.ai
 

Hvem har ikke hørt om OpenAI? AI-forskningslaboratoriet har forandret verden på grunn av sitt berømte produkt, ChatGPT.

Det endret bokstavelig talt landskapet for AI-implementering, og mange selskaper skynder seg nå for å bli den neste store tingen.

Til tross for mye konkurranse, er OpenAI fortsatt det beste selskapet for alle Generative AI-virksomhetsbehov fordi det har en av de beste modellene og kontinuerlig støtte. Selskapet tilbyr mange toppmoderne Generative AI-modeller med ulike oppgavefunksjoner: Bildegenerering, tekst-til-tale og mange flere. 

Alle modellene OpenAI tilbyr er tilgjengelige via API-kall. Med enkel Python-kode kan du allerede bruke modellen. 

I denne artikkelen vil vi utforske hvordan du bruker OpenAI API med Python og ulike oppgaver du kan gjøre. Jeg håper du lærer mye av denne artikkelen.

For å følge denne artikkelen er det et par ting du må forberede.

Det viktigste du trenger er API-nøklene fra OpenAI, da du ikke får tilgang til OpenAI-modellene uten nøkkelen. For å få tilgang må du registrere deg for en OpenAI-konto og be om API-nøkkelen på kontosiden. Etter at du har mottatt nøkkelen, lagre den et sted du kan huske, siden den ikke vises igjen i OpenAI-grensesnittet.

Det neste du må angi er å kjøpe den forhåndsbetalte kreditten for å bruke OpenAI API. Nylig annonserte OpenAI endringer i hvordan deres fakturering fungerer. I stedet for å betale i slutten av måneden, må vi kjøpe forhåndsbetalt kreditt for API-kallet. Du kan besøke OpenAI-priser side for å anslå kreditten du trenger. Du kan også sjekke deres modellside for å forstå hvilken modell du trenger.

Til slutt må du installere OpenAI Python-pakken i miljøet ditt. Du kan gjøre det ved å bruke følgende kode.

pip install openai

 

Deretter må du angi OpenAI Key Environment-variabelen ved å bruke koden nedenfor.

import os

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

 

Med alt satt, la oss begynne å utforske API-en til OpenAI-modellene med Python.

Stjernen i OpenAI API er deres Text Generations-modell. Disse store språkmodellfamiliene kan produsere tekstutdata fra tekstinndata som kalles ledetekst. Forespørsler er i utgangspunktet instruksjoner om hva vi forventer av modellen, for eksempel tekstanalyse, generering av dokumentutkast og mange flere.

La oss starte med å utføre et enkelt Text Generations API-kall. Vi ville brukt GPT-3.5-Turbo-modellen fra OpenAI som basismodell. Det er ikke den mest avanserte modellen, men de billigste er ofte nok til å utføre tekstrelaterte oppgaver.

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. "Slipp løs kraften til prediktiv analyse for å drive datadrevne beslutninger!"
  2. "Dyp dypt ned i datahavet for å avdekke verdifull innsikt."
  3. "Forvandler rådata til handlingsdyktig intelligens gjennom avanserte algoritmer."

API-kallet for tekstgenereringsmodellen bruker API-endepunktet chat.fullføringer for å lage tekstsvaret fra ledeteksten vår. 

Det er to nødvendige parametere for tekstgenerering: modell og meldinger. 

For modellen kan du sjekke listen over modeller du kan bruke på den relaterte modellsiden. 

Når det gjelder meldingene, passerer vi en ordbok med to par: rollen og innholdet. Rollenøkkelen spesifiserte rollesenderen i samtalemodellen. Det er 3 forskjellige roller: system, bruker og assistent.

Ved å bruke rollen i meldinger kan vi hjelpe med å angi modellatferd og et eksempel på hvordan modellen skal svare på spørsmålet vårt.

La oss utvide det forrige kodeeksemplet med rolleassistenten for å gi veiledning om modellen vår. I tillegg vil vi utforske noen parametere for tekstgenereringsmodellen for å forbedre resultatet.

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)

 

Selvfølgelig! Her er tre innholdsideer basert på sjargongene:

  1. "Slipp løs kraften i datakrangel: En trinnvis veiledning for dataforskere" – Lag et blogginnlegg eller en videoopplæring som viser frem beste praksis og verktøy for datakrangel i et datavitenskapelig prosjekt i den virkelige verden.
  1. "The Future of Predictive Analytics: Trends and Innovations in Data Science" – Skriv et tankelederarbeid som diskuterer nye trender og teknologier innen prediktiv analyse og hvordan de former fremtiden til datavitenskap.
  1. "Mastering Feature Engineering: Techniques to Boost Model Performance" – Utvikle en infografisk eller sosiale medieserie som fremhever forskjellige funksjonsteknikker og deres innvirkning på å forbedre nøyaktigheten og effektiviteten til maskinlæringsmodeller.

Den resulterende utgangen følger eksemplet som vi ga til modellen. Å bruke rolleassistenten er nyttig hvis vi har en bestemt stil eller et bestemt resultat vi ønsker at modellen skal følge.

Når det gjelder parameterne, her er enkle forklaringer av hver parameter vi brukte:

  • max_tokens: Denne parameteren angir maksimalt antall ord modellen kan generere.
  • temperatur: Denne parameteren kontrollerer uforutsigbarheten til modellens utdata. En høyere temperatur resulterer i utganger som er mer varierte og fantasifulle. Det akseptable området er fra 0 til uendelig, selv om verdier over 2 er uvanlige.
  • topp_s: Også kjent som kjerneprøvetaking, hjelper denne parameteren med å bestemme delmengden av sannsynlighetsfordelingen som modellen henter utdata fra. For eksempel betyr en top_p-verdi på 0.1 at modellen kun vurderer de øverste 10 % av sannsynlighetsfordelingen for prøvetaking. Verdiene kan variere fra 0 til 1, med høyere verdier som gir større utgangsdiversitet.
  • frequency_penalty: Dette straffer gjentatte tokens i modellens utdata. Straffeverdien kan variere fra -2 til 2, der positive verdier fraråder repetisjon av tokens, og negative verdier gjør det motsatte, og oppmuntrer til gjentatt ordbruk. En verdi på 0 indikerer at ingen straff pålegges for repetisjon.

Til slutt kan du endre modellutgangen til JSON-formatet med følgende kode.

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)

 

{
"sjargonger": [
"Bruk av prediktiv analyse for å låse opp verdifull innsikt",
"Fordype seg i vanskelighetene med avanserte maskinlæringsalgoritmer",
"Utnytte kraften til big data for å drive datadrevne beslutninger"
]
}

Resultatet er i JSON-format og følger oppfordringen vi legger inn i modellen.

For komplett Tekstgenerering API-dokumentasjon, kan du sjekke dem ut på deres dedikerte side.

OpenAI-modellen er nyttig for brukstilfeller for tekstgenerering og kan også kalle API-en for bildegenereringsformål. 

Ved å bruke DALL·E-modellen kan vi generere et bilde etter forespørsel. Den enkle måten å utføre det på er å bruke følgende kode.

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)

 

Utforsker OpenAI API med Python
Bilde generert med DALL·E 3
 

For parametrene, her er forklaringene:

  • modell: Bildegenereringsmodellen som skal brukes. Foreløpig støtter API bare DALL·E 3 og DALL·E 2-modeller. 
  • teksten: Dette er tekstbeskrivelsen som modellen vil generere et bilde på. 
  • størrelse: Bestemmer oppløsningen til det genererte bildet. Det er tre valg for DALL·E 3-modellen (1024×1024, 1024×1792 eller 1792×1024).
  • kvalitet: Denne parameteren påvirker kvaliteten på det genererte bildet. Hvis beregningstid er nødvendig, er "standard" raskere enn "hd."
  • n: Angir antall bilder som skal genereres basert på ledeteksten. DALL·E 3 kan bare generere ett bilde om gangen. DALL·E 2 kan generere opptil 10 om gangen.

Det er også mulig å generere et variasjonsbilde fra det eksisterende bildet, selv om det kun er tilgjengelig med DALL·E 2-modellen. API-en godtar bare kvadratiske PNG-bilder under 4 MB også.

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)

 

Bildet er kanskje ikke like bra som DALL·E 3-generasjonene ettersom det bruker den eldre modellen.

OpenAI er et ledende selskap som leverer modeller som kan forstå bildeinndata. Denne modellen kalles Vision-modellen, noen ganger kalt GPT-4V. Modellen er i stand til å svare på spørsmål gitt bildet vi ga.

La oss prøve ut Vision model API. I dette eksemplet vil jeg bruke det hvite pianobildet vi genererer fra DALL·E 3-modellen og lagre det lokalt. Jeg vil også lage en funksjon som tar bildebanen og returnerer bildebeskrivelsesteksten. Ikke glem å endre api_key-variabelen til API-nøkkelen din.

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

 

Dette bildet viser et flygel plassert på en rolig strand. Pianoet er hvitt, noe som indikerer en finish som ofte forbindes med eleganse. Instrumentet er plassert rett ved kanten av strandlinjen, der de milde bølgene kjærtegner lett sanden, og skaper et skum som bare berører bunnen av pianoet og den matchende krakken. Strandomgivelsene innebærer en følelse av ro og isolasjon med klarblå himmel, luftige skyer i det fjerne og et stille hav som utvider seg til horisonten. Spredt rundt pianoet på sanden er mange skjell i forskjellige størrelser og former, som fremhever den naturlige skjønnheten og den rolige atmosfæren i omgivelsene. Sammenstillingen av et klassisk musikkinstrument i et naturlig strandmiljø skaper en surrealistisk og visuelt poetisk komposisjon.

Du kan justere tekstverdiene i ordboken ovenfor for å matche dine Vision-modellkrav.

OpenAI tilbyr også en modell for å generere lyd basert på deres tekst-til-tale-modell. Det er veldig enkelt å bruke, selv om stemmefortellingsstilen er begrenset. Modellen har også støttet mange språk, som du kan se på deres språkstøtteside.

For å generere lyden kan du bruke koden nedenfor.

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)

 

Du bør se lydfilen i katalogen din. Prøv å spille det og se om det er opp til standarden din. 

For øyeblikket er det bare noen få parametere du kan bruke for tekst-til-tale-modellen:

  • modell: Tekst-til-tale-modellen som skal brukes. Kun to modeller er tilgjengelige (tts-1 eller tts-1-hd), der tts-1 optimaliserer hastighet og tts-1-hd for kvalitet.
  • stemme: Stemmestilen som skal brukes der alle stemmene er optimalisert til engelsk. Utvalget er legering, ekko, fabel, onyx, nova og shimmer.
  • response_format: Lydformatfilen. For øyeblikket er de støttede formatene mp3, opus, aac, flac, wav og pcm.
  • hastighet: Den genererte lydhastigheten. Du kan velge verdier mellom 0.25 og 4. 
  • input: Teksten for å lage lyden. Foreløpig støtter modellen kun opptil 4096 tegn.

OpenAI gir modellene for å transkribere og oversette lyddata. Ved å bruke whispers-modellen kan vi transkribere lyd fra det støttede språket til tekstfilene og oversette dem til engelsk.

La oss prøve en enkel transkripsjon fra lydfilen vi genererte tidligere.

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)

 

Jeg elsker datavitenskap og maskinlæring.

Det er også mulig å oversette fra lydfilene til det engelske språket. Modellen er ennå ikke tilgjengelig for oversettelse til et annet språk.

from openai import OpenAI
client = OpenAI()

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

Vi har utforsket flere modelltjenester som OpenAI tilbyr, fra tekstgenerering, bildegenerering, lydgenerering, syn og tekst-til-tale-modeller. Hver modell har sin API-parameter og spesifikasjon du må lære deg før du bruker dem.
 
 

Cornellius Yudha Wijaya er assistentleder for datavitenskap og dataskribent. Mens han jobber på heltid i Allianz Indonesia, elsker han å dele Python- og datatips via sosiale medier og skrivemedier. Cornellius skriver om en rekke AI- og maskinlæringsemner.

spot_img

Siste etterretning

spot_img