メモリー使うとまさに掲示板のスレッドって感じ。

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

これでインストール完了です

以前に書いた記事も参考にどうぞ。

試してみよう

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.
もちろんです!暑い日にぴったりなレジャーとしては、水遊びやプールに行くことがおすすめです。また、海や川での水泳や、水族館や水上公園へのお出かけも楽しいですよ。もし暑さが苦手な場合は、室内でのクーラーの効いた施設で過ごすのも良いですね。アイススケートやボウリング、映画館への訪問などがおすすめです。他にも、山や公園に行ってピクニックやバーベキューを楽しむのも良いですね。いかがでしょうか?何か特定のレジャーがお好みですか?