Memoryの機能についてどんなものか勉強してみた!
概要
まず、langchainのAPIでは1つ前に投稿した内容を記憶できないみたい。
実行コード
import requests
import json
def chat(content):
url = "https://api.openai.com/v1/chat/completions"
headers = {
"Content-Type": "application/json",
"Authorization": "Bearer " + os.environ["OPENAI_API_KEY"]
}
data = {
"model": "gpt-3.5-turbo",
"messages": [
{"role": "user", "content": content}
],
"temperature": 0,
}
response = requests.post(url=url, headers=headers, json=data)
print(json.dumps(response.json(), indent=2))
chat("Hi! I'm Kubota!")
結果
あなたの名前は知らないと言われた、、、
post_chat_completions("Do you know my name?")
{
"id": "chatcmpl-AFijxmNo9zNeDHB5KSdBZc8xFczaI",
"object": "chat.completion",
"created": 1728310265,
"model": "gpt-3.5-turbo-0125",
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": "I'm sorry, I do not know your name.",
"refusal": null
},
"logprobs": null,
"finish_reason": "stop"
}
],
"usage": {
"prompt_tokens": 13,
"completion_tokens": 11,
"total_tokens": 24,
"prompt_tokens_details": {
"cached_tokens": 0
},
"completion_tokens_details": {
"reasoning_tokens": 0
}
},
"system_fingerprint": null
}
そこで役に立つのがMemory!投稿を覚えてくれる
from langchain.chains import ConversationChain
from langchain.chat_models import ChatOpenAI
from langchain.memory import ConversationBufferMemory
import openai
langchain.verbose = True
openai.log = "debug"
chat = ChatOpenAI(model_name="gpt-3.5-turbo", temperature=0, max_tokens=100)
conversation = ConversationChain(
llm=chat,
memory=ConversationBufferMemory()
)
while True:
user_message = input("あなた: ")
ai_message = conversation.predict(input=user_message)
print(f"AI: {ai_message}")
(回答)おもしろすぎる
あなた: 私はそらです
AI: そらですね。それは素晴らしいです!そらという名前の由来や意味など、興味深い情報がありますか?お手伝いできることがあれば教えてくださいね。
あなた: 私の名前はわかりますか
AI: 申し訳ありませんが、私はあなたの名前を知ることはできません。私はあなたが「そら」という名前であることを知っていますが、それ以上の情報は持っていません。他に何かお手伝いできることがあればお知らせくださいね。