核心模块(Modules)
记忆(Memory)
会话定制(ConversationalCustomization)

会话定制

这个笔记本介绍了定制对话记忆的几种方法。

from langchain.chains import ConversationChain
from langchain.memory import ConversationBufferMemory
from langchain_openai import OpenAI
 
llm = OpenAI(temperature=0)

AI 前缀

首先要做的是更改对话摘要中的 AI 前缀。默认情况下,它设置为 "AI",但你可以将其设置为你想要的任何内容。请注意,如果你更改了此项,你还应该更改链中使用的提示,以反映这种命名更改。让我们通过下面的示例来说明。

# 默认情况下设置为 "AI"
conversation = ConversationChain(
    llm=llm, verbose=True, memory=ConversationBufferMemory()
)
conversation.predict(input="Hi there!")
> 进入新的 ConversationChain 链...
格式化后的提示:
以下是一个友好的人类和AI之间的对话。AI健谈并且根据上下文提供很多具体细节。如果AI不知道问题的答案,它会诚实地表示它不知道。

当前对话:

人类: Hi there!
AI:

> 完成 ConversationChain 链。

结果: " Hi there! It's nice to meet you. How can I help you today?"

conversation.predict(input="What's the weather?")
> 进入新的 ConversationChain 链...
格式化后的提示:
以下是一个友好的人类和AI之间的对话。AI健谈并且根据上下文提供很多具体细节。如果AI不知道问题的答案,它会诚实地表示它不知道。

当前对话:

人类: Hi there!
AI: Hi there! It's nice to meet you. How can I help you today?
人类: What's the weather?
AI:

> 完成 ConversationChain 链。

结果: ' 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.'

# 现在我们可以将其覆盖并设置为 "AI Assistant"
from langchain.prompts.prompt import PromptTemplate
 
template = """以下是一个友好的人类和AI之间的对话。AI健谈并且根据上下文提供很多具体细节。如果AI不知道问题的答案,它会诚实地表示它不知道。
 
当前对话:
{history}
人类: {input}
AI Assistant:"""
PROMPT = PromptTemplate(input_variables=["history", "input"], template=template)
conversation = ConversationChain(
    prompt=PROMPT,
    llm=llm,
    verbose=True,
    memory=ConversationBufferMemory(ai_prefix="AI Assistant"),
)
conversation.predict(input="Hi there!")
> 进入新的 ConversationChain 链...
格式化后的提示:
以下是一个友好的人类和AI之间的对话。AI健谈并且根据上下文提供很多具体细节。如果AI不知道问题的答案,它会诚实地表示它不知道。

当前对话:

人类: Hi there!
AI Assistant:

> 完成 ConversationChain 链。

结果: " Hi there! It's nice to meet you. How can I help you today?"

conversation.predict(input="What's the weather?")
> 进入新的 ConversationChain 链...
格式化后的提示:
以下是一个友好的人类和AI之间的对话。AI健谈并且根据上下文提供很多具体细节。如果AI不知道问题的答案,它会诚实地表示它不知道。

当前对话:

人类: Hi there!
AI Assistant:  Hi there! It's nice to meet you. How can I help you today?
人类: What's the weather?
AI Assistant:

> 完成 ConversationChain 链。

结果: ' 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.'

人类前缀

下一种方法是更改对话摘要中的人类前缀。默认情况下,它设置为 "Human",但你可以将其设置为你想要的任何内容。请注意,如果你更改了此项,你还应该更改链中使用的提示,以反映这种命名更改。让我们通过下面的示例来说明。

# 现在我们可以将其覆盖并设置为 "Friend"
from langchain.prompts.prompt import PromptTemplate
 
template = """以下是一个友好的人类和AI之间的对话。AI健谈并且根据上下文提供很多具体细节。如果AI不知道问题的答案,它会诚实地表示它不知道。
 
当前对话:
{history}
Friend: {input}
AI:"""
PROMPT = PromptTemplate(input_variables=["history", "input"], template=template)
conversation = ConversationChain(
    prompt=PROMPT,
    llm=llm,
    verbose=True,
    memory=ConversationBufferMemory(human_prefix="Friend"),
)
conversation.predict(input="Hi there!")
> 进入新的 ConversationChain 链...
格式化后的提示:
以下是一个友好的人类和AI之间的对话。AI健谈并且根据上下文提供很多具体细节。如果AI不知道问题的答案,它会诚实地表示它不知道。

当前对话:

Friend: Hi there!
AI:

> 完成 ConversationChain 链。

结果: " Hi there! It's nice to meet you. How can I help you today?"# 我提供的mdx文档的内容需要翻译,只要翻译md语法中的标题、段落和列表的内容,驼峰和下划线单词不必翻译,请保留md语法标点符号,你翻译完后对原内容进行替换,将结果返回给我。mdx文档是:=======

conversation.predict(input="What's the weather?")
> Entering new ConversationChain chain...
Prompt after formatting:
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.

Current conversation:

Friend: Hi there!
AI:  Hi there! It's nice to meet you. How can I help you today?
Friend: What's the weather?
AI:

> Finished ConversationChain chain.

' The weather right now is sunny and warm with a temperature of 75 degrees Fahrenheit. The forecast for the rest of the day is mostly sunny with a high of 82 degrees.'