🗨️

ChatGPT APIを設計途中のAPIの代用として利用する話

2023/08/27に公開

概要

個人開発やっているときにコードの使用があまりうまく決まっていないときにとりあえず動かすためにChatGPTを使うことで設計やプロトタイプを高速化する。

メリット

  • 設計を鮮明に行うことができる
  • プロトタイピングの作成を大幅に削減することができる

デメリット

  • 本番採用するには安定性がない
  • 実行速度が遅い
  • 細い設定をすると結構値段がかかってくる

プロトタイピングレベルは超えないが一定程度の使い勝手の良さはある。勉強がてらやるのも悪くない

具体的な実装

プロンプトの考え方

変によくわからないフォーマットで返されるとめんどくさいのでjsonで返ってくるようにする。

プロンプト

あなたはプログラムのバックエンドAPIの一部です。それに基づいて解答を行いなさい。
その際json以外の内容を返しては行けません。
必ずjsonで返答を行いなさい。
json以外の内容は一切含んでは行けません「了解しました。」などの単語も含んでは行けません
jsonの型はこうなります。

{
	"mes":String,
	"id":String
}

明確に実行される解答例は以下になります
{
	"mes":"hello",
	"id":"qwerty"
}

このようにあなたはjson以外のものは返しては行けません。


以下のjsonのmesにabcが含まれているのであれば返答のmesにIn the ABCと入れてください。
{
	"mes":"abcvcvcvcvcvv",
	"id":"aaa"
}

以上のものをjsonで返してください。
{
"mes": "In the ABC",
"id": "aaa"
}

以下に本当に答えさせたいものにする

以下のjsonのmesにabcが含まれているのであれば返答のmesにIn the ABCと入れてください。
{
	"mes":"abcvcvcvcvcvv",
	"id":"bbb"
}

以上のものをjsonで返してください。

返答

{
"mes": "In the ABC",
"id": "bbb"
}

コードとしての実装

require('dotenv').config();
const OPENAI_API_KEY = process.env.OPENAI_API_KEY;
const OPENAI_ORGANIZATION = process.env.OPENAI_ORGANIZATION;
const configuration = new Configuration({
organization: OPENAI_ORGANIZATION,
apiKey: OPENAI_API_KEY,
});
const openai = new OpenAIApi(configuration);

const completion = await openai.createChatCompletion({
model: 'gpt-3.5-turbo',
messages: [
	{ role: 'user', content: prompt1 },
	{ role: 'system', content: prompt2 },
	{ role: 'user', content: prompt3 }
],
});
return completion.data.choices[0].message.content;

所感

すごく使いやすい

Discussion