Zephyrnet-logotyp

Utforska OpenAI API med Python – KDnuggets

Datum:

Utforska OpenAI API med Python
Bild genererad med Ideogram.ai
 

Vem har inte hört talas om OpenAI? AI-forskningslaboratoriet har förändrat världen på grund av sin berömda produkt, ChatGPT.

Det förändrade bokstavligen landskapet för AI-implementering, och många företag skyndar sig nu att bli nästa stora grej.

Trots stor konkurrens är OpenAI fortfarande det bästa företaget för alla Generative AI-företagsbehov eftersom det har en av de bästa modellerna och kontinuerligt stöd. Företaget tillhandahåller många toppmoderna generativa AI-modeller med olika uppgiftsmöjligheter: bildgenerering, text-till-tal och många fler. 

Alla modeller som OpenAI erbjuder är tillgängliga via API-anrop. Med enkel Python-kod kan du redan använda modellen. 

I den här artikeln kommer vi att utforska hur du använder OpenAI API med Python och olika uppgifter du kan göra. Jag hoppas att du lär dig mycket av den här artikeln.

För att följa den här artikeln finns det några saker du behöver förbereda.

Det viktigaste du behöver är API-nycklarna från OpenAI, eftersom du inte kan komma åt OpenAI-modellerna utan nyckeln. För att få åtkomst måste du registrera dig för ett OpenAI-konto och begära API-nyckeln på kontosida. När du har fått nyckeln, spara den någonstans du kan komma ihåg, eftersom den inte kommer att visas igen i OpenAI-gränssnittet.

Nästa sak du behöver ställa in är att köpa den förbetalda krediten för att använda OpenAI API. Nyligen tillkännagav OpenAI ändringar i hur deras fakturering fungerar. Istället för att betala i slutet av månaden måste vi köpa förbetald kredit för API-anropet. Du kan besöka OpenAI-prissättning sida för att uppskatta den kredit du behöver. Du kan också kontrollera deras modellsida för att förstå vilken modell du behöver.

Slutligen måste du installera OpenAI Python-paketet i din miljö. Du kan göra det med följande kod.

pip install openai

 

Sedan måste du ställa in din OpenAI Key Environment-variabel med koden nedan.

import os

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

 

Med allt klart, låt oss börja utforska API:et för OpenAI-modellerna med Python.

Stjärnan i OpenAI API är deras Text Generations-modell. Dessa stora språkmodeller kan producera textutdata från textinmatningen som kallas prompt. Uppmaningar är i grunden instruktioner om vad vi förväntar oss av modellen, som textanalys, generering av dokumentutkast och många fler.

Låt oss börja med att köra ett enkelt Text Generations API-anrop. Vi skulle använda GPT-3.5-Turbo-modellen från OpenAI som basmodell. Det är inte den mest avancerade modellen, men de billigaste räcker ofta för att utföra textrelaterade uppgifter.

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. "Släpp lös kraften i prediktiv analys för att driva datadrivna beslut!"
  2. "Dyka djupt ner i datahavet för att avslöja värdefulla insikter."
  3. "Omvandla rådata till handlingsbar intelligens genom avancerade algoritmer."

API-anropet för textgenereringsmodellen använder API-slutpunkten chat.kompletteringar för att skapa textsvaret från vår prompt. 

Det finns två parametrar som krävs för textgenerering: modell och meddelanden. 

För modellen kan du kontrollera listan över modeller som du kan använda på den relaterade modellsidan. 

När det gäller budskapen passerar vi en ordbok med två par: rollen och innehållet. Rollnyckeln angav rollavsändaren i konversationsmodellen. Det finns 3 olika roller: system, användare och assistent.

Genom att använda rollen i meddelanden kan vi hjälpa till att ställa in modellens beteende och ett exempel på hur modellen ska svara på vår uppmaning.

Låt oss utöka det tidigare kodexemplet med rollassistenten för att ge vägledning om vår modell. Dessutom skulle vi utforska några parametrar för textgenereringsmodellen för att förbättra deras resultat.

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)

 

