网站界面的版式架构网站制作和维护费用
2026/3/3 10:43:13 网站建设 项目流程
网站界面的版式架构,网站制作和维护费用,建设工程合同甲方,合肥专业做网站的公司本案例通过精心设计的提示模板#xff0c;将历史对话内容与用户指令有机组合#xff0c;引导模型生成精准的对话摘要。这种设计模拟了真实对话场景#xff1a;模型既能回顾之前的交流内容#xff0c;又能理解当前提出的总结要求#xff0c;从而输出符合预期的结果。 消息模…本案例通过精心设计的提示模板将历史对话内容与用户指令有机组合引导模型生成精准的对话摘要。这种设计模拟了真实对话场景模型既能回顾之前的交流内容又能理解当前提出的总结要求从而输出符合预期的结果。消息模板对话结构的骨架设计聊天提示模板是整个流程的骨架它定义了信息的组织方式。模板包含两个关键元素对话历史占位符和总结指令。占位符如同一个可伸缩的插槽能够动态容纳任意轮次的历史消息总结指令则明确告知模型当前任务目标。这种前后分明的结构确保模型不会混淆历史内容与当前指令为生成准确摘要奠定基础。消息类型角色区分的语义价值LangChain 要求每条消息必须明确标识发言者角色人类消息与人工智能消息采用不同的类型封装。这种角色区分并非形式主义而是具有重要的语义价值。模型依赖这些标识来理解对话的流向与逻辑例如分辨哪些内容是用户提问、哪些是系统回答。在总结过程中这种角色信息帮助模型保留对话的交互本质而非简单拼接文本片段。参数化设计灵活复用的关键技巧总结指令中的字数要求被设计为可替换变量这是提示工程中的重要技巧。通过参数化同一套模板能够适应不同场景需求十字段落适合快速浏览百字段落适合详细回顾。这种设计避免了为每种需求重复编写模板实现一次定义多次复用显著提升开发效率与系统可维护性。看代码from langchain.prompts import ( ChatPromptTemplate, # 构建多轮对话提示模板 HumanMessagePromptTemplate, # 构造用户消息模板 MessagesPlaceholder, # 占位历史对话消息 ) from langchain_core.messages import AIMessage, HumanMessage # 定义消息类型 from langchain_openai import ChatOpenAI # 适配 OpenAI 风格的聊天模型 from langchain_core.output_parsers import StrOutputParser # 将模型输出转为纯文本 import os # 用于安全读取环境变量 # # 步骤 1构建对话总结提示模板 # # 用户指令模板要求模型用指定字数总结对话历史 SUMMARY_INSTRUCTION 用 {word_count} 字总结我们迄今为止的对话。 # 创建用户消息模板支持变量替换 summary_message_template HumanMessagePromptTemplate.from_template(SUMMARY_INSTRUCTION) # 组装完整聊天模板 # 1. 先插入历史对话通过 MessagesPlaceholder 动态填充 # 2. 再追加用户总结指令 chat_prompt_template ChatPromptTemplate.from_messages( [ MessagesPlaceholder(variable_nameconversation), # 历史对话占位符 summary_message_template, # 总结指令 ] ) # # 步骤 2模拟多轮对话历史用于测试 # # 用户提问 user_query HumanMessage(content学习编程最好的方法是什么?) # AI 回答结构化建议 ai_response AIMessage( content\ 1. 选择编程语言决定您想要学习的编程语言。 2. 从基础开始熟悉变量、数据类型和控制结构等基本编程概念。 3. 练习、练习、再练习学习编程的最好方法是通过实践经验。\ ) # 构建对话历史列表 conversation_history [user_query, ai_response] # # 步骤 3调试 - 查看最终发送给模型的提示消息可选 # # 格式化模板替换变量生成实际消息列表 formatted_messages chat_prompt_template.format_prompt( conversationconversation_history, word_count10 ).to_messages() print( * 60) print(【调试】发送给模型的完整消息序列) for idx, msg in enumerate(formatted_messages, 1): role User if isinstance(msg, HumanMessage) else AI print(f{idx}. [{role}] {msg.content}) print( * 60) # # 步骤 4初始化语言模型DeepSeek # llm ChatOpenAI( api_keyos.getenv(DEEPSEEK_API_KEY), # 从环境变量读取 API 密钥更安全 base_urlos.getenv(DEEP_URL), # 从环境变量读取 DeepSeek 的 API 基础地址 modeldeepseek-v3:671b, # 指定使用的模型名称 temperature0.7, # 控制生成文本的随机性0~1值越高越有创造性 max_tokens1024 # 限制模型最大输出长度以 token 为单位 ) # # 步骤 5构建处理链Prompt → LLM → Parser # # 链式流程输入变量 → 提示模板 → 语言模型 → 字符串解析 summary_chain chat_prompt_template | llm | StrOutputParser() # # 步骤 6执行链式调用生成对话总结 # # 调用链传入对话历史与字数要求 summary_result summary_chain.invoke({ conversation: conversation_history, word_count: 10 # 要求 10 字总结 }) # 输出结果 print(\n【生成结果】对话总结10 字) print(- * 60) print(summary_result) print(- * 60)输出的结果【调试】发送给模型的完整消息序列1. [User] 学习编程最好的方法是什么?2. [AI] 1. 选择编程语言决定您想要学习的编程语言。2. 从基础开始熟悉变量、数据类型和控制结构等基本编程概念。3. 练习、练习、再练习学习编程的最好方法是通过实践经验。3. [User] 用 10 字总结我们迄今为止的对话。【生成结果】对话总结10 字------------------------------------------------------------think好的用户让我用10个字总结我们迄今为止的对话。首先我需要回顾之前的对话内容。用户最初问的是学习编程最好的方法我给出了三点建议选择语言、从基础开始、多练习。然后用户现在要求总结要求是10个字。首先我需要确保总结涵盖主要点。原回答的三个要点是选择语言、基础概念、实践练习。但10个字可能不够详细需要更简洁。可能需要用更简练的词汇比如“学编程需选语言、基础、实践”这样可能超过10字。需要精简。可能的组合“学编程选语言基础实践。” 这样刚好10个字。检查是否准确选语言对应第一步基础对应第二步实践对应第三步。是的涵盖了主要点。另外用户可能希望总结既简洁又准确所以需要确保没有遗漏关键信息。同时用户可能希望总结能让人一看就明白核心内容所以用冒号和逗号分隔可能更清晰。确认字数是否符合中文每个字和标点算一个字符。这里“学编程选语言基础实践。”正好10个字符包括标点。所以这个应该是合适的。/think学编程选语言基础实践。------------------------------------------------------------

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

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

立即咨询