こんにちは。チャットサービスとしてのChatGPTを使ったことはあるけれど、APIを使って何かやってみたいと思っている読者のための記事です。

※ChatGPT APIの利用にはクレジットカードの登録が必要です。

ChatGPT APIでできること

まずはChatGPT APIで実現できることについて整理してみましょう。ChatGPT APIはChatGPTの機能を自分たちのシステムに組み込むことができます。テキスト生成や質疑応答、翻訳、要約など、ChatGPTが提供しているさまざまな機能をプロダクトに組み込むことでサービスの品質を大きく向上させることができるほどのポテンシャルを秘めています。

ChatGPT APIのビジネス利用例

  • 会話機能: ChatGPT APIを使って独自のチャットボットや仮想アシスタントを開発し、プロダクトに組み込む。
  • カスタマーサポート: 顧客からの問い合わせに自動で回答するシステム。24時間365日対応可能なカスタマーサポートですね。
  • 研修: たとえば企業研修における学習支援。研修内容を生成できます。
  • 業務システムへの統合: 社内で使用するシステムにChatGPTを統合することで、ドキュメントの自動生成、メールの要約、議事録などを効率化できます。業務マニュアルなんかも自動応答できそうですね。
  • データ分析: 企業が所有するデータを分析し、要約やレポートを生成できます。

さっそく準備してみよう

OpenAIアカウント作成

OpenAIのWebサイトでアカウントを登録しましょう。

APIキー作成

次にOpenAI Platformにサインインします。

2023年11月現在では上記のような画面が出てきます。左側のナビゲーションから API Keysを選択します。

+ Create new secret keyをクリックして適当なAPIキーの名前を入力してください。

APIキーをコピーしておきましょう。

支払い情報の登録

APIを呼び出すにはチャージしなければならないため、支払い情報を登録してチャージします。左のナビゲーションから Settings を選択し、展開したナビゲーションから Billing を選択しましょう。

登録の際には個人と法人が選べるようですが、法人の場合は法人番号が必要です。

そのままの流れでチャージしてください。

これで準備はおしまい。

環境準備

次にAPIを呼び出すための環境準備をします。それぞれの環境で呼び出し方は異なりますが、本稿ではPythonを使います。Pythonやpipのインストールをしておきましょう。

CLIでOpenAIのクライアントをインストールします。

pip install openai

環境変数にさきほどのAPIキーをセットアップします。

echo "export OPENAI_API_KEY='ここにAPIキーが入ります'" >> ~/.zshrc

反映します。

source ~/.zshrc

$OPENAI_API_KEYでAPIキーが出力されるはずです。

echo $OPENAI_API_KEY
xxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

これで環境準備は完了です。

ChatGPT APIを呼び出してみよう

Pythonコードを使ってAPIキーを呼び出してみたいと思います。エディタで次のようなプログラムを作ってください。

from openai import OpenAI

client = OpenAI()

chat_completion = client.chat.completions.create(
    messages=[
        {
            "role": "user",
            "content": "Hello, ChatGPT",
        }
    ],
    model="gpt-3.5-turbo",
)

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

test.py というファイル名にしました。

#実行結果
% python test.py
Hello! How can I assist you today?

無事、APIを呼び出してChatGPTからのメッセージを出力することができました。

API呼び出し時のメッセージの種類

さきほどの test.pyのコードを見てみましょう。

from openai import OpenAI

client = OpenAI()

chat_completion = client.chat.completions.create(
    messages=[
        {
            "role": "user",
            "content": "Hello, ChatGPT",
        }
    ],
    model="gpt-3.5-turbo",
)

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

このコードの messagesの中で、 role がありますが、roleの種類を知っておくことでより精度の高い回答を得るためのプロンプトを定義することが可能です。

roleの種類

roleの種類役割
systemChatGPTの役割を定義
機能的な役割でもいいですし、人格でも。
e.g. 一流のコピーライター、最強の男、書籍を要約するAI
userAPIを使用している人間の入力
質問したい内容を指定するときはuserを使用します。
assistantChatGPTの応答
前回までのやりとりを踏まえるかみたいな意味です。
それによって文脈を考慮した回答が可能になります。

roleとcontentの例

では以下のように役割を定義して質問してみましょう。

あなたは一流のコピーライターです。
チューリップを強みとするお花屋さんのキャッチコピーを考えてください。

上記の1行目が systemであり、2行目が userです。

プログラムにすると下記のようになります。

・・・省略・・・
    messages=[
        {
            "role": "system",
            "content": "あなたは一流のコピーライターです。",
        },
        {
            "role": "user",
            "content": "チューリップを強みとするお花屋さんのキャッチコピーを考えてください。",
        }
    ],
・・・省略・・・

実行してみましょう。

% python test.py
「鮮やかな色彩が輝く、チューリップの世界へようこそ」

素敵ですね。

APIの使い方については以上です。APIの呼び出しは思いのほか簡単でした。便利ですね。

それではまた。