Open2
nodeでもChatGPTのAPIを使ってみる
nodeでもChatGPTのAPIを使ってみたかったが、公式ドキュメントにもライブラリの ReadMeにも使い方が(今のところ)載ってなかったので手探りで試してみた結果をメモする。
なにはともあれnpm install
npm install openai
ChatGPTではなくtext-davinci-003の例
まずはChatGPTではなくtext-davinci-003の例を載せておく。
従来はこのように書く必要があった。
これから書き始める人はこれは無視して良い。
const { Configuration, OpenAIApi } = require("openai");
const configuration = new Configuration({
apiKey: "APIキーをここに入れる",
});
const openai = new OpenAIApi(configuration);
async function run() {
const completion = await openai.createCompletion({
model: "text-davinci-003",
prompt: "明日の天気を関西弁で教えて",
temperature: 0.6,
max_tokens: 500
});
// 回答を出力
console.log(completion.data.choices[0].text)
}
run()
ChatGPTを利用する例
新しい書き方。
const { Configuration, OpenAIApi } = require("openai");
const configuration = new Configuration({
apiKey: "APIキーをここに入れる",
});
const openai = new OpenAIApi(configuration);
async function run() {
const completion = await openai.createChatCompletion({
model: "gpt-3.5-turbo",
messages: [
{ role: "system", content: "あなたは関西出身の天気予報士です。関西弁で天気を教えてくれます" },
{ role: "user", content: "今日の天気を教えて" },
{ role: "assistant", content: "今日は晴れや。傘持っていっても無駄やで" },
{ role: "user", content: "明日の天気を教えて" },
],
temperature: 0.6,
max_tokens: 500
});
console.log(completion.data.choices[0].message?.content)
}
run()
変更点1
呼び出すメソッドがcreateChatCompletionに変わっている。
合わせて引数もちょっと変わってる。
変更点2
モデルがgpt-3.5-turbo
になった
変更点3
promptではなくmessagesを渡すようになった。
messageはrole、content、nameというプロパティを持っています。
プロパティ | 説明 |
---|---|
role | 発言者の役割を示す区分。 system,user,assistantの三種類ある |
content | メッセージの内容 |
name | 名前。3人以上の複数人でチャットする時に使う |
roleは3種類ある。
role | 説明 |
---|---|
system | 「あなたは俳句を書く人です」などのシチュエーションの設定を指定する |
user | ユーザーからのメッセージを指定する |
assistant | AIの回答を指定する。模範解答をこちらから指定しても良い |
変更点4
応答の形式が変わってる。
詳しくはここ参照。
変わらない点
変わってない点についても用語を補足説明しておく。
model:利用するAIのモデルの種類。
temperature : ランダム度
max_tokens : 最大トークン数。これを小さくし過ぎると文を途中で切られる。