自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

使用Python探究OpenAI API 原創(chuàng)

發(fā)布于 2024-5-21 08:57
瀏覽
0收藏

不妨了解可以從OpenAI享用的所有實(shí)用服務(wù)。

誰(shuí)沒聽說過OpenAI?這家人工智能研究實(shí)驗(yàn)室因其著名的產(chǎn)品ChatGPT而改變了世界。它改變了AI實(shí)施領(lǐng)域,許多公司現(xiàn)在急于成為下一大熱點(diǎn)。

盡管競(jìng)爭(zhēng)激烈,OpenAI仍然是任何生成式AI業(yè)務(wù)需求的首選公司,因?yàn)樗鼡碛凶詈玫哪P秃统掷m(xù)的支持。該公司提供了許多最先進(jìn)的生成式AI模型,能夠處理各種任務(wù):圖像生成和文本到語(yǔ)音等。

OpenAI提供的所有模型都可以通過API調(diào)用獲得。借助簡(jiǎn)單的Python代碼,您已經(jīng)可以使用該模型。

我們?cè)诒疚闹袑⑻接懭绾谓Y(jié)合使用OpenAI API和Python以及可以執(zhí)行的各種任務(wù)。但愿您能從這篇文章中學(xué)到很多。

OpenAI API設(shè)置

要閱讀本文,您需要準(zhǔn)備好幾個(gè)方面。

最重要的是OpenAI的API密鑰,因?yàn)闆]有密鑰就無法訪問OpenAI模型。要獲得訪問權(quán)限,您必須注冊(cè)O(shè)penAI帳戶,并在帳戶頁(yè)面上申請(qǐng)API密鑰。收到密鑰后,將其保存在能夠記住的地方,因?yàn)樗粫?huì)再次出現(xiàn)在OpenAI界面中。

需要做的下一件事是購(gòu)買預(yù)付費(fèi)積分以使用OpenAI API。最近,OpenAI宣布改變計(jì)費(fèi)方式。我們需要為API調(diào)用購(gòu)買預(yù)付費(fèi)積分,而不是在月底支付。您可以訪問OpenAI定價(jià)頁(yè)面來估算所需的積分。還可以查看模型頁(yè)面,以了解您需要哪種模型。

最后,您需要在生產(chǎn)環(huán)境中安裝OpenAI Python軟件包。您可以使用下面的代碼做到這一點(diǎn)。

pip install openai

然后,您需要使用下面的代碼設(shè)置OpenAI Key環(huán)境變量。

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

一切設(shè)置完畢后,不妨開始使用Python探索OpenAI模型的API。

OpenAI API文本生成

OpenAI API的明星是其文本生成模型。這些大語(yǔ)言模型系列可以從名為提示的文本輸入生成文本輸出。提示實(shí)際上是關(guān)于我們期望從模型中得到什么的指令,比如分析文本和生成文檔草稿等。

不妨從執(zhí)行一個(gè)簡(jiǎn)單的文本生成API調(diào)用入手。我們將使用OpenAI的GPT-3.5 Turbo模型作為基礎(chǔ)模型。它不是最先進(jìn)的模型,但最便宜的模型常常足以執(zhí)行與文本相關(guān)的任務(wù)。

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)
  • “釋放預(yù)測(cè)分析的力量,推動(dòng)數(shù)據(jù)驅(qū)動(dòng)的決策!”
  • “深入挖掘數(shù)據(jù)海洋,發(fā)現(xiàn)有價(jià)值的見解?!?/li>
  • “通過先進(jìn)算法將原始數(shù)據(jù)轉(zhuǎn)化為實(shí)用的情報(bào)?!?/li>

文本生成模型的API調(diào)用使用API Endpoint chat.completions從提示創(chuàng)建文本響應(yīng)。

文本生成需要兩個(gè)參數(shù):模型和消息。

至于模型,您可以檢查可以在相關(guān)模型頁(yè)面上使用的模型列表。

至于消息,我們傳遞一個(gè)含有兩個(gè)對(duì)的字典:角色和內(nèi)容。角色鍵指定了對(duì)話模型中的角色發(fā)送方。有三種不同的角色:系統(tǒng)、用戶和助手。

使用消息中的角色,我們可以幫助設(shè)置模型行為和模型應(yīng)該如何回答提示的示例。