Självklart! Här är tre innehållsidéer baserade på jargongerna:

  1. "Släpp lös kraften i datatvistelse: En steg-för-steg-guide för dataforskare" – Skapa ett blogginlägg eller videohandledning som visar upp bästa praxis och verktyg för datatvistelse i ett verkligt datavetenskapligt projekt.
  1. "The Future of Predictive Analytics: Trends and Innovations in Data Science" – Skriv ett tankeledarskap som diskuterar framväxande trender och teknologier inom prediktiv analys och hur de formar framtiden för datavetenskap.
  1. "Mastering Feature Engineering: Techniques to Boost Model Performance" – Utveckla en infografisk eller social mediaserie som lyfter fram olika funktionstekniker och deras inverkan på att förbättra noggrannheten och effektiviteten hos modeller för maskininlärning.

Den resulterande produktionen följer exemplet som vi gav till modellen. Att använda rollassistenten är användbart om vi har en viss stil eller resultat som vi vill att modellen ska följa.

När det gäller parametrarna, här är enkla förklaringar av varje parameter som vi använde:

  • max_tokens: Denna parameter ställer in det maximala antalet ord som modellen kan generera.
  • temperatur: Denna parameter styr oförutsägbarheten av modellens utdata. En högre temperatur resulterar i utgångar som är mer varierande och fantasifulla. Det acceptabla området är från 0 till oändligt, även om värden över 2 är ovanliga.
  • top_p: Även känd som kärnsampling, den här parametern hjälper till att bestämma delmängden av sannolikhetsfördelningen från vilken modellen hämtar sin utdata. Till exempel betyder ett top_p-värde på 0.1 att modellen endast tar hänsyn till de översta 10 % av sannolikhetsfördelningen för sampling. Dess värden kan variera från 0 till 1, med högre värden som möjliggör större utdatadiversitet.
  • frequency_penalty: Detta straffar upprepade tokens i modellens utdata. Straffvärdet kan variera från -2 till 2, där positiva värden motverkar upprepning av tokens, och negativa värden gör det motsatta, vilket uppmuntrar upprepad ordanvändning. Ett värde på 0 indikerar att ingen påföljd tillämpas för upprepning.

Slutligen kan du ändra modellutgången till JSON-formatet med följande kod.

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)

 

{
"jargonger": [
"Att utnyttja prediktiv analys för att låsa upp värdefulla insikter",
"Gräver ner sig i krångligheterna med avancerade maskininlärningsalgoritmer",
"Att utnyttja kraften i big data för att driva datadrivna beslut"
]
}

Resultatet är i JSON-format och följer uppmaningen vi matar in i modellen.

För fullständigt Text Generation API dokumentation, kan du kolla in dem på deras dedikerade sida.

OpenAI-modellen är användbar för användningsfall för textgenerering och kan även anropa API:et för bildgenereringsändamål. 

Med DALL·E-modellen kan vi generera en bild enligt önskemål. Det enkla sättet att utföra det är att använda följande kod.

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)

 

Utforska OpenAI API med Python
Bild genererad med DALL·E 3
 

För parametrarna, här är förklaringarna:

  • modell: Bildgenereringsmodellen som ska användas. För närvarande stöder API:et endast modellerna DALL·E 3 och DALL·E 2. 
  • snabb: Detta är textbeskrivningen som modellen kommer att generera en bild på. 
  • Storlek: Bestämmer upplösningen för den genererade bilden. Det finns tre val för DALL·E 3-modellen (1024×1024, 1024×1792 eller 1792×1024).
  • kvalitet: Denna parameter påverkar kvaliteten på den genererade bilden. Om beräkningstid behövs är "standard" snabbare än "hd."
  • n: Anger antalet bilder som ska genereras baserat på uppmaningen. DALL·E 3 kan bara generera en bild åt gången. DALL·E 2 kan generera upp till 10 åt gången.

