OpenAI Python API Library v1.0 入門
「OpenAI Python API Library」のインタフェースが一新されたので、かるくまとめ直しました。
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())
関連
次回
この記事が気に入ったらサポートをしてみませんか?