💬

ChatGPTのAPIをPythonから呼び出して会話する

2023/02/12に公開

ChatGPTのAPIをPythonから呼び出して会話する方法

やりたいこと

ChatGPT(正確にはOpenAIの'text-davinci-003'というモデルを使用したTextcompletion)のAPIをPythonから呼び出して、質問に対して返答を返すプログラムを作成する。WEB UIを介さないことでPythonコード内で質問とChatGPTのAPIからの回答を完結したい。

できること

何を聞いても答えてくれます。
日本語で聞くと日本語で回答してくれます。

できないこと

今のところ、単発の質問のみ有効です。

事前作業

サンプルコードでは「requests」と「json」ライブラリを利用しているので、requestsとjsonはpipからインストールしておいてください。
また、ChatGPTに登録した後にAPI Keyを取得しておいてください。

サンプルコード

import requests
import json

def send_prompt(prompt=''):
  API_KEY = '**********************************'

  # promptがない場合
  if not prompt:
    return

  headers = {
    'Content-Type': 'application/json',
    'Authorization': 'Bearer ' + API_KEY
  }

  data = {
    'model': 'text-davinci-003',
    'prompt': prompt,
    "max_tokens": 500, # 出力される文章量の最大値(トークン数) max:4096
    "temperature": 0.9, # 単語のランダム性 min:0.1 max:1.0
    "top_p": 1, # 単語のランダム性 min:-2.0 max:2.0
    "frequency_penalty": 0.0, # 2.0に近いと同じ単語は繰り返し使わなくなります。使った回数に応じてペナルティを加えます。
    "presence_penalty": 0.6, # 使った回数に応じてペナルティを加え、1度でも使ったかどうか、ということにペナルティを加えます。
    "stop": [" Human:", " AI:"] # 途中で生成を停止する単語
  }

  response = requests.post('https://api.openai.com/v1/completions', headers=headers, data=json.dumps(data))

  # レスポンス受け取り後の処理
  response_data = response.json()
  print(response_data['choices'][0]['text'].strip())

#マニュアル質問
prompt = '銀行からマイカーローンを借りる方法を教えてください'
print("質問: " + prompt )
print("回答:")

send_prompt(prompt)

コマンド実行結果

Pythonを実行すると、以下のような回答が返ってきます。
回答

Discussion