Det är också möjligt att generera en variationsbild från den befintliga bilden, även om den endast är tillgänglig med DALL·E 2-modellen. API:et accepterar bara fyrkantiga PNG-bilder under 4 MB också.

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)

 

Bilden kanske inte är lika bra som DALL·E 3-generationerna eftersom den använder den äldre modellen.

OpenAI är ett ledande företag som tillhandahåller modeller som kan förstå bildinmatning. Denna modell kallas Vision-modellen, ibland kallad GPT-4V. Modellen är kapabel att svara på frågor givet den bild vi gav.

Låt oss prova Vision model API. I det här exemplet skulle jag använda den vita pianobilden vi genererar från DALL·E 3-modellen och lagra den lokalt. Jag skulle också skapa en funktion som tar bildvägen och returnerar bildbeskrivningstexten. Glöm inte att ändra api_key-variabeln till din API-nyckel.

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

 

Detta avbildar presenterar en flygel som placeras på en fridfull strandinställning. Pianot är vitt, vilket indikerar en finish som ofta förknippas med elegans. Instrumentet är placerat precis vid kanten av strandlinjen, där de mjuka vågorna lätt smeker sanden och skapar ett skum som precis vidrör basen på pianot och den matchande pallen. Strandomgivningen innebär en känsla av lugn och isolering med klarblå himmel, fluffiga moln i fjärran och ett lugnt hav som breder ut sig mot horisonten. Utspridda runt pianot på sanden finns många snäckskal i olika storlekar och former, som framhäver den naturliga skönheten och den fridfulla atmosfären i miljön. Kombinationen av ett klassiskt musikinstrument i en naturlig strandmiljö skapar en surrealistisk och visuellt poetisk komposition.

Du kan justera textvärdena i ordboken ovan för att matcha dina Vision-modellkrav.

OpenAI tillhandahåller också en modell för att generera ljud baserat på deras Text-to-Speech-modell. Det är väldigt lätt att använda, även om röstberättarstilen är begränsad. Modellen har också stöd för många språk, vilket du kan se på deras språksupportsida.

För att generera ljudet kan du använda koden nedan.

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 ljudfilen i din katalog. Försök att spela det och se om det är upp till din standard. 

För närvarande finns det bara ett fåtal parametrar du kan använda för Text-to-Speech-modellen:

  • modell: Text-till-tal-modellen som ska användas. Endast två modeller finns tillgängliga (tts-1 eller tts-1-hd), där tts-1 optimerar hastighet och tts-1-hd för kvalitet.
  • röst: Röststilen som ska användas där alla röster är optimerade för engelska. Urvalet är legering, eko, fabel, onyx, nova och skimmer.
  • response_format: Ljudformatfilen. För närvarande är de format som stöds mp3, opus, aac, flac, wav och pcm.
  • hastighet: Den genererade ljudhastigheten. Du kan välja värden mellan 0.25 och 4. 
  • input: Texten för att skapa ljudet. För närvarande stöder modellen endast upp till 4096 tecken.

OpenAI tillhandahåller modellerna för att transkribera och översätta ljuddata. Med hjälp av whispers-modellen kan vi transkribera ljud från det språk som stöds till textfilerna och översätta dem till engelska.

Låt oss prova en enkel transkription från ljudfilen vi genererade tidigare.

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)

 

Jag älskar datavetenskap och maskininlärning.

Det är också möjligt att utföra översättning från ljudfilerna till det engelska språket. Modellen är ännu inte tillgänglig för översättning till ett annat 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 utforskat flera modelltjänster som OpenAI tillhandahåller, från textgenerering, bildgenerering, ljudgenerering, vision och text-till-tal-modeller. Varje modell har sin API-parameter och specifikation som du behöver lära dig innan du använder dem.
 
 

Cornellius Yudha Wijaya är biträdande chef för datavetenskap och dataskribent. Medan han arbetar heltid på Allianz Indonesia älskar han att dela Python- och datatips via sociala medier och skrivande media. Cornellius skriver om en mängd olika AI- och maskininlärningsämnen.

plats_img

Senaste intelligens

plats_img