Logotip Zephyrnet

Raziskovanje OpenAI API s Pythonom – KDnuggets

Datum:

Raziskovanje OpenAI API s Pythonom
Slika ustvarjena z Ideogram.ai
 

Kdo še ni slišal za OpenAI? Raziskovalni laboratorij AI je spremenil svet zaradi svojega slavnega izdelka ChatGPT.

To je dobesedno spremenilo pokrajino implementacije AI in mnoga podjetja zdaj hitijo, da bi postala naslednja velika stvar.

Kljub veliki konkurenci je OpenAI še vedno najboljša družba za vse poslovne potrebe Generative AI, saj ima enega najboljših modelov in stalno podporo. Podjetje ponuja številne najsodobnejše modele generativne umetne inteligence z različnimi zmožnostmi opravil: ustvarjanje slik, pretvorba besedila v govor in še veliko več. 

Vsi modeli, ki jih ponuja OpenAI, so na voljo prek klicev API. S preprosto kodo Python že lahko uporabljate model. 

V tem članku bomo raziskali, kako uporabljati API OpenAI s Pythonom in različna opravila, ki jih lahko izvajate. Upam, da se boste iz tega članka veliko naučili.

Če želite slediti temu članku, morate pripraviti nekaj stvari.

Najpomembnejša stvar, ki jo potrebujete, so ključi API iz OpenAI, saj brez ključa ne morete dostopati do modelov OpenAI. Če želite pridobiti dostop, se morate registrirati za račun OpenAI in zahtevati ključ API na stran račun. Ko prejmete ključ, ga shranite nekam, kjer se lahko spomnite, saj se ne bo več pojavil v vmesniku OpenAI.

Naslednja stvar, ki jo morate nastaviti, je nakup predplačniškega kredita za uporabo API-ja OpenAI. Pred kratkim je OpenAI napovedal spremembe tega, kako njihovo obračunavanje deluje. Namesto plačila ob koncu meseca moramo kupiti predplačniško dobroimetje za klic API. Lahko obiščete Cene OpenAI strani za oceno kredita, ki ga potrebujete. Preverite lahko tudi njihove stran modela da razumete, kateri model potrebujete.

Nazadnje morate v svoje okolje namestiti paket OpenAI Python. To lahko storite z naslednjo kodo.

pip install openai

 

Nato morate s spodnjo kodo nastaviti spremenljivko ključnega okolja OpenAI.

import os

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

 

Ko je vse pripravljeno, začnimo raziskovati API modelov OpenAI s Pythonom.

Zvezda API-ja OpenAI je njihov model Text Generations. Ta družina velikih jezikovnih modelov lahko ustvari besedilni izpis iz vnosa besedila, imenovanega poziv. Pozivi so v bistvu navodila o tem, kaj pričakujemo od modela, kot so analiza besedila, generiranje osnutkov dokumentov in še veliko več.

Začnimo z izvedbo preprostega klica API-ja Text Generations. Kot osnovni model bi uporabili model GPT-3.5-Turbo iz OpenAI. To ni najnaprednejši model, vendar so najcenejši pogosto dovolj za opravljanje besedilnih nalog.

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. "Sprostitev moči napovedne analitike za spodbujanje odločitev, ki temeljijo na podatkih!"
  2. "Potopite se globoko v podatkovni ocean, da odkrijete dragocene vpoglede."
  3. "Pretvorba neobdelanih podatkov v uporabno inteligenco z naprednimi algoritmi."

Klic API-ja za model generiranja besedila uporablja končno točko API-ja klepet.dokončanja da ustvarite besedilni odgovor iz našega poziva. 

Za generiranje besedila sta potrebna dva parametra: model in sporočila. 

Za model lahko preverite seznam modelov, ki jih lahko uporabite na povezani strani modela. 

Kar zadeva sporočila, posredujemo slovar z dvema paroma: vlogo in vsebino. Ključ vloge je določil pošiljatelja vloge v modelu pogovora. Obstajajo 3 različne vloge: sistem, uporabnik in pomočnik.

Z uporabo vloge v sporočilih lahko pomagamo nastaviti vedenje modela in primer, kako naj model odgovori na naš poziv.

Razširimo prejšnji primer kode z vlogo pomočnika, da bi dali smernice za naš model. Poleg tega bi raziskali nekatere parametre za model generiranja besedila, da bi izboljšali njihov rezultat.

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)

 

