system 値で前フリ・キャラ付けをしてみよう

9d2c38e6fe48e61528f6b2d34370768f

この章で学ぶこと

system 値で前フリ・キャラ付けをしてみましょう。

system 値で前フリ・キャラ付けできます。

もう一度プログラムをみてみよう。

// 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-3.5-turbo", // モデルは gpt-3.5-turbo を今回使う。
  });

  // 結果表示
  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-3.5-turbo", // モデルは gpt-3.5-turbo を今回使う。
  });

を注目してみましょう。通常 messages オブジェクトに、いままでの会話の情報を入れるわけなんですが、 user の場合は「ユーザー側から ChatGPT に質問した内容」です。

d2425641315806f35b52063786d2eff5

詳しくは、上部のプログラムのコメントにもある https://platform.openai.com/docs/guides/gpt/chat-completions-api?lang=node.js に書いてあります。

The main input is the messages parameter. Messages must be an array of message objects, where each object has a role (either "system", "user", or "assistant") and content. Conversations can be as short as one message or many back and forth turns.

Typically, a conversation is formatted with a system message first, followed by alternating user and assistant messages.

The system message helps set the behavior of the assistant. For example, you can modify the personality of the assistant or provide specific instructions about how it should behave throughout the conversation. However note that the system message is optional and the model’s behavior without a system message is likely to be similar to using a generic message such as "You are a helpful assistant."

The user messages provide requests or comments for the assistant to respond to. Assistant messages store previous assistant responses, but can also be written by you to give examples of desired behavior.

文中にこのような説明があります。Google 翻訳で日本語に翻訳してみました。

主な入力はメッセージパラメータです。メッセージはメッセージ オブジェクトの配列である必要があり、各オブジェクトには役割 (「システム」、「ユーザー」、「アシスタント」のいずれか) とコンテンツがあります。会話は 1 つのメッセージのように短くても、何度もやり取りを繰り返すこともあります。

通常、会話は最初にシステム メッセージでフォーマットされ、次にユーザー メッセージとアシスタント メッセージが交互に続きます。

システム メッセージは、アシスタントの動作を設定するのに役立ちます。たとえば、アシスタントの性格を変更したり、会話全体でアシスタントがどのように動作するかについて具体的な指示を提供したりできます。ただし、システム メッセージはオプションであり、システム メッセージがない場合のモデルの動作は、「あなたは役に立つアシスタントです」などの一般的なメッセージを使用する場合と同様になる可能性があることに注意してください。

ユーザー メッセージは、アシスタントが応答するためのリクエストまたはコメントを提供します。アシスタント メッセージには、以前のアシスタントの応答が保存されていますが、望ましい動作の例を示すためにユーザーが作成することもできます。

ということで「システム メッセージは、アシスタントの動作を設定するのに役立ちます」とのことで、前フリ・キャラ付けに使えることがわかります。

キャラ付けをしてみる

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-3.5-turbo", // モデルは gpt-3.5-turbo を今回使う。
  });

ここの部分に注目します。(もちろん、いまは質問内容は変わっています)

  // ChatGPT API に実際にアクセス
  // https://platform.openai.com/docs/guides/gpt/chat-completions-api?lang=node.js
  const completion = await openai.chat.completions.create({
    messages: [
      // 前振り
      { role: "system", content: "あなたは質問者に忠実なゴールデンリトリバーです。かわいいわんこです。でも人間の言葉が理解でき、人間の言葉で回答の文末は「ワン」をつけて答えます。" },
      // 実際の質問
      { role: "user", content: "ドッグフードより、いなばのちゅーるの方がおいしいですか?" }
    ],
    model: "gpt-3.5-turbo", // モデルは gpt-3.5-turbo を今回使う。
  });

自動保存を確認して、ターミナルで以下のコマンド入力します。

node sample01.js

Enter キーを押してプログラムを実行します。

acac315df9f90d339ffc4ad85d5f12b6

何度か実行して、わんこにキャラ付けされた回答を体験してみましょう~。

エクストラ

5fd4ddf3339a0b0da492aaac3956e5a9

system 値を変更して他も試してみましょう!

あなたは相手の質問に対して元気よく回答するボットです。よろしくお願いします!

元気のよい前振りを楽しんでみましょう。

あなたは、めちゃくちゃ日本の歴史に造詣の深い説明上手な学者です。質問の中で、なにか日本の歴史に関係のありそうなキーワードが会話にあれば、いい感じに相手にわかりやすく説明してください。

なにかと歴史のウンチクを加えてくるキャラ付けもできるのでやってみましょう。

results matching ""

    No results matching ""