蚌埠市网站建设_网站建设公司_在线商城_seo优化
2026/1/14 15:28:26 网站建设 项目流程

第一步:创建带历史消息占位符的提示词模板

fromlangchain_core.promptsimportChatPromptTemplate,MessagesPlaceholder prompt=ChatPromptTemplate.from_messages([SystemMessage(content="你是3DM的一个技术专家,擅长解决各种Web开发中的技术问题"),MessagesPlaceholder(variable_name="chat_history"),("human","{input}"),# 使用元组格式,这是更简洁的方式])

第二步:创建大模型实例

fromlangchain_openaiimportChatOpenAI llm_qianwen_max=ChatOpenAI(model="qwen-max-latest",base_url="https://dashscope.aliyuncs.com/compatible-mode/v1",api_key=os.getenv("DASHSCOPE_API_KEY"),streaming=True,)

第三步:创建消息存储对象,使用dict结构,保存sessionId:ChatMessageHistory

fromlangchain_community.chat_message_historiesimportChatMessageHistory store={}defget_session_history(session_id:str)->ChatMessageHistory:ifsession_idnotinstore:store[session_id]=ChatMessageHistory()print(store)returnstore[session_id]

完整代码

""" 使用MessagesPlaceholder让大模型可以收到历史消息 """importosimportuuidfromdotenvimportload_dotenvfromlangchain_core.messagesimportHumanMessage,SystemMessagefromlangchain_core.output_parsersimportStrOutputParser load_dotenv()""" 第一步:创建带历史消息占位符的提示词模板 """fromlangchain_core.promptsimportChatPromptTemplate,MessagesPlaceholder prompt=ChatPromptTemplate.from_messages([SystemMessage(content="你是3DM的一个技术专家,擅长解决各种Web开发中的技术问题"),MessagesPlaceholder(variable_name="chat_history"),("human","{input}"),# 使用元组格式,这是更简洁的方式])""" 第二步:创建大模型实例 """fromlangchain_openaiimportChatOpenAI llm_qianwen_max=ChatOpenAI(model="qwen-max-latest",base_url="https://dashscope.aliyuncs.com/compatible-mode/v1",api_key=os.getenv("DASHSCOPE_API_KEY"),streaming=True,)""" 第三步:创建消息存储对象,使用dict结构,保存sessionId:ChatMessageHistory """fromlangchain_community.chat_message_historiesimportChatMessageHistory store={}defget_session_history(session_id:str)->ChatMessageHistory:ifsession_idnotinstore:store[session_id]=ChatMessageHistory()print(store)returnstore[session_id]""" 第四步:通过RunnableWithMessageHistory来运行大模型 第四步的写法是为了创建一个带记忆功能的AI助手,通过封装复杂的会话管理逻辑,让你只需关注核心的业务逻辑。这种设计模式在构建对话系统时非常常见和实用。 """fromlangchain_core.runnablesimportRunnableWithMessageHistory chain=prompt|llm_qianwen_max|StrOutputParser()chain_with_history=RunnableWithMessageHistory(runnable=chain,get_session_history=get_session_history,input_messages_key="input",history_messages_key="chat_history",)""" 第五步:构建连续对话 """defrun_conversation():session_id=uuid.uuid4()print(f"当前会话id{session_id}")whileTrue:user_input=input("用户:")ifuser_input.lower()=="exit":breakresponse=chain_with_history.invoke({"input":user_input},config={"configurable":{"session_id":session_id}},)print("助手:")forchunkinresponse:print(chunk,end="")print("\n")if__name__=='__main__':run_conversation()

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询