Seveda! Tu so tri zamisli za vsebino, ki temeljijo na ponujenih žargonih:

  1. »Sprostitev moči podatkovnega spora: vodnik po korakih za podatkovne znanstvenike« – ustvarite objavo v spletnem dnevniku ali video vadnico, ki prikazuje najboljše prakse in orodja za podatkovni spor v resničnem projektu podatkovne znanosti.
  1. »Prihodnost napovedne analitike: Trendi in inovacije v podatkovni znanosti« – Napišite miselno vodstvo, v katerem razpravljate o nastajajočih trendih in tehnologijah v napovedni analitiki in o tem, kako oblikujejo prihodnost podatkovne znanosti.
  1. »Obvladovanje inženiringa funkcij: tehnike za izboljšanje učinkovitosti modela« – razvijte serijo infografik ali družbenih medijev, ki poudarjajo različne tehnike inženiringa funkcij in njihov vpliv na izboljšanje natančnosti in učinkovitosti modelov strojnega učenja.

Končni rezultat sledi primeru, ki smo ga zagotovili modelu. Uporaba pomočnika vloge je uporabna, če imamo določen slog ali rezultat, za katerega želimo, da model sledi.

Kar zadeva parametre, so tukaj preproste razlage vsakega parametra, ki smo ga uporabili:

  • max_tokens: Ta parameter nastavi največje število besed, ki jih lahko ustvari model.
  • temperatura: ta parameter nadzoruje nepredvidljivost izhoda modela. Višja temperatura daje rezultate, ki so bolj raznoliki in domiselni. Sprejemljivo območje je od 0 do neskončnosti, čeprav so vrednosti nad 2 neobičajne.
  • top_p: Ta parameter, znan tudi kot jedrsko vzorčenje, pomaga določiti podmnožico verjetnostne porazdelitve, iz katere model črpa svoje rezultate. Na primer, vrednost top_p 0.1 pomeni, da model za vzorčenje upošteva samo zgornjih 10 % porazdelitve verjetnosti. Njegove vrednosti so lahko v razponu od 0 do 1, pri čemer višje vrednosti omogočajo večjo izhodno raznolikost.
  • pogostnost_kazen: To kaznuje ponavljajoče se žetone v izhodu modela. Kazenska vrednost se lahko giblje od -2 do 2, pri čemer pozitivne vrednosti odvračajo od ponavljanja žetonov, negativne vrednosti pa nasprotno, spodbujajo ponavljajočo se uporabo besed. Vrednost 0 pomeni, da se za ponovitev ne uporabi kazen.

Na koncu lahko spremenite izhod modela v format JSON z naslednjo kodo.

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)

 

{
“žargoni”: [
»Uporaba napovedne analitike za odklepanje dragocenih vpogledov«
"Poglabljanje v zapletenost naprednih algoritmov strojnega učenja",
»Izkoriščanje moči velikih podatkov za spodbujanje odločitev, ki temeljijo na podatkih«
]
}

Rezultat je v formatu JSON in se ujema s pozivom, ki ga vnesemo v model.

Za popolno Dokumentacija API-ja za ustvarjanje besedila, si jih lahko ogledate na njihovi namenski strani.

Model OpenAI je uporaben za primere uporabe generiranja besedila in lahko pokliče API tudi za namene generiranja slik. 

Z uporabo modela DALL·E lahko ustvarimo sliko po želji. Preprost način za izvedbo je uporaba naslednje 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)

 

Raziskovanje OpenAI API s Pythonom
Slika, ustvarjena z DALL·E 3
 

Za parametre so tukaj razlage:

  • Model: Model generiranja slike za uporabo. Trenutno API podpira samo modele DALL·E 3 in DALL·E 2. 
  • poziv: To je besedilni opis, na podlagi katerega bo model ustvaril sliko. 
  • velikost: Določa ločljivost ustvarjene slike. Za model DALL·E 3 so na voljo tri možnosti (1024×1024, 1024×1792 ali 1792×1024).
  • kakovost: ta parameter vpliva na kakovost ustvarjene slike. Če je potreben računski čas, je »standard« hitrejši od »hd«.
  • n: Določi število slik, ki jih je treba ustvariti na podlagi poziva. DALL·E 3 lahko ustvari le eno sliko naenkrat. DALL·E 2 lahko ustvari do 10 naenkrat.

Prav tako je mogoče ustvariti variacijsko sliko iz obstoječe slike, čeprav je na voljo le z uporabo modela DALL·E 2. API sprejema samo kvadratne slike PNG, manjše od 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)

 

