メモリー使うとまさに掲示板のスレッドって感じ。
Conversation Chainとは
LangChainのConversationChainは、会話の履歴を記憶して、次の会話に生かす機能です。
会話の履歴とは、会話の参加者が交わした言葉や発言、会話の流れや文脈などを指します。ConversationChainでは、この会話の履歴を記憶して、次の会話に生かします。たとえば、会話の参加者が「今日は天気が良いですね」と言ったとします。ConversationChainでは、この発言を記憶して、次の会話で「そうですね、今日はとても気持ちがいいです」などと返答することができます。
ConversationChainは、会話の参加者間の理解を深め、より自然な会話を実現するために役立ちます。また、会話の履歴を記憶することで、会話の参加者の好みや興味を把握することもできます。
今回は、この機能を使ってみます。
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)
- LangChain入門ガイド – FewShotプロンプトでQAを用意しとく (lepetit-prince.net)
試してみよう
pythonのプログラムを使って試してみましょう。
from langchain import OpenAI
from langchain.chains import ConversationChain
from langchain.memory import ConversationBufferMemory
# first initialize the large language model
llm = OpenAI(
model_name="gpt-3.5-turbo",
)
conversation = ConversationChain(
llm=llm, verbose=True, memory=ConversationBufferMemory()
)
print(conversation.prompt.template)
print("====== 一言目 START ======")
print(conversation.predict(input="こんにちは。今日はとても暑いです"))
print("====== 二言目 START ======")
print(conversation.predict(input="こんな日にぴったりなレジャーを教えてください"))
一言目で、「暑い」とAIに伝えて、履歴を使った回答を期待しながら、二言目で、レジャーについて聞いてみます。
実行結果
ちゃんと一言目に伝えた「暑い」を含んだ履歴を保持して、やり取りできました!
====== 一言目 START ======
Current conversation:
Human: こんにちは。今日はとても暑いです
AI:
Finished chain.
こんにちは!いえいえ、気になさらないでください。私は暑さを感じることはできませんが、おっしゃる通り、今日は暑いようですね。外に出る際は熱中症に気を付けてくださいね。
====== 二言目 START ======
Current conversation:
Human: こんにちは。今日はとても暑いです
AI: こんにちは!いえいえ、気になさらないでください。私は暑さを感じることはできませんが、おっしゃる通り、今日は暑いようですね。外に出る際は熱中症に気を付けてくださいね。
Human: こんな日にぴったりなレジャーを教えてください
AI:
Finished chain.
もちろんです!暑い日にぴったりなレジャーとしては、水遊びやプールに行くことがおすすめです。また、海や川での水泳や、水族館や水上公園へのお出かけも楽しいですよ。もし暑さが苦手な場合は、室内でのクーラーの効いた施設で過ごすのも良いですね。アイススケートやボウリング、映画館への訪問などがおすすめです。他にも、山や公園に行ってピクニックやバーベキューを楽しむのも良いですね。いかがでしょうか?何か特定のレジャーがお好みですか?