QAをあらかじめ用意して期待した回答を得られるように頑張る
Few-shot プロンプトとは?
「Few-shot プロンプト」は、一言で言えば、AIの学習プロセスを効率的に高める魔法のような手法です。通常、AIは大量のデータを必要とし、時間とリソースを大量に消費しながら学習します。しかし、Few-shot プロンプトは、このプロセスをスマートにします。
この手法では、AIにとても少ない数の例示(ショット)を与え、それに基づいて特定のタスクを行う方法を学ばせます。たとえば、「犬」や「猫」の画像をわずかに見せて、AIにどちらがどちらかを識別させるといった具合です。
この手法が優れているのは、少ないデータで高度な学習ができる点です。これにより、限られたデータしか利用できない場合や、急速に結果を出さなければならない状況でも、AIのパワーを最大限に活用できるのです。
Few-shot プロンプトは、大規模な言語モデルなどにおいて非常に効果的であり、これによってAIは文章を生成したり、質問に回答したりする際に、非常に人間らしい結果を出すことが可能になります。
この技術は、ビジネスや教育、エンターテインメントなど、幅広い分野で画期的な変化をもたらす可能性を秘めています。そしてFew-shot プロンプトは、限られたリソースの中で、AIの魅力を存分に引き出すための鍵となるのです。
それでは、langchainを使って試していきましょう。実際に動かしたい人は次の準備のところに書いてある色々が動くようにします。
LangChain – python の準備
pyenvを使ってインストールした後に、venvで仮想環境にしています。
-- brew で pyenvをインストール --
brew install pyenv
-- pyenv で python をインストール
pyenv install 3.11.4
pyenv global 3.11.4
-- 作業用のフォルダでvenv
python -m venv ai-chat.venv
. ./ai-chat.venv/bin/activate
openaiとlangchainのインストールです。
pip install openai
pip install langchain
これでインストール完了です
以前に書いた記事も参考にどうぞ。
- LangChain入門ガイド – pythonでChatGPTのAPIを呼んでみよう
- LangChain入門ガイド – プロンプトテンプレートであらかじめ文章を用意
- LangChain入門ガイド – Toolsに自作関数を使ってみる。 (lepetit-prince.net)
FewShotPromptTemplateを実装
このソースコードは、OpenAIのGPT-3.5-turboモデルを使用して、与えられたクエリに対する回答を生成するためのものです。
few_shot_prompt_templateというテンプレートを使用して、クエリを含むプロンプトを作成し、OpenAIのモデルに渡します。モデルは、プロンプトに基づいてテキストを生成し、それを出力します。
from langchain import PromptTemplate, FewShotPromptTemplate
from langchain.llms import OpenAI
# create our examples
examples = [
{
"query": "今日の天気はどうですか?",
"answer": "晴れていますが、たまに曇ることもあります。"
},
{
"query": "日本の有名な観光地はどこですか?",
"answer": "京都、東京ディズニーランド、富士山などいろんなところがありますよ。"
}
]
# create a example template
example_template = """
User: {query}
AI: {answer}
"""
# create a prompt example from above template
example_prompt = PromptTemplate(
input_variables=["query", "answer"],
template=example_template
)
# now break our previous prompt into a prefix and suffix
# the prefix is our instructions
prefix = """以下は、AIアシスタントとの会話の抜粋です。
アシスタントは通常、ユーモアを交えたりして、ユーザーの質問に対して創造的かつ面白い回答を生成します。
以下にいくつかの例を示します:
"""
# and the suffix our user input and output indicator
suffix = """
User: {query}
AI: """
# now create the few shot prompt template
few_shot_prompt_template = FewShotPromptTemplate(
examples=examples,
example_prompt=example_prompt,
prefix=prefix,
suffix=suffix,
input_variables=["query"],
example_separator="\n\n"
)
query = "人生の楽しみ方とは?"
# now print the prompt
prompt = few_shot_prompt_template.format(query=query)
print(prompt)
# now we can use the prompt to generate text
# initialize the models
openai = OpenAI(model_name="gpt-3.5-turbo", temperature=1.0)
print(openai(prompt))
実行結果
print結果 – テンプレートから作ったプロンプト
以下は、AIアシスタントとの会話の抜粋です。
アシスタントは通常、ユーモアを交えたりして、ユーザーの質問に対して創造的かつ面白い回答を生成します。
以下にいくつかの例を示します:
User: 今日の天気はどうですか?
AI: 晴れていますが、たまに曇ることもあります。
User: 日本の有名な観光地はどこですか?
AI: 京都、東京ディズニーランド、富士山などいろんなところがありますよ。
User: 人生の楽しみ方とは?
AI:
print結果 – openaiからの回答
それは人それぞれですが、自分の好きなことや興味を追求すること、新しい経験をすることなどが楽しみ方の一つです。他にも友人や家族との時間を大切にすることや、自分自身にとって意味のあることに取り組むことも楽しみ方の一つですよ。何か特定の楽しみ方をお探しですか?
まとめ:あなたもFew-shot プロンプトを活用しよう!
Few-shot プロンプトは、効率性と創造性を向上させるAI技術の未来です。言語翻訳、画像認識、コンテンツ生成など、多くの分野で活用が期待されています。この革新的な手法を利用し、あなたも次世代のAIパワーを体感してみてはいかがでしょうか。驚くべき可能性が、あなたを待っています。