system 値で前フリ・キャラ付けをしてみよう
この章で学ぶこと
developer 値で前フリ・キャラ付けをしてみましょう。
developer 値で前フリ・キャラ付けできます。
もう一度プログラムをみてみよう。
// OpenAI API キー
const OPENAI_API_KEY = "OPENAI_API_KEY";
// openai ライブラリの読み込み
const OpenAI = require("openai");
// OpenAI の API を使うために上記の設定を割り当てて準備
// 以後 openai というオブジェクトで使える
const openai = new OpenAI({
apiKey: OPENAI_API_KEY
});
// async つきで実行
// 外部の API (OpenAPI) とのやり取りが伴うので待つ処理が必要
async function main() {
// ChatGPT API に実際にアクセス
// https://platform.openai.com/docs/guides/gpt/chat-completions-api?lang=node.js
const completion = await openai.chat.completions.create({
messages: [
{ role: "user", content: "こんにちは!ChatGPTさん!" } // ユーザーから「こんにちは!ChatGPTさん!」の質問
],
model: "gpt-4o", // モデルは gpt-4o を今回使う。
});
// 結果表示
console.log(completion.choices[0].message.content);
}
// 実行
main();
こちらの、
// ChatGPT API に実際にアクセス
// https://platform.openai.com/docs/guides/gpt/chat-completions-api?lang=node.js
const completion = await openai.chat.completions.create({
messages: [
{ role: "user", content: "こんにちは!ChatGPTさん!" } // ユーザーから「こんにちは!ChatGPTさん!」の質問
],
model: "gpt-4o", // モデルは gpt-4o を今回使う。
});
を注目してみましょう。通常 messages オブジェクトに、いままでの会話の情報を入れるわけなんですが、 user の場合は「ユーザー側から ChatGPT に質問した内容」です。
詳しくは、上部のプログラムのコメントにもある https://platform.openai.com/docs/guides/text-generation#building-prompts に書いてあります。
Messages with the developer role provide instructions to the model that are prioritized ahead of user messages, as described in the chain of command section in the model spec. They typically describe how the model should generally behave and respond. This message role used to be called the system prompt, but it has been renamed to more accurately describe its place in the instruction-following hierarchy.
Here's an example of a developer message that modifies the behavior of the model when generating a response to a user message:
文中にこのような説明があります。Google 翻訳で日本語に翻訳してみました。
ロールを持つメッセージは、モデル仕様のコマンド チェーン セクションdeveloperで説明されているように、ユーザー メッセージよりも優先されるモデルへの指示を提供します。通常、モデルが一般的にどのように動作し、応答するかを説明します。このメッセージ ロールは以前はプロンプトと呼ばれていましたが、指示に従う階層内の位置をより正確に説明するために名前が変更されました。system
以下は、メッセージへの応答を生成するときにモデルの動作を変更する開発者メッセージの例ですuser。
ということで「システム メッセージは、アシスタントの動作を設定するのに役立ちます」とのことで、前フリ・キャラ付けに使えることがわかります。
キャラ付けをしてみる
sample01.js をちょっと変更してみましょう。
// ChatGPT API に実際にアクセス
// https://platform.openai.com/docs/guides/gpt/chat-completions-api?lang=node.js
const completion = await openai.chat.completions.create({
messages: [
{ role: "user", content: "こんにちは!ChatGPTさん!" } // ユーザーから「こんにちは!ChatGPTさん!」の質問
],
model: "gpt-4o", // モデルは gpt-4o を今回使う。
});
ここの部分に注目します。(もちろん、いまは質問内容は変わっています)
// ChatGPT API に実際にアクセス
// https://platform.openai.com/docs/guides/gpt/chat-completions-api?lang=node.js
const completion = await openai.chat.completions.create({
messages: [
// 前振り
{ role: "developer", content: "あなたは質問者に忠実なゴールデンリトリバーです。かわいいわんこです。でも人間の言葉が理解でき、人間の言葉で回答の文末は「ワン」をつけて答えます。" },
// 実際の質問
{ role: "user", content: "ドッグフードより、いなばのちゅーるの方がおいしいですか?" }
],
model: "gpt-4o", // モデルは gpt-4o を今回使う。
});
自動保存を確認して、ターミナルで以下のコマンド入力します。
node sample01.js
Enter キーを押してプログラムを実行します。
何度か実行して、わんこにキャラ付けされた回答を体験してみましょう~。
エクストラ
developer 値を変更して他も試してみましょう!
あなたは相手の質問に対して元気よく回答するボットです。よろしくお願いします!
元気のよい前振りを楽しんでみましょう。
あなたは、めちゃくちゃ日本の歴史に造詣の深い説明上手な学者です。質問の中で、なにか日本の歴史に関係のありそうなキーワードが会話にあれば、いい感じに相手にわかりやすく説明してください。
なにかと歴史のウンチクを加えてくるキャラ付けもできるのでやってみましょう。