OpenAI Python 0.27 : 概要 (翻訳/解説)
翻訳 : (株)クラスキャット セールスインフォメーション
作成日時 : 07/18/2023 (v0.27.8)
* 本ページは、OpenAI Python Library レポジトリの以下のドキュメントを翻訳した上で適宜、補足説明したものです:
* サンプルコードの動作確認はしておりますが、必要な場合には適宜、追加改変しています。
* ご自由にリンクを張って頂いてかまいませんが、sales-info@classcat.com までご一報いただけると嬉しいです。
- 人工知能研究開発支援
- 人工知能研修サービス(経営者層向けオンサイト研修)
- テクニカルコンサルティングサービス
- 実証実験(プロトタイプ構築)
- アプリケーションへの実装
- 人工知能研修サービス
- PoC(概念実証)を失敗させないための支援
- お住まいの地域に関係なく Web ブラウザからご参加頂けます。事前登録 が必要ですのでご注意ください。
◆ お問合せ : 本件に関するお問い合わせ先は下記までお願いいたします。
- 株式会社クラスキャット セールス・マーケティング本部 セールス・インフォメーション
- sales-info@classcat.com ; Web: www.classcat.com ; ClassCatJP
OpenAI Python ライブラリ 0.27 : 概要
OpenAI Python ライブラリは Python 言語で書かれたアプリケーションから OpenAI API への便利なアクセスを提供します。それは API レスポンスから動的に自身を初期化する API リソース用の事前定義されたクラスのセットを含み、これは OpenAI API の広範囲なバージョンと互換性があるようにします。
API リファレンス と OpenAI クックブック で OpenAI Python ライブラリ用の使用例を見つけることができます。
インストール
パッケージを変更することを望まない限りは、このソースコードは必要ありません。パッケージを利用したいだけなら、以下を実行すれば良いです :
pip install --upgrade openai
以下でソースからインストールできます :
python setup.py install
オプションの依存関係
openai.embeddings_utils 用の依存関係をインストールします :
pip install openai[embeddings]
Weights & Biases (重みとバイアス) 用のサポートをインストールします :
pip install openai[wandb]
numpy と pandas のようなデータ・ライブラリはそのサイズ故にデフォルトではインストールされません。それらはこのライブラリの一部の機能のために必要ですが、API との対話のためには通常は必要ありません。MissingDependencyError に遭遇した場合は、それらを以下でインストールしてください :
pip install openai[datalib]
使用方法
ライブラリは、この Web サイト で利用可能な貴方のアカウントのシークレットキーで設定される必要があります。ライブラリを使用する前に OPENAI_API_KEY 環境変数としてそれを設定するか :
export OPENAI_API_KEY='sk-...'
あるいは openai.api_key をその値に設定します :
import openai
openai.api_key = "sk-..."
# list models
models = openai.Model.list()
# print the first model's id
print(models.data[0].id)
# create a chat completion
chat_completion = openai.ChatCompletion.create(model="gpt-3.5-turbo", messages=[{"role": "user", "content": "Hello world"}])
# print the chat completion
print(chat_completion.choices[0].message.content)
パラメータ
すべてのエンドポイントは .create メソッドを持ち、これは request_timeout パラメータをサポートしています。このパラメータは Union[float, Tuple[float, float]] を取り、リクエストが秒単位のその時間を過ぎれば openai.error.Timeout エラーを上げます (https://requests.readthedocs.io/en/latest/user/quickstart/#timeouts 参照)。
Microsoft Azure エンドポイント
このライブラリを Microsoft Azure エンドポイントで使用するためには、api_key に加えて api_type, api_base と api_version を設定する必要があります。api_type は ‘azure’ に設定する必要があり、それ以外は貴方のエンドポイントのプロパティに対応しています。更に、配備名をエンジンパラメータとして渡されなければなりません。
import openai
openai.api_type = "azure"
openai.api_key = "..."
openai.api_base = "https://example-endpoint.openai.azure.com"
openai.api_version = "2023-05-15"
# create a chat completion
chat_completion = openai.ChatCompletion.create(deployment_id="deployment-name", model="gpt-3.5-turbo", messages=[{"role": "user", "content": "Hello world"}])
# print the completion
print(completion.choices[0].message.content)
今のところ、Microsoft Azure エンドポイントは completion, embedding と fine-tuning 操作のためだけに使用できることに注意してください。Azure エンドポイントを使用して fine-tuning や他の操作を使用する方法の詳細例については、以下の Jupyter ノートブックを確認してください :
Microsoft Azure Active Directory 認証
Microsoft Active Directory を使用して貴方の Azure エンドポイントに認証するためには、api_type を “azure_ad” に設定して取得したクレデンシャルトークンを api_key に渡す必要があります。残りのパラメータは前のセクションで指定されたように設定する必要があります。
from azure.identity import DefaultAzureCredential
import openai
# Request credential
default_credential = DefaultAzureCredential()
token = default_credential.get_token("https://cognitiveservices.azure.com/.default")
# Setup parameters
openai.api_type = "azure_ad"
openai.api_key = token.token
openai.api_base = "https://example-endpoint.openai.azure.com/"
openai.api_version = "2023-05-15"
# ...
コマンドライン・インターフェイス
ライブラリは更に openai コマンドライン・ユティリティも提供しています、これは端末から API を操作することを簡単にします。使用方法については “openai api -h” を実行してください。
# list models
openai api models.list
# create a chat completion (gpt-3.5-turbo, gpt-4, etc.)
openai api chat_completions.create -m gpt-3.5-turbo -g user "Hello world"
# create a completion (text-davinci-003, text-davinci-002, ada, babbage, curie, davinci, etc.)
openai api completions.create -m ada -p "Hello world"
# generate images via DALL·E API
openai api image.create -p "two dogs playing chess, cartoon" -n 1
# using openai through a proxy
openai --proxy=http://proxy.com api models.list
サンプルコード
様々なタスクを達成するためにこの Python ライブラリを使用する方法のサンプルは OpenAI クックブック で見つかります。それは以下のためのコードサンプルを含みます :
- 微調整を使用した分類
- クラスタリング
- コード検索
- 埋め込みのカスタマイズ
- 文書のコーパスからの質問応答
- リコメンデーション
- 埋め込みの可視化
- その他
Prior to July 2022, this OpenAI Python library hosted code examples in its examples folder, but since then all examples have been migrated to the OpenAI Cookbook.
チャット Completions (完成, 完了)
gpt-3.5-turbo のような会話モデルは chat completions エンドポイントを使用して呼び出すことができます。
import openai
openai.api_key = "sk-..." # supply your API key however you choose
completion = openai.ChatCompletion.create(model="gpt-3.5-turbo", messages=[{"role": "user", "content": "Hello world"}])
print(completion.choices[0].message.content)
Completions
text-davinci-003, text-davinci-002 そしてそれ以前 (ada, babbage, curie, davinci, 等) のようなテキストモデルは completions エンドポイントを使用して呼び出すことができます。
import openai
openai.api_key = "sk-..." # supply your API key however you choose
completion = openai.Completion.create(model="text-davinci-003", prompt="Hello world")
print(completion.choices[0].text)
埋め込み
OpenAI Python ライブラリでは、埋め込みはテキスト文字列を浮動小数点の固定長ベクトルとして表現します。埋め込みはテキスト文字列間の類似性や関連性を測定するために設計されています。
テキスト文字列の埋め込みを取得するには、Python で以下のように embeddings メソッドを使用できます :
import openai
openai.api_key = "sk-..." # supply your API key however you choose
# choose text to embed
text_string = "sample text"
# choose an embedding
model_id = "text-similarity-davinci-001"
# compute the embedding of the text
embedding = openai.Embedding.create(input=text_string, model=model_id)['data'][0]['embedding']
embeddings メソッドを呼び出す方法の例はこの get embeddings ノートブック で示されます。
埋め込みの使い方の例は以下の Jupyter ノートブックで共有されています :
- 埋め込みを使用した分類
- 埋め込みを使用したクラスタリング
- 埋め込みを使用したコード検索
- 埋め込みを使用した意味的テキスト検索
- User and product embeddings
- 埋め込みを使用したゼロショット分類
- 埋め込みを使用したリコメンデーション
埋め込みの詳細情報や OpenAI が提供する埋め込みのタイプについては、OpenAI ドキュメントの 埋め込みガイド を読んでください。
微調整
訓練データ上のモデルの微調整は (モデルに学習するより多くのサンプルを与えることにより) 結果を改善し、API 呼び出しのコスト/遅延を削減することができます (主としてプロンプトに訓練サンプルを含める必要性を削減することによります)。
微調整の例は以下の Jupyter ノートブックで共有されています :
- 微調整による分類 (微調整のために必要なステップを示す単純なノートブック)
- 2020 年オリンピックについて質問に答えるモデルを微調整する
実験、モデルとデータセットを中央のダッシュボードで追跡するために微調整を Weights & Biases に以下で同期します :
openai wandb sync
微調整の詳細は、OpenAI ドキュメントの 微調整ガイド を読んでください。
モデレーション
OpenAI はモデレーション・エンドポイントを提供しています、これはコンテンツが OpenAI コンテンツ・ポリシー に従っているかをチェックするために使用できます。
import openai
openai.api_key = "sk-..." # supply your API key however you choose
moderation_resp = openai.Moderation.create(input="Here is some perfectly innocuous text that follows all OpenAI content policies.")
詳細は モデレーションガイド をご覧ください。
画像生成 (DALL·E)
import openai
openai.api_key = "sk-..." # supply your API key however you choose
image_resp = openai.Image.create(prompt="two dogs playing chess, oil painting", n=4, size="512x512")
音声文字起こし (Whisper)
import openai
openai.api_key = "sk-..." # supply your API key however you choose
f = open("path/to/file.mp3", "rb")
transcript = openai.Audio.transcribe("whisper-1", f)
非同期 API
非同期サポートは、ネットワーク bound メソッドの先頭に ‘a’ を付けることで API で利用可能です :
import openai
openai.api_key = "sk-..." # supply your API key however you choose
async def create_chat_completion():
chat_completion_resp = await openai.ChatCompletion.acreate(model="gpt-3.5-turbo", messages=[{"role": "user", "content": "Hello world"}])
非同期リクエストをより効率的にするため、貴方自身の aiohttp.ClientSession を渡すことができますが、プログラム/イベント・ループの最後にクライアントセッションを手動でクローズしなければなりません :
import openai
from aiohttp import ClientSession
openai.aiosession.set(ClientSession())
# At the end of your program, close the http session
await openai.aiosession.get().close()
詳細は usage ガイド をご覧ください。
要件
- Python 3.7.1+
一般に、私たちはカスタマーが使用しているう Python のバージョンをサポートすることを望みます。バージョンに伴う問題に直面した場合は サポートページ で知らせてください。
以上