多轮对话
本章节将指导用户使用LangChain来使用多轮对话功能。
前提条件
- 已经完成安装RAG SDK。
- 已经基于《MindIE安装指南》中的“方式三:容器部署方式”章节完成容器化部署。
- 已经运行Llama3-8B-Chinese-Chat大模型。
操作步骤
- 在容器内任意目录执行vim命令创建demo.py代码文件,文件内容如下:
from langchain.memory import ConversationBufferWindowMemory from langchain.chains import LLMChain from langchain_core.prompts import PromptTemplate from mx_rag.llm import Text2TextLLM from mx_rag.utils import ClientParam if __name__ == '__main__': template = """You are a chatbot having a conversation with a human. Please answer as briefly as possible. {chat_history} Human: {human_input}""" dev = 1 prompt = PromptTemplate( input_variables=["chat_history", "human_input"], template=template ) # k可以设置保存的历史会话轮数,还支持ConversationBufferMemory和ConversationTokenBufferMemory,参考langchain官方文档 memory = ConversationBufferWindowMemory(memory_key="chat_history", k=3) client_param = ClientParam(ca_file="/path/to/ca.crt") chat = Text2TextLLM(base_url="https://ip:port/v1/chat/completions", model_name="Llama3-8B-Chinese-Chat", client_param=client_param) llm_chain = LLMChain(llm=chat, prompt=prompt, memory=memory, verbose=True) questions = ["请记住小明的爸爸是小刚", "七大洲前四个是啥?", "后三个呢?"] for question in questions: llm_chain.predict(human_input=question) completion = llm_chain.predict(human_input="请问小明的爸爸是谁?") print(completion)
- 运行样例代码,请求大模型中带有历史信息,prompt拼接结果如下:
You are a chatbot having a conversation with a human. Please answer as briefly as possible. Human: 请记住小明的爸爸是小刚 AI: 记住了,小明的爸爸是小刚。 Human: 七大洲前四个是啥? AI: 亚洲、非洲、欧洲、北美洲。 Human: 后三个呢? AI: 南美洲、澳大利亚、南极洲。 Human: 请问小明的爸爸是谁? 小明的爸爸是小刚。
父主题: 应用开发