mirror of
https://github.com/hwchase17/langchain
synced 2024-10-29 17:07:25 +00:00
985496f4be
Big docs refactor! Motivation is to make it easier for people to find resources they are looking for. To accomplish this, there are now three main sections: - Getting Started: steps for getting started, walking through most core functionality - Modules: these are different modules of functionality that langchain provides. Each part here has a "getting started", "how to", "key concepts" and "reference" section (except in a few select cases where it didnt easily fit). - Use Cases: this is to separate use cases (like summarization, question answering, evaluation, etc) from the modules, and provide a different entry point to the code base. There is also a full reference section, as well as extra resources (glossary, gallery, etc) Co-authored-by: Shreya Rajpal <ShreyaR@users.noreply.github.com>
263 lines
7.5 KiB
Plaintext
263 lines
7.5 KiB
Plaintext
{
|
|
"cells": [
|
|
{
|
|
"cell_type": "markdown",
|
|
"id": "69e35d6f",
|
|
"metadata": {},
|
|
"source": [
|
|
"# Conversational Memory Customization\n",
|
|
"\n",
|
|
"This notebook walks through a few ways to customize conversational memory.\n",
|
|
"\n",
|
|
"The main way to do so is by changing the AI prefix in the conversation summary. By default, this is set to \"AI\", but you can set this to be anything you want. Note that if you change this, you should also change the prompt used in the chain to reflect this naming change. Let's walk through an example of that in the example below."
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 1,
|
|
"id": "0f964494",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"from langchain.llms import OpenAI\n",
|
|
"from langchain.chains import ConversationChain\n",
|
|
"from langchain.chains.conversation.memory import ConversationBufferMemory\n",
|
|
"\n",
|
|
"\n",
|
|
"llm = OpenAI(temperature=0)"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 2,
|
|
"id": "d0e66d87",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"# Here it is by default set to \"AI\"\n",
|
|
"conversation = ConversationChain(\n",
|
|
" llm=llm, \n",
|
|
" verbose=True, \n",
|
|
" memory=ConversationBufferMemory()\n",
|
|
")"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 3,
|
|
"id": "f8fa6999",
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"\n",
|
|
"\n",
|
|
"\u001b[1m> Entering new ConversationChain chain...\u001b[0m\n",
|
|
"Prompt after formatting:\n",
|
|
"\u001b[32;1m\u001b[1;3mThe following is a friendly conversation between a human and an AI. The AI is talkative and provides lots of specific details from its context. If the AI does not know the answer to a question, it truthfully says it does not know.\n",
|
|
"\n",
|
|
"Current conversation:\n",
|
|
"\n",
|
|
"Human: Hi there!\n",
|
|
"AI:\u001b[0m\n",
|
|
"\n",
|
|
"\u001b[1m> Finished ConversationChain chain.\u001b[0m\n"
|
|
]
|
|
},
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"\" Hi there! It's nice to meet you. How can I help you today?\""
|
|
]
|
|
},
|
|
"execution_count": 3,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"conversation.predict(input=\"Hi there!\")"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 4,
|
|
"id": "de213386",
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"\n",
|
|
"\n",
|
|
"\u001b[1m> Entering new ConversationChain chain...\u001b[0m\n",
|
|
"Prompt after formatting:\n",
|
|
"\u001b[32;1m\u001b[1;3mThe following is a friendly conversation between a human and an AI. The AI is talkative and provides lots of specific details from its context. If the AI does not know the answer to a question, it truthfully says it does not know.\n",
|
|
"\n",
|
|
"Current conversation:\n",
|
|
"\n",
|
|
"Human: Hi there!\n",
|
|
"AI: Hi there! It's nice to meet you. How can I help you today?\n",
|
|
"Human: What's the weather?\n",
|
|
"AI:\u001b[0m\n",
|
|
"\n",
|
|
"\u001b[1m> Finished ConversationChain chain.\u001b[0m\n"
|
|
]
|
|
},
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"' The current weather is sunny and warm with a temperature of 75 degrees Fahrenheit. The forecast for the next few days is sunny with temperatures in the mid-70s.'"
|
|
]
|
|
},
|
|
"execution_count": 4,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"conversation.predict(input=\"What's the weather?\")"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 5,
|
|
"id": "585949eb",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": [
|
|
"# Now we can override it and set it to \"AI Assistant\"\n",
|
|
"from langchain.prompts.prompt import PromptTemplate\n",
|
|
"\n",
|
|
"template = \"\"\"The following is a friendly conversation between a human and an AI. The AI is talkative and provides lots of specific details from its context. If the AI does not know the answer to a question, it truthfully says it does not know.\n",
|
|
"\n",
|
|
"Current conversation:\n",
|
|
"{history}\n",
|
|
"Human: {input}\n",
|
|
"AI Assistant:\"\"\"\n",
|
|
"PROMPT = PromptTemplate(\n",
|
|
" input_variables=[\"history\", \"input\"], template=template\n",
|
|
")\n",
|
|
"conversation = ConversationChain(\n",
|
|
" prompt=PROMPT,\n",
|
|
" llm=llm, \n",
|
|
" verbose=True, \n",
|
|
" memory=ConversationBufferMemory(ai_prefix=\"AI Assistant\")\n",
|
|
")"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 6,
|
|
"id": "1bb9bc53",
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"\n",
|
|
"\n",
|
|
"\u001b[1m> Entering new ConversationChain chain...\u001b[0m\n",
|
|
"Prompt after formatting:\n",
|
|
"\u001b[32;1m\u001b[1;3mThe following is a friendly conversation between a human and an AI. The AI is talkative and provides lots of specific details from its context. If the AI does not know the answer to a question, it truthfully says it does not know.\n",
|
|
"\n",
|
|
"Current conversation:\n",
|
|
"\n",
|
|
"Human: Hi there!\n",
|
|
"AI Assistant:\u001b[0m\n",
|
|
"\n",
|
|
"\u001b[1m> Finished ConversationChain chain.\u001b[0m\n"
|
|
]
|
|
},
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"\" Hi there! It's nice to meet you. How can I help you today?\""
|
|
]
|
|
},
|
|
"execution_count": 6,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"conversation.predict(input=\"Hi there!\")"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": 7,
|
|
"id": "d9241923",
|
|
"metadata": {},
|
|
"outputs": [
|
|
{
|
|
"name": "stdout",
|
|
"output_type": "stream",
|
|
"text": [
|
|
"\n",
|
|
"\n",
|
|
"\u001b[1m> Entering new ConversationChain chain...\u001b[0m\n",
|
|
"Prompt after formatting:\n",
|
|
"\u001b[32;1m\u001b[1;3mThe following is a friendly conversation between a human and an AI. The AI is talkative and provides lots of specific details from its context. If the AI does not know the answer to a question, it truthfully says it does not know.\n",
|
|
"\n",
|
|
"Current conversation:\n",
|
|
"\n",
|
|
"Human: Hi there!\n",
|
|
"AI Assistant: Hi there! It's nice to meet you. How can I help you today?\n",
|
|
"Human: What's the weather?\n",
|
|
"AI Assistant:\u001b[0m\n",
|
|
"\n",
|
|
"\u001b[1m> Finished ConversationChain chain.\u001b[0m\n"
|
|
]
|
|
},
|
|
{
|
|
"data": {
|
|
"text/plain": [
|
|
"' The current weather is sunny and warm with a temperature of 75 degrees Fahrenheit. The forecast for the rest of the day is sunny with a high of 78 degrees and a low of 65 degrees.'"
|
|
]
|
|
},
|
|
"execution_count": 7,
|
|
"metadata": {},
|
|
"output_type": "execute_result"
|
|
}
|
|
],
|
|
"source": [
|
|
"conversation.predict(input=\"What's the weather?\")"
|
|
]
|
|
},
|
|
{
|
|
"cell_type": "code",
|
|
"execution_count": null,
|
|
"id": "1023b6ef",
|
|
"metadata": {},
|
|
"outputs": [],
|
|
"source": []
|
|
}
|
|
],
|
|
"metadata": {
|
|
"kernelspec": {
|
|
"display_name": "Python 3 (ipykernel)",
|
|
"language": "python",
|
|
"name": "python3"
|
|
},
|
|
"language_info": {
|
|
"codemirror_mode": {
|
|
"name": "ipython",
|
|
"version": 3
|
|
},
|
|
"file_extension": ".py",
|
|
"mimetype": "text/x-python",
|
|
"name": "python",
|
|
"nbconvert_exporter": "python",
|
|
"pygments_lexer": "ipython3",
|
|
"version": "3.10.9"
|
|
}
|
|
},
|
|
"nbformat": 4,
|
|
"nbformat_minor": 5
|
|
}
|