見出し画像

OpenAI Python API Library v1.0 入門

「OpenAI Python API Library」のインタフェースが一新されたので、かるくまとめ直しました。

OpenAI Python API library v1.1.1


1. OpenAI Python API Library

Pythonで「OpenAI API」にアクセスするには「OpenAI Python API Library」を使います。

2. セットアップ

Colabでのセットアップ手順は、次のとおりです。

(1) パッケージのインストール。

# パッケージのインストール
!pip install openai

(2) 環境変数の準備。
以下のコードの <OpenAI_APIキー> にはOpenAIのサイトで取得できるAPIキーを指定します。(有料)

import os
os.environ["OPENAI_API_KEY"] = "<OpenAI_APIキー>"

(3) クライアントの準備。
「クライアント」は「OpenAI API」にアクセスするインタフェースになります。

from openai import OpenAI

# クライアントの準備
client = OpenAI()

3. テキスト生成

3-1. Chat Completion

「Completion」は、「メッセージリスト → メッセージ」のテキスト生成のAPIです。

response = client.chat.completions.create(
    model="gpt-3.5-turbo",
    messages=[
        {
            "role": "user",
            "content": "日本一高い山は?",
        }
    ],
    temperature=0.2,
    max_tokens=500
)
print(response)
ChatCompletion(
    id='chatcmpl-8JTwaPXNYCyE9F9oK5WgiQUVYLZ3t', 
    choices=[
        Choice(
            finish_reason='stop', 
            index=0, 
            message=ChatCompletionMessage(
                content='日本一高い山は富士山です。', 
                role='assistant', 
                function_call=None, 
                tool_calls=None
            )
        )
    ], 
    created=1699654028, 
    model='gpt-3.5-turbo-0613', 
    object='chat.completion', 
    system_fingerprint=None, 
    usage=CompletionUsage(
        completion_tokens=14, 
        prompt_tokens=32, 
        total_tokens=46
    )
)

3-2. Completion

「Completion」は、「テキスト → テキスト」のテキスト生成のAPIです。

response = client.completions.create(
    model="gpt-3.5-turbo-instruct",
    prompt="""ユーザー: 日本一高い山は?
アシスタント: """,
    temperature=0.2,
    max_tokens=500
)
print(response)
Completion(
    id='cmpl-8JVzXJNr3KwUFhpSqg10swBko2k03', 
    choices=[
        CompletionChoice(
            finish_reason='stop', 
            index=0, 
            logprobs=None, 
            text='それは富士山です。標高は3,776メートルです。'
        )
    ], 
    created=1699661899, 
    model='gpt-3.5-turbo-instruct', 
    object='text_completion', 
    system_fingerprint=None, 
    usage=CompletionUsage(
        completion_tokens=22, 
        prompt_tokens=21, 
        total_tokens=43
    )
)

4. ストリーミング

4-1. Chat Completion

stream = client.chat.completions.create(
    model="gpt-3.5-turbo",
    messages=[
        {
            "role": "user",
            "content": "日本一高い山は?",
        }
    ],
    temperature=0.2,
    max_tokens=500,
    stream=True,  # ストリーミングの有効化
)

for part in stream:
    print(part.choices[0].delta.content or "")
日
本
一
高
い
山
は
富
士
山
です
。

4-2. Completion

stream = client.completions.create(
    model="gpt-3.5-turbo-instruct",
    prompt="""ユーザー: 日本一高い山は?
アシスタント: """,
    temperature=0.2,
    max_tokens=500,
    stream=True,  # ストリーミングの有効化
)

for part in stream:
    print(part.choices[0].text or "")
それ
は
富
士
山
です
。
標
高
は
3
,
776
メ
ート
ル
です
。

5. 非同期処理

5-1. 非同期処理のセットアップ

(1) Colab用の前処理。
Colabで「asyncio」を利用するには、インポート前にネストの有効化が必要です。

# Colab用の前処理
import nest_asyncio
nest_asyncio.apply()

(2) AsyncOpenAIの準備
非同期処理には、OpenAI の代わりに「AsyncOpenAI を利用し、各API呼び出しで await を使います。

import asyncio
from openai import AsyncOpenAI

# クライアントの準備
client = AsyncOpenAI()

5-1. Chat Completion

async def main() -> None:
    response = await client.chat.completions.create(
        model="gpt-3.5-turbo",
        messages=[
            {
                "role": "user",
                "content": "日本一高い山は?",
            }
        ],
        temperature=0.2,
        max_tokens=500,        
    )
    print(response.choices[0].message.content)

asyncio.run(main())

5-3. Completion

async def main() -> None:
    response = await client.completions.create(
        model="gpt-3.5-turbo-instruct",
        prompt="""ユーザー: 日本一高い山は?
アシスタント: """,
        temperature=0.2,
        max_tokens=500,
    )
    print(response.choices[0].text)

asyncio.run(main())

関連

次回



この記事が気に入ったらサポートをしてみませんか?