著者は、Direct Relief Programを寄付の受け手として選択しました。Write for DOnationsプログラムの一環として。
はじめに
OpenAI GPTモデルは、電子メールの下書き、顧客サービスのFAQの回答、言語翻訳など、さまざまなタスクのテキストコンテンツ生成に広く使用されています。
これらのGPTモデルは、一般的にはChatGPT(OpenAIによってリリースされたチャットボット)を介して利用されるか、より細かい制御を提供するAPIやライブラリを介して利用されます。このチュートリアルでは、Djangoウェブプロジェクト内でOpenAI APIを使用してこれらのモデルを活用する方法を説明します。さまざまなパラメータを使用してChatCompletion APIを呼び出し、その応答をフォーマットして利用する方法を学びます。
このチュートリアルの最後までには、提供された単語を使用して短いストーリーを構築するためにOpenAIにリクエストを送信し、その応答を返すDjangoエンドポイントを作成します。
前提条件
このチュートリアルを完了するには、以下が必要です:
-
既存のDjangoプロジェクト。ゼロから始める場合は、Django開発環境の設定方法チュートリアルに従ってDjangoプロジェクトを設定できます。
-
OpenAIアカウント: OpenAIプラットフォームのウェブサイトにアクセスし、「サインアップ」ボタンを探します。サインアップした後、メールアドレスを確認し、個人情報を入力する必要があります。
-
OpenAI APIキー: アカウントが設定されたら、ログインしてダッシュボードからAPIキーセクションに移動します。 「新しいシークレットキーを作成」をクリックします。 APIキーが生成され、
sk-abcdefghijklmnop
のようなものになります。このキーは再度表示されないため、安全な場所に保存してください。 -
OpenAI Pythonパッケージ:最初の前提条件でチュートリアルに従った場合、すでに
env
という名前の仮想環境がdjango-apps
というディレクトリ内でアクティブになっているはずです。 仮想環境がアクティブであることを確認するには、ターミナルプロンプトの先頭にその名前が表示されていることを確認します。 アクティブでない場合は、次のコマンドを実行して手動でアクティブにします:
ターミナルから django-apps
ディレクトリで。 環境がアクティブになったら、次のコマンドを実行してOpenAI Pythonパッケージをインストールします:
ステップ1 — OpenAIへのコール
このステップでは、OpenAI APIキーをOpenAIクライアントに追加し、ChatCompletion APIに対して単純なAPI呼び出しを行います。また、APIからのレスポンスを調べます。
始めるには、Pythonインタプリタを開いてください:
まず、OpenAIクライアントをインポートして、APIキーをクライアントに追加します:
"your-api-key"
をOpenAIプラットフォームから取得した実際のAPIキーで置き換えてください。
さて、ChatCompletion APIにAPI呼び出しを行いましょう。 chat.completions.create()
メソッドを使用します:
上記のコードでは、使用するモデルを gpt-3.5-turbo
として指定し、ロールが user
(他のオプションは system
および assistant
)であり、コンテンツ/プロンプトが count 1 to 10
の単一の メッセージ オブジェクトを追加しました。
API呼び出しからのレスポンスを確認するには、レスポンスメッセージを出力してください。これには、1から10までの数がきれいなリストで表示されるはずです:
出力:
おめでとうございます!OpenAIに対して単純なAPI呼び出しを成功裏に行い、応答を取得しました。次のステップでは、APIの応答をフォーマットして利用して、短いストーリーを作成します。
ステップ2 — パラメータの操作
今、ChatCompletion API に簡単な API コールを成功させたので、モデルの動作をカスタマイズするためのパラメーターをどのように扱うかを探ってみましょう。生成されるテキストを制御するためのいくつかの利用可能なパラメーターがあります。以下の3つを見てみましょう。
1. 温度:温度パラメーターは、生成されるコンテンツのランダムさを決定します。温度値が高い場合、たとえば 0.8 のように、より多様でクリエイティブな応答が得られますが、温度値が低い場合、たとえば 0.1 のようにすると、より類似した応答が生成されます。例:
新しく生成されたテキストを見るために temperature=0.1
をもう一度試してみましょう:
テキストは同じになりました。さて、temperature=0.8
を2回試してみましょう:
2. 最大トークン数:これにより、生成されるテキストの長さを制限できます。特定の値を設定すると、応答が一定数のトークンに超えないようになります。トークンは、応答の中の単語の数に比例します。例:
値を20に変更:
3. ストリーム:これは、応答をストリーミングするかどうかを決定します。 True
に設定すると、API 応答はストリーミングされ、生成されると同時にチャンクとして出力を受け取ります。これは長い会話やリアルタイムアプリケーションに便利です。ストリーミングを有効にするには、API コールに stream
パラメーターを True
の値で追加します。例:
コードの中で、chunk_message
変数はAPIによって返される各チャンクのメッセージ内容を保持しています。 collected_messages
リストに追加する前に、各チャンクが通常 None
であるため、そのチャンクが None
であるかどうかをチェックします。
これらのパラメータを利用すると、モデルの動作をカスタマイズし、生成される応答をアプリケーションやプロジェクトに適したものに制御することができます。異なる値を試して、目的の結果を得る実験をしてみてください。
次のステップでは、システムプロンプトの形でモデルに一定の文脈を提供します。
ステップ3 — システムプロンプトの作成
このステップでは、学んだすべての情報を組み合わせ、GPTモデルにコンテキストを提供し、その目的とルールを指定するシステムプロンプトを作成します。
まず、このタスクを処理するための関数を含むPythonモジュールを作成しましょう。 インタープリターを閉じて、Djangoプロジェクトディレクトリにstory_generator.py
という新しいファイルを作成します。
次に、OpenAI APIキーを環境変数に追加して、Pythonファイルに直接追加しないようにします:
story_generator.py
を開き、その中にOpenAIクライアントを作成し、generate_story
という名前の関数を定義して、単語のコレクションを入力として受け取ります。
この関数では、別の関数get_short_story
を呼び出して、OpenAIにストーリーのAPIコールを行い、次に別の関数format_response
を使用してAPIからのレスポンスをフォーマットします。
さて、get_short_story
関数に焦点を当ててみましょう。次の内容をstory_generator.py
ファイルの最後に追加します:
この関数では、まずシステムプロンプトを設定し、モデルに実行するタスクとストーリーの長さを指定します。次に、このシステムプロンプトをChatCompletion APIに渡し、そのレスポンスを返します。
最後に、format_response
関数を実装できます。次の内容をstory_generator.py
ファイルの最後に追加します:
これらの関数をテストすることができます。 generate_story
関数を呼び出して、単語のコレクションをその引数として渡し、その応答をプリントしてください。次の行を story_generator.py
ファイルの最後に追加してください:
それでは、ファイルを保存して終了します。ストーリーを生成するためにスクリプトを実行してください:
出力:
かなり興味深いですね! Djangoのビューからgenerate_story
関数を呼び出すので、print
ステートメントの行を削除しましょう。 story_generator.py
ファイルからハイライトされた行を削除してください:
システムプロンプトを実験して、ストーリーの生成を改善するために、より多くのコンテキストやルールを追加してください。
次のステップに進み、story_generator
モジュールをDjangoプロジェクトに統合します。
ステップ4 – バックエンドビューとの統合:
story_generator
モジュールをDjangoプロジェクトに統合するために、DjangoのビューとURLルートを作成する必要があります。ビューでは、リクエストから予想される単語を抽出し、generate_story
関数を呼び出して応答を返します。
まず、Djangoアプリのディレクトリ内のファイル views.py
を開いてください。必要なモジュールをインポートし、generate_story_from_words
というビュー関数を追加します:
次に、urls.py
ファイルを開き、generate_story_from_words
ビューのURLパターンを追加します:
これで、/generate-story/
エンドポイントをリクエストできます。たとえば、curlを使用してテストする場合、予期される単語をクエリパラメータとしてエンドポイントにGETリクエストを行うことができます。ターミナルを開いて、次のコマンドを実行してください:
コマンドを実行した後、サーバーから生成されたストーリーを含むレスポンスが表示されます:
出力:
結論
このチュートリアルを完了したら、OpenAI GPTモデルをOpenAI APIを使用してDjangoプロジェクトに統合する方法を学びました。ChatCompletion APIに対して呼び出しを行い、温度や最大トークンなどのパラメータを操作してモデルの振る舞いをカスタマイズし、システムプロンプトを作成してモデルにコンテキストを提供しました。また、story_generator
モジュールをDjangoプロジェクトに統合しました。これで、期待される単語をクエリパラメータとして/generate-story/
エンドポイントにリクエストすることで、短編小説を生成することができます。
Djangoプロジェクトをさらに強化するために、OpenAI APIの追加機能を探索し、異なるシステムプロンプトやパラメータを試して、ユニークでクリエイティブなストーリーを生成してみることができます。