Slika morda ne bo tako dobra kot pri generaciji DALL·E 3, saj uporablja starejši model.

OpenAI je vodilno podjetje, ki ponuja modele, ki lahko razumejo vnos slike. Ta model se imenuje model Vision, včasih imenovan GPT-4V. Model je sposoben odgovoriti na vprašanja glede na sliko, ki smo jo dali.

Preizkusimo API modela Vision. V tem primeru bi uporabil sliko belega klavirja, ki jo ustvarimo iz modela DALL·E 3, in jo shranimo lokalno. Prav tako bi ustvaril funkcijo, ki prevzame pot slike in vrne besedilo opisa slike. Ne pozabite spremeniti spremenljivke api_key v svoj ključ 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']

 

Na tej sliki je veliki klavir, postavljen na mirno plažo. Klavir je bel, kar nakazuje zaključek, ki ga pogosto povezujemo z eleganco. Instrument se nahaja tik ob robu obale, kjer nežni valovi rahlo božajo pesek in ustvarjajo peno, ki se le dotakne podnožja klavirja in ujemajočega se stolčka. Okolica plaže daje občutek miru in izolacije z jasnim modrim nebom, puhastimi oblaki v daljavi in ​​mirnim morjem, ki se razteza do obzorja. Okoli klavirja na pesku so raztresene številne školjke različnih velikosti in oblik, ki poudarjajo naravno lepoto in spokojno vzdušje okolice. Kombinacija klasičnega glasbenega inštrumenta v okolju naravne plaže ustvarja nadrealistično in vizualno poetično kompozicijo.

Besedilne vrednosti v zgornjem slovarju lahko prilagodite tako, da ustrezajo zahtevam vašega modela Vision.

OpenAI ponuja tudi model za ustvarjanje zvoka na podlagi njihovega modela pretvorbe besedila v govor. Je zelo enostaven za uporabo, čeprav je slog glasovnega pripovedovanja omejen. Prav tako je model podpiral veliko jezikov, kar lahko vidite na njihovih stran za jezikovno podporo.

Za ustvarjanje zvoka lahko uporabite spodnjo kodo.

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)

 

V svojem imeniku bi morali videti zvočno datoteko. Poskusite igrati in preverite, ali ustreza vašim standardom. 

Trenutno obstaja le nekaj parametrov, ki jih lahko uporabite za model pretvorbe besedila v govor:

  • model: Model besedila v govor za uporabo. Na voljo sta le dva modela (tts-1 ali tts-1-hd), kjer tts-1 optimizira hitrost, tts-1-hd pa kakovost.
  • glas: glasovni slog za uporabo, kjer je ves glas optimiziran za angleščino. Izbira je zlitina, echo, fable, onyx, nova in shimmer.
  • response_format: datoteka z zvočno obliko. Trenutno so podprti formati mp3, opus, aac, flac, wav in pcm.
  • hitrost: ustvarjena hitrost zvoka. Izberete lahko vrednosti med 0.25 in 4. 
  • vnos: besedilo za ustvarjanje zvoka. Trenutno model podpira samo do 4096 znakov.

OpenAI ponuja modele za prepisovanje in prevajanje zvočnih podatkov. Z uporabo modela šepetanja lahko prepišemo zvok iz podprtega jezika v besedilne datoteke in jih prevedemo v angleščino.

Poskusimo s preprostim prepisom iz zvočne datoteke, ki smo jo prej ustvarili.

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)

 

Obožujem podatkovno znanost in strojno učenje.

Možno je tudi prevajanje iz zvočnih datotek v angleški jezik. Model še ni na voljo za prevod v drug jezik.

from openai import OpenAI
client = OpenAI()

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

Raziskali smo več modelov storitev, ki jih ponuja OpenAI, od modelov generiranja besedila, generiranja slik, generiranja zvoka, vida in pretvorbe besedila v govor. Vsak model ima svoj API parameter in specifikacijo, ki se jih morate naučiti, preden jih uporabite.
 
 

Cornellius Yudha Wijaya je vodja podatkovne znanosti in pisec podatkov. Medtem ko dela s polnim delovnim časom pri Allianz Indonesia, rad deli nasvete o Pythonu in podatkih prek družbenih medijev in pisnih medijev. Cornellius piše o različnih temah umetne inteligence in strojnega učenja.

spot_img

Najnovejša inteligenca

spot_img