「質の高い感情分析を低コストで行いたい」
「ChatGPT APIを使って高度な分析を行いたい」
このような場合には、この記事の内容が参考になります。
この記事では、ChatGPT APIのPrefix Messagesを利用する方法を解説しています。
本記事の内容
- Prefix Messagesとは?
- ChatGPT APIにおけるPrefix Messages
- 【Prefix Messagesの実用例】ChatGPT APIを用いた感情分析
それでは、上記に沿って解説していきます。
Prefix Messagesとは?
ChatGPTには、Prefix Messagesという仕組みが存在しています。
よく使われるのは、ChatGPTのキャラ付けにおいてです。
まずは、Prefix MessagesについてChatGPT自ら説明してもらいましょう。
ChatGPTによるChatGPTの説明
ChatGPTのPrefix Messagesを説明して。
Prefix Messagesは、ChatGPTに送信されるメッセージの前に特定のキーワードを付けることによって、ChatGPTがどのように応答するかを制御する方法です。
例えば、”こんにちは” というメッセージに対して ChatGPTが応答するとします。
しかし、”!キャラクター名 こんにちは” というメッセージを送信すると、ChatGPTはキャラクター名に関連した返信をするようにプログラムされている場合があります。
Prefix Messagesを使うことで、ChatGPTの応答をより制御することができます。
例えば、チャットルーム内でボットとしてChatGPTを使用する場合、ユーザーが”!help” と入力した場合、ChatGPTはそのメッセージを受け取り、”ヘルプ情報を提供する”などの応答を返すようにプログラムされることがあります。
つまり、Prefix Messagesは、ChatGPTの応答を特定のキーワードに関連するものに限定するために使用される方法であり、ChatGPTの応答をより制御することができます。
Prefix Messagesは応答を制御する仕組みである
ChatGPTの説明より、Prefix Messagesは応答を制御する仕組みだとわかります。
それは、キャラ付けだけの話ではありません。
返答の出力フォーマットも指定することができます。
例えば、人間の8大感情について出力形式を指定して表示させてみましょう。
人間の8大感情を次のフォーマットで出力してください。 配列
人間の8大感情を次のフォーマットで出力してください。 JSON
人間の8大感情を次のフォーマットで出力してください。 箇条書き
Prefix Messagesには、キャラや出力形式以外のことも記述することができます。
Prefix Messagesは、前提条件やルールと表現した方がわかりやすかもしれませんね。
以上、Prefix Messagesについて説明しました。
次は、ChatGPT APIにおけるPrefix Messagesを説明します。
ChatGPT APIにおけるPrefix Messages
Prefix Messagesは、前提条件やルールみたいなモノということでした。
これをChatGPT API上で設定することができます。
まずは、プロンプトに書くという方法があります。
次の英文を日本語に翻訳してください。: What is the capital of the USA?
このプロンプトに書くという方法であれば、ChatGPT上でも使えます。
このことをもっとスマートに実行するための方法が用意されています。
以下のような内容をPrefix Messagesに設定するのです。
[ {"role": "system", "content": "あなたは、英語から日本語に翻訳してくれる優秀なアシスタントです。"} ]
この状態であれば、次のプロンプトをChatGPTのAPIに渡すだけでOK。
What is the capital of the USA?
そうすると、次のような返答が戻ってきます。
Prefix Messagesによって、英語は日本語に翻訳することが前提となっているのです。
だから、英文をプロンプトに設定するだけで済みます。
「role」に「user」を設定する方法も用意されています。
しかし、今のところは「system」だけの設定で事足りています。
以上、ChatGPT APIにおけるPrefix Messagesを説明しました。
次は、Prefix Messagesの実用例を説明します。
【Prefix Messagesの実用例】ChatGPT APIを用いた感情分析
ChatGPT APIを用いて感情分析を行ってみましょう。
その際、Prefix Messagesが役に立ちます。
なお、ChatGPT APIはLangChainから利用します。
LangChainを利用すると、簡単にChatGPT APIを利用可能です。
感情分析を行うコードは、以下。
from langchain.llms import OpenAIChat from langchain import PromptTemplate, LLMChain import os os.environ["OPENAI_API_KEY"] = "コピーしたAPIキー" template = "{text}" prompt = PromptTemplate( template=template, input_variables=["text"] ) content = """ あなたは、世界でも有数の精神分析家です。 文章から、著者の心理状態を分析することに長けています。 次の文章をもとに心理分析してください。 返答の出力形式は、以下に従うものとします。 [result] positive or negative [detail] joy:0~10 trust:0~10 fear:0~10 surprise:0~10 sadness:0~10 disgust:0~10 anger:0~10 anticipation:0~10 [review] """ prefix_messages = [ {"role": "system", "content": content} ] llm = OpenAIChat( temperature=0, prefix_messages=prefix_messages ) llm_chain = LLMChain( prompt=prompt, llm=llm ) text = """ ウクライナでの悲惨な状況を見ると胸が痛む。戦争反対。 """ res = llm_chain.run(text) print(res)
上記を実行した結果、次のように表示されます。
[result] negative [detail] joy:0 trust:5 fear:8 surprise:2 sadness:10 disgust:2 anger:7 anticipation:1 [review] この文章からは、著者が非常に悲しみと怒りを感じていることが読み取れます。 また、戦争に対して非常に恐れを感じていることも分かります。 一方で、信頼については中立的な評価となっています。
感情分析が、ちゃんと実行されています。
そのための前提条件をcontent変数に設定しています。
その設定では、「世界でも有数の精神分析家」とキャラ付けをしています。
そして、細かく出力形式を指示しています。
このようにして、Prefix Messagesを用いれば様々なことが実現できるようになるでしょう。
なお、感情分析したテキストは孫正義氏のツイートです。
以上、Prefix Messagesの実用例を説明しました。