Python | OpenAIのAPIを実装するサンプルコード

2023-02-09Python API,Python,OpenAI

Python | OpenAIのAPIを実装するサンプルコード

PythonでOpenAIのAPIを実装するサンプルコードになります。

サンプルコードではChatGPTに搭載されているAIモデル「GPT-3」を利用しています。

OpenAIのAPIを実装するサンプルコード

Pythonで動作させるのに最低限必要なものは、OpenAIのAPIキーと問い合わせるキーワードやメッセージになります。
関連:OpenAI | APIキーを取得する方法 | ONE NOTES

また、以下のサンプルコードでは「requests」と「json」ライブラリを利用しています。

import requests
import json

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

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

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

	data = {
		'model': 'text-davinci-003',
		# 'model': 'text-curie-001', # 動作テスト用(料金的に)
		'prompt': prompt,
		"max_tokens": 150, # 出力される文章量の最大値(トークン数) max:4096
		"temperature": 1, # 単語のランダム性 min:0.1 max:2.0
		"top_p": 1, # 単語のランダム性 min:-2.0 max:2.0
		"frequency_penalty": 0.0, # 単語の再利用 min:-2.0 max:2.0
		"presence_penalty": 0.6, # 単語の再利用 min:-2.0 max:2.0
		"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 = '' # 送信するテキスト
send_prompt(prompt)

上記のサンプルコードを実行した場合、以下のような結果が得られました。

prompt = 'こんにちわ、お元気ですか?' # 送信するテキスト
send_prompt(prompt)
# 元気です!ありがとうございます。

OpenAI APIのパラメータについて

各種パラメータを設定していますが、チャットによる会話がメインとなる場合のパラメータ設定になっています。
例えば、翻訳にしたい場合は「temperature」を「0.1」、「top_p」を「-2」にると決まった結果を得やすくなります。

また、目的が翻訳であれば「model」を「text-curie-001」にしても十分に機能します。
「text-curie-001」ならAPIの利用料金が10分の1になります。
関連:OpenAI | APIの利用料金と無料分など、ChatGPTモデルは高額になりやすい? | ONE NOTES