昇腾社区首页
中文
注册

多轮对话

本章节将指导用户使用LangChain来使用多轮对话功能。

前提条件

操作步骤

  1. 在容器内任意目录执行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)
  2. 运行样例代码,请求大模型中带有历史信息,prompt拼接结果如下:
    You are a chatbot having a conversation with a human. Please answer as briefly as possible.
    
    Human: 请记住小明的爸爸是小刚
    AI: 记住了,小明的爸爸是小刚。
    Human: 七大洲前四个是啥?
    AI: 亚洲、非洲、欧洲、北美洲。
    Human: 后三个呢?
    AI: 南美洲、澳大利亚、南极洲。
    Human: 请问小明的爸爸是谁?
    小明的爸爸是小刚。