不妨使用角色助手?jǐn)U展前面的代碼示例,以指導(dǎo)我們的模型。此外,我們將探索文本生成模型的一些參數(shù),以改進(jìn)結(jié)果。

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)

當(dāng)然!以下是基于提供的行語(yǔ)的三個(gè)內(nèi)容思路:

  • “釋放數(shù)據(jù)處理的力量:數(shù)據(jù)科學(xué)家的逐步指南”——?jiǎng)?chuàng)建一篇博文或視頻教程,展示實(shí)際數(shù)據(jù)科學(xué)項(xiàng)目中數(shù)據(jù)處理的最佳實(shí)踐和工具。
  • “預(yù)測(cè)分析的未來:數(shù)據(jù)科學(xué)的趨勢(shì)和創(chuàng)新”——撰寫一篇思想領(lǐng)袖文章,討論預(yù)測(cè)分析領(lǐng)域的新興趨勢(shì)和技術(shù),以及它們?nèi)绾嗡茉鞌?shù)據(jù)科學(xué)的未來。
  • “駕馭特征工程:提升模型性能的技術(shù)”——開發(fā)一個(gè)信息圖表或社交媒體系列,著重介紹不同的特征工程技術(shù)及其對(duì)提高機(jī)器學(xué)習(xí)模型的準(zhǔn)確性和效率的影響。

生成的輸出遵循我們提供給模型的示例。如果我們希望模型遵循某種樣式或結(jié)果,那么使用角色助手非常有用。

至于參數(shù),下面簡(jiǎn)單解釋我們使用的每個(gè)參數(shù):

  • max_tokens:該參數(shù)設(shè)置模型可以生成的最多字?jǐn)?shù)。
  • temperature:該參數(shù)控制模型輸出的不可預(yù)測(cè)性。該參數(shù)值越高,輸出越具有多樣性,越富有想象力??山邮艿姆秶菑?到無窮大,但大于2的值不尋常。
  • top_p:又叫核抽樣,該參數(shù)有助于確定模型得出輸出所依賴的概率分布的子集。比如說,top_p值為0.1意味著模型只考慮抽樣概率分布的前10%。其值可以從0到1,值越大,輸出多樣性越大。
  • frequency_penalty:這懲罰模型輸出中的重復(fù)token。懲罰值的范圍從-2到2,其中正值不鼓勵(lì)重復(fù)使用token,負(fù)值則相反,鼓勵(lì)重復(fù)使用單詞。值為0表示不會(huì)對(duì)重復(fù)進(jìn)行懲罰。

最后,您可以使用以下代碼將模型輸出改為JSON格式。

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)
 
{
"jargons": [
"利用預(yù)測(cè)分析發(fā)掘?qū)氋F的洞察力",
"深入研究先進(jìn)機(jī)器學(xué)習(xí)算法的微妙細(xì)處",
"利用大數(shù)據(jù)的力量推動(dòng)數(shù)據(jù)驅(qū)動(dòng)的決策"
]
}

結(jié)果采用JSON格式,并遵循我們輸入到模型中的提示。

要獲得完整的文本生成API文檔,您可以在專門的頁(yè)面上查看。

OpenAI圖像生成

OpenAI模型對(duì)于文本生成用例很有用,也可以調(diào)用API以生成圖像。

使用DALL?E模型,我們可以按要求生成圖像。執(zhí)行起來很簡(jiǎn)單,只需使用以下代碼。

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)

針對(duì)這些參數(shù),解釋如下:

  • model:要使用的圖像生成模型。目前,API只支持DALL?E 3和DALL?E 2模型。
  • prompt:這是文本描述,模型將在此基礎(chǔ)上生成圖像。
  • size:決定生成圖像的分辨率。DALL?E3模型有三種選擇:1024x1024、1024x1792或1792x1024。
  • quality:該參數(shù)影響生成圖像的質(zhì)量。如果需要計(jì)算時(shí)間,“標(biāo)準(zhǔn)”比“高清”快。
  • n:指定基于提示生成圖像的數(shù)量。DALL?E3一次只能生成一個(gè)圖像。DALL?E2一次可以生成多達(dá)10個(gè)圖像。

還可以從現(xiàn)有的圖像生成一個(gè)衍變圖像,不過只能使用DALL?E2模型做到這點(diǎn)。API也只接受4 MB以下的正方形PNG圖像。

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)

生成的圖像可能不如DALL?E 3好,因?yàn)樗褂门f模型。

OpenAI Vision

OpenAI是一家提供能夠理解圖像輸入的模型的領(lǐng)先公司。這個(gè)模型名為Vision模型,有時(shí)被稱為GPT-4V。該模型能夠根據(jù)我們給出的圖像回答問題。

不妨試一下Vision模型API。在本例中,我將使用從DALL?E3模型生成的白色鋼琴圖像,并將其存儲(chǔ)在本地。此外,我還將創(chuàng)建一個(gè)函數(shù),接受圖像路徑并返回圖像描述文本。別忘了將api_key變量改為您的API Key。

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

這個(gè)圖像顯示一架大鋼琴擺放在寧?kù)o的海灘上。鋼琴是白色的,表明一種常與優(yōu)雅聯(lián)系在一起的色調(diào)。樂器放在海岸線的邊緣,輕柔的海浪輕撫沙灘,泛起泡沫,正好碰到鋼琴的底座和配套的凳子。海灘周圍的環(huán)境暗示著一種寧?kù)o和隔絕的感覺,清澈的藍(lán)天,遠(yuǎn)處蓬松的云,平靜的大海延伸到地平線。無數(shù)大小形狀各異的貝殼散落在沙灘上鋼琴的周圍,突出了環(huán)境的自然美和寧?kù)o的氛圍。自然海灘環(huán)境中的古典樂器創(chuàng)造了超現(xiàn)實(shí)和畫面充滿詩(shī)意的構(gòu)圖。

您可以調(diào)整上面字典中的文本值以匹配您的Vision模型要求。

OpenAI音頻生成

OpenAI還提供了基于文本到語(yǔ)音模型生成音頻的模型。它非常易于使用,不過語(yǔ)音敘述風(fēng)格很有限。此外,模型支持許多語(yǔ)言,您可以在語(yǔ)言支持頁(yè)面上看到這些語(yǔ)言。

要生成音頻,可以使用下面的代碼。

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)

您應(yīng)該會(huì)在目錄中看到音頻文件。試著播放一下,看看是否符合標(biāo)準(zhǔn)。

目前,只有幾個(gè)參數(shù)可以用于文本到語(yǔ)音模型:

  • model:要使用的文本到語(yǔ)音模型。只有兩種模型可用:ts-1或ts-1-hd,其中ts-1優(yōu)化速度,ts-1-hd優(yōu)化質(zhì)量。
  • voice:使用的語(yǔ)音樣式,所有聲音都被優(yōu)化為英語(yǔ)。選擇有alloy、echo、fable、onyx、nova和shimmer。
  • response_format:音頻格式文件。目前支持的格式有mp3、opus、aac、flac、wav和pcm。
  • speed:生成的音頻速度。您可以選擇0.25到4之間的值。
  • input:用于創(chuàng)建音頻的文本。目前,模型最多支持4096個(gè)字符。

OpenAI語(yǔ)音到文本

OpenAI提供了轉(zhuǎn)錄和翻譯音頻數(shù)據(jù)的模型。使用Whispers模型,我們可以將音頻從支持的語(yǔ)言轉(zhuǎn)錄到文本文件中,并將其翻譯成英語(yǔ)。

不妨從我們之前生成的音頻文件中嘗試簡(jiǎn)單的轉(zhuǎn)錄。

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)

我喜歡數(shù)據(jù)科學(xué)和機(jī)器學(xué)習(xí)。

還可以將音頻文件翻譯成英語(yǔ)。模型還無法翻譯成另一種語(yǔ)言。

from openai import OpenAI
client = OpenAI()

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

結(jié)論

我們已經(jīng)探討了OpenAI提供的幾項(xiàng)模型服務(wù),從文本生成、圖像生成、音頻生成、視覺和文本到語(yǔ)音模型。每個(gè)模型都有自己的API參數(shù)和規(guī)范,您需要在使用它們之前有所了解。

原文標(biāo)題:Exploring the OpenAI API with Python,作者:Cornellius Yudha Wijaya

鏈接:https://www.kdnuggets.com/exploring-the-openai-api-with-python。

?著作權(quán)歸作者所有,如需轉(zhuǎn)載,請(qǐng)注明出處,否則將追究法律責(zé)任
收藏
回復(fù)
舉報(bào)
回復(fù)
相關(guān)推薦