LoginSignup
5
1

python環境の構築

venvを使ってpythonの仮想環境を構築します。
以下の記事を参考にさせていただきました。

python -m venv django-chat-gpt-app
cd django-chat-gpt-app
source bin/activate

パッケージのインストール

pythonの仮想環境上で必要なパッケージをインストールします。

pip install django openai

djangoプロジェクトを初期化する

以下のコマンドでdjangoプロジェクトを初期化します。

django-admin startproject config .

VS Code上で以下のようなファイル構成になっています。

test_py_—_django-chat-gpt-app.png

open AIを使ったサンプルコードを実行してみる

以下の記事よりコードを拝借しました。


import openai

APK_KEY = "自分のAPK KEYをここに記載する"

def chat_gpt(prompt):
    openai.api_key = APK_KEY #API KEYをセット
    openai.Model.list() #OpenAIのインスタンスを生成
  
    #APIを使ってリクエストを投げる
    response = openai.Completion.create(
    model = "text-davinci-003",
    prompt= prompt,
    temperature=0,
    max_tokens=300,
    top_p=1.0,
    frequency_penalty=0.0,
    presence_penalty=0.0

    )
    return response 

記事にある方法に従ってコードを実行しようとすると以下のようなエラーが

You tried to access openai.Model, but this is no longer supported in openai>=1.0.0 - see the README at https://github.com/openai/openai-python for the API.

You can run `openai migrate` to automatically upgrade your codebase to use the 1.0.0 interface.

どうやらopen AIを呼び出す記述が古いみたいです。
エラー文に従って以下のコマンドを実行します。

django-chat-gpt-app ❯ openai migrate 

こんな感じのログが流れて、コードの古い記述を自動で最新版に書き換えてくれます。めっちゃ便利。

django-chat-gpt-app_—__projects_django-chat-gpt-app—zsh__figterm__▸_zsh—_204×58.png

記事の内容を参考にシェルモードでopen AIのAPIを叩こうとすると以下のエラー

openai.RateLimitError: Error code: 429 - {'error': {'message': 'You exceeded your current quota, please check your plan and billing details. For more information on this error, read the docs: https://platform.openai.com/docs/guides/error-codes/api-errors.', 'type': 'insufficient_quota', 'param': None, 'code': 'insufficient_quota'}}

どうやらリクエスト回数の上限までいってしまったようです。Open AI側の設定を確認してみます。

Billing_overview_-_OpenAI_API.png

Credit Remainingが0になっているからですねー
無料枠に気をつけつつ、クレジットカードの設定をしていきます。

クレジットカードの設定後、ターミナル再起動でOpen AIからのレスポンスを無事取得できました。

>>> from test import chat_gpt
>>> prompt = "pythonベースのDjangoとは何ですか?"
>>> response = chat_gpt(prompt)
>>> print(response)
Completion(id='cmpl-8efUZl2k7fs9apPYmj8pzrqMrd5nW', choices=[CompletionChoice(finish_reason='stop', index=0, logprobs=None, text='\n\nDjangoはPythonベースのオープンソースWebフレームワークです。Webアプリケーションを開発するためのツールを提供し、開発者が効率的にWebアプリケーションを構築できるようにします。Djangoは、モデルビューコントローラー(MVC)アーキテクチャを使用して、データベースを操作し、ユーザーインターフェイスを構築し、Webサイトを安全に保つためのツールを提供します。')], created=1704703307, model='text-davinci-003', object='text_completion', system_fingerprint=None, usage=CompletionUsage(completion_tokens=208, prompt_tokens=18, total_tokens=226), warning='This model version is deprecated. Migrate before January 4, 2024 to avoid disruption of service. Learn more https://platform.openai.com/docs/deprecations')
>>> response["choices"][0]["text"].strip()

レスポンスの中身のテキストだけが欲しい場合はこうするとよさそうです。

>>> print(response.choices[0].text)


DjangoはPythonベースのオープンソースWebフレームワークです。Webアプリケーションを開発するためのツールを提供し、開発者が効率的にWebアプリケーションを構築できるようにします。Djangoは、モデルビューコントローラー(MVC)アーキテクチャを使用して、データベースを操作し、ユーザーインターフェイスを構築し、Webサイトを安全に保つためのツールを提供します。

ちなみに2回ほどAPIを叩いただけで0.01ドル消費しました・・・お高いですね。。。

Billing_overview_-_OpenAI_API.png

次にやること

次回は参考記事の内容をもとにUIからOpenAIのAPIを叩けるようにしてみようと思います。

5
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
1