メインコンテンツへスキップ
見出し画像

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())

    関連

    次回



     
     

    npaka

     
     
    プログラマー。iPhone / Android / Unity / ROS / AI / AR / VR / RasPi / ロボット / ガジェット。年2冊ペースで技術書を執筆。アニソン / カラオケ / ギター / 猫 twitter : @npaka123

    あなたへのおすすめ