会话定制
这个笔记本介绍了定制对话记忆的几种方法。
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!")
[1m> 进入新的 ConversationChain 链...[0m
格式化后的提示:
[32;1m[1;3m以下是一个友好的人类和AI之间的对话。AI健谈并且根据上下文提供很多具体细节。如果AI不知道问题的答案,它会诚实地表示它不知道。
当前对话:
人类: Hi there!
AI:[0m
[1m> 完成 ConversationChain 链。[0m
结果: " Hi there! It's nice to meet you. How can I help you today?"
conversation.predict(input="What's the weather?")
[1m> 进入新的 ConversationChain 链...[0m
格式化后的提示:
[32;1m[1;3m以下是一个友好的人类和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:[0m
[1m> 完成 ConversationChain 链。[0m
结果: ' 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!")
[1m> 进入新的 ConversationChain 链...[0m
格式化后的提示:
[32;1m[1;3m以下是一个友好的人类和AI之间的对话。AI健谈并且根据上下文提供很多具体细节。如果AI不知道问题的答案,它会诚实地表示它不知道。
当前对话:
人类: Hi there!
AI Assistant:[0m
[1m> 完成 ConversationChain 链。[0m
结果: " Hi there! It's nice to meet you. How can I help you today?"
conversation.predict(input="What's the weather?")
[1m> 进入新的 ConversationChain 链...[0m
格式化后的提示:
[32;1m[1;3m以下是一个友好的人类和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:[0m
[1m> 完成 ConversationChain 链。[0m
结果: ' 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!")
[1m> 进入新的 ConversationChain 链...[0m
格式化后的提示:
[32;1m[1;3m以下是一个友好的人类和AI之间的对话。AI健谈并且根据上下文提供很多具体细节。如果AI不知道问题的答案,它会诚实地表示它不知道。
当前对话:
Friend: Hi there!
AI:[0m
[1m> 完成 ConversationChain 链。[0m
结果: " 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?")
[1m> Entering new ConversationChain chain...[0m
Prompt after formatting:
[32;1m[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.
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:[0m
[1m> Finished ConversationChain chain.[0m
' 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.'