以下の内容はhttps://kamatimaru.hatenablog.com/entry/2024/12/30/233357より取得しました。


ChatGPTのAPIを使うまでの試行錯誤(2024/12/30時点)

前提

  • 生成AIを使って作ってみたいのものがいくつかあるが、まずは何らかの生成AIサービスのAPIを使えるようにならないと話にならない。
  • → ChatGPTのAPIを使えるようになるところまでをやってみることにした。

試行錯誤したこと

APIの画面が見つからない

APIを使うためにAPIキーが必要ということは把握していた。

普段使っているChatGPTの画面のどこかにAPIの画面への導線があるのかと思ったが見つからない。

Googleで「chatgpt api」と検索すると、上から3番目くらいに以下のリンクがヒットした。

platform.openai.com

左のメニューから introduction に遷移すると、導入っぽいドキュメントが出てきた。

以下のドキュメントのProject API keysAPI Keysの部分がリンクになっていて、そこからAPIキー作成画面に辿り着ける。

Project API keyという概念がよくわからないので、2番目の個人ユーザー用のAPIキーっぽいリンクから作成する。

OpenAIにおけるProjectPermissionsといった概念がよく分かっていないが、動作確認できたらすぐ破棄するAPIキーなのでいったんデフォルトで作ってみる。

古いモジュールを使ってしまう

とりあえず早く動かしてみたかったので、ググってヒットした適当な2023年の記事のサンプルコードをベースに以下のようなコードを書いてみた。

requirements.txt

openai
python-dotenv

main.py

import os

import openai

from dotenv import load_dotenv

load_dotenv()


# APIキーの設定
openai.api_key = os.environ["OPENAI_API_KEY"]


response = openai.ChatCompletion.create(
    model="gpt-3.5-turbo",
    messages=[
        {"role": "user", "content": "北インド料理と南インド料理の違いを教えてください。"},
    ],
)
print(response.choices[0]["message"]["content"].strip())

すると、以下のようなエラーが出た。

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

ここでChatCompletionというモジュールはもう古いということを知る。

ChatGPTの有料契約とは別に課金が必要っぽい

最近の情報を参照して、コードを以下のように書き換えてみた。新しいAPIではOPENAI_API_KEYという環境変数を渡してあげればOpenAIインスタンス作成時に自動でAPIキーを読み込んでくれる仕様らしい。

from openai import OpenAI

from dotenv import load_dotenv

load_dotenv()

client = OpenAI()

completion = client.chat.completions.create(
    model="gpt-3.5-turbo",
    messages=[
        {"role": "system", "content": "あなたはインド料理研究家です。"},
        {"role": "user", "content": "北インド料理と南インド料理の違いを教えてください。"},
    ]
)

print(completion.choices[0].message.content)

今度こそいけるかと思ったが、以下のエラーが出てしまった。

openai.NotFoundError: Error code: 404 - {'error': {'message': 'The model `gpt-4-turbo` does not exist or you do not have access to it.', 'type': 'invalid_request_error', 'param': None, 'code': 'model_not_found'}}
(.venv) masataka@delhi09-business chatgpt-api-practice % python main.py
Traceback (most recent call last):

The model gpt-4-turbo does not exist or you do not have access to it.'とのことだが、gpt-4-turboは存在するモデルなので後者のアクセス権がない方っぽい。

https://platform.openai.com/docs/models#gpt-4-turbo-and-gpt-4

ここで原因をググっていたら、別途課金が必要そうということに気づいた。

課金する

課金に関する画面がどこにあるのか調べた。 → 課金に関するドキュメントはこれっぽかった。

https://openai.com/ja-JP/api/pricing/

FAQに「APIは別料金」とちゃんと書いてあった。

ただ、ここには支払い方法を登録するような導線はなさそうだなーと思っていたら、OpenAI PlatformのドキュメントにBillingというメニューを見つけた。

https://platform.openai.com/settings/organization/billing/overview

ここから支払い方法を登録できそう。

→ 住所の入力が英語形式で面倒だったが、クレカを登録できた。

クレカ登録後にInitial credit purchaseというのを聞かれる。5ドルから100ドルまで設定できるようだが、『LangChainとLangGraphによるRAG・AIエージェント[実践]入門』という本に、「本書の内容を進める上では10ドル程度で十分だと思われます」と書いてあったので、10ドルにした。

Would you like to set up automatic recharge?という項目があり、デフォルトではONになっているが、勝手に追加で課金されるの怖いし、設定する場合に閾値を設定するのが面倒なので一旦OFFにした。

あとは、Limitsという設定があり、Usage limitが120ドルに設定されていた。

https://platform.openai.com/settings/organization/limits

私の解釈が正しければ、何かやらかしても120ドル以上は飛ばないということだと思うので、この点は安心できる。

API呼び出しに再チャレンジ

課金設定をした上で、先のコードを何も変えずに再度実行してみたところ、数秒レスポンスをwaitした後に以下のように結果が表示された。

$ python main.py
北インド料理と南インド料理は、地域の気候や文化の違いにより異なる特徴があります。

北インド料理:
1. 主に穀物(主に小麦)をベースとした料理が特徴です。
2. 乳製品(ヨーグルト、バター、パニールなど)を多用します。
3. 使用されるスパイスは、カルダモン、クローブ、シナモン、クミン、ターメリックなどが一般的です。
4. 代表的な料理には、バターチキン、ナン、ビリヤニなどがあります。

南インド料理:
1. 主に米をベースとした料理が特徴です。
2. ココナッツやタマリンドを頻繁に使用します。
3. スパイスの組み合わせはより複雑で、クメン、マスタードシード、コリアンダーなどが使われます。
4. 代表的な料理には、ドーサ、イドリ、サンバー、ラッサムなどがあります。

北インド料理は一般的に濃厚でクリーミーな味わいが特徴であり、南インド料理はスパイシーかつ酸味のバランスが取れた料理が多いです。どちらも美味しい料理がたくさんありますので、一度試してみる価値があります。

めでたしめでたし。




以上の内容はhttps://kamatimaru.hatenablog.com/entry/2024/12/30/233357より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14