0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

PythonでChatGPTのAPIを触ってみる

Last updated at Posted at 2023-03-18

準備

ChatGPTのアカウント登録

APIを使用するためにはChatGPTへのアカウント登録を行う必要があるので以下のリンクから登録します。

スクリーンショット 2023-03-18 22.21.14.png
Googleアカウントからでもログインできるのでそっちの方が楽で早いです。

APIキーの取得

APIキーは以下のリンクから取得できます。

スクリーンショット 2023-03-18 22.08.16.png

Create new secret keyボタンを押すことでキーを生成することができます。
生成したAPIキーを再度確認することができないので必ずコピーをして安全な場所に保存してください。

ライブラリのインストール

ライブラリはpipでもcondaでもインストールすることができます。
今回はopenaiという仮想環境を作成しその環境にインストールしていきます。

仮想環境の生成
$ conda create -n openai
$ conda activate openai
ライブラリのインストール(pip)
$ pip install openai
ライブラリのインストール(conda)
$ conda install openai

以上で準備は終わりです。

APIを使ってみる

公式が出しているコードを使ってみます。

import os
import openai

# APIキーの設定
openai.api_key = "API Key"
# API部分
response = openai.Completion.crete(model="text-davinci-003", prompt="Say this is a test", temperature=0, max_tokens=7)

今回使用しているパラメータは以下の通りです。

  • model
    使用するモデルを指定するパラメータ。今回はGPT-3.5モデルのtext-davinci-003を指定しています。これはテキスト補完を行うモデルです。
    使用できるモデルは以下のリンクで確認できます。

  • prompt
    命令を行う文章を指定するパラメータ。ここにGPTにしてほしいことなどを引き渡す。
    日本語での入力も可能だがレスポンスはUnicodeで出力されるので注意。
    日本語の場合はUnicodeでレスポンスが返ってくるがprintすると勝手にデコードされて出力される。

  • temperature
    信頼度を示すパラメータ。0~1の間を取る。これは次に来るテキストの多様性を調節しています。0に近いほど無難な解答をして、1に近いほど多様な解答を行うことができます。

  • max_tokens
    最大出力トークンの設定。モデルによって出力できる文章の量はこのパラメータで制御します。モデルによって出力できる最大トークン数は決まっており、以下のリンクから確認できます。

トークンの数え方については以下のリンクから確認できます。

今回使用したパラメータ以外のパラメータについては以下のリンクを参考にしてみてください。

responseの中身はこんな感じになっています。

{
  "choices": [
    {
      "finish_reason": "length",
      "index": 0,
      "logprobs": null,
      "text": "\n\nThis is indeed a test"
    }
  ],
  "created": 1679146915,
  "id": "cmpl-6vR6hz16Wo1l3YfyWfTiht194b7e0",
  "model": "text-davinci-003",
  "object": "text_completion",
  "usage": {
    "completion_tokens": 7,
    "prompt_tokens": 5,
    "total_tokens": 12
  }
}

いくつか項目がありますが今回指定したモデルで入力されたプロンプトに対する返答はchoicestext部分となっています。
これはモデルによってレスポンスが異なるので以下のリンクより確認する必要があります。

次にプロンプトを好きって言ってという日本語の文章に変更してみます。またmax_tokensを20にして実行してみます。

response = openai.Completion.crete(model="text-davinci-003", prompt="好きって言って", temperature=0, max_tokens=7

レスポンスは以下の通りです。

{
  "choices": [
    {
      "finish_reason": "length",
      "index": 0,
      "logprobs": null,
      "text": "\u304f\u308c\u305f\n\n\u305d\u308c\u306f\u3068\u3066\u3082\u5b09\u3057\u3044\u3067\u3059"
    }
  ],
  "created": 1679148460,
  "id": "cmpl-6vRVc2rxz9y4Ck8WNMvwrxniifpAm",
  "model": "text-davinci-003",
  "object": "text_completion",
  "usage": {
    "completion_tokens": 7,
    "prompt_tokens": 10,
    "total_tokens": 17
  }
}

textの部分がUnicodeで出力されています。

\u304f\u308c\u305f\n\n\u305d\u308c\u306f\u3068\u3066\u3082\u5b09\u3057\u3044\u3067\u3059
↑のUnicodeは日本語に直すとくれた それはとても嬉しいですとなります。これを元の文章とくっつけると以下のようになります。

好きって言って くれた
それはとても嬉しいです

いい感じにテキストを補完してくれた気がしますね。

今回はテキスト補完であるモデルを使用しましたが、他にも使える機能がたくさんあるので時間があったら随時更新してみようと思います。

0
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
0
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?