当前位置: 首页 > news >正文

对话聊天(Chatbot)

  1. 低成本构建:利用大语言模型,只需很少的工作量就能构建出定制的聊天机器人。
  2. 个性化与多轮交互:通过特定的聊天格式(接口),可以实现与机器人的延伸对话,使其能够针对特定任务或行为进行个性化定制。

一个优秀的 Chatbot 包含三种消息角色系统消息(System)、用户消息(User)和助手消息(Assistant):

  • 用户和助手消息代表对话双方的交替发言。
  • 系统消息用于设定助手的行为、角色和全局指令。它时刻引导模型,且对用户不可见,使开发者能在不干扰用户对话的前提下精准控制机器人的属性。

1. 基础对话:角色设定与上下文记忆

通过传入消息列表,让模型扮演特定角色,且不具备上下文记忆能力。如果想让模型引用或 “记住” 对话的早期部分,则必须在模型的输入中提供早期的交流。

messages = [ {'role':'system', 'content':'你是个友好的聊天机器人。'}, {'role':'user', 'content':'Hi, 我是Isa'}, {'role':'assistant', 'content': "Hi Isa! 很高兴认识你。今天有什么可以帮到你的吗?"}, {'role':'user', 'content':'是的,你可以提醒我, 我的名字是什么?'} ] response = get_completion_from_messages(messages, temperature=1) print(response)

输出:

2. 复杂任务:构建业务型 Chatbot(如订餐机器人)

将 Chatbot 应用于实际业务,需要设定严格的业务流程和知识库(如菜单)。在System Prompt中详细规定机器人的行为准则(问候 -> 收集订单 -> 确认 -> 询问地址 -> 结算),并将完整的菜单数据直接写入系统消息中。

import panel as pn # GUI pn.extension() panels = [] # collect display context = [{'role':'system', 'content':""" 你是订餐机器人,为披萨餐厅自动收集订单信息。 你要首先问候顾客。然后等待用户回复收集订单信息。收集完信息需确认顾客是否还需要添加其他内容。 最后需要询问是否自取或外送,如果是外送,你要询问地址。 最后告诉顾客订单总金额,并送上祝福。 请确保明确所有选项、附加项和尺寸,以便从菜单中识别出该项唯一的内容。 你的回应应该以简短、非常随意和友好的风格呈现。 菜单包括: 菜品: 意式辣香肠披萨(大、中、小) 12.95、10.00、7.00 芝士披萨(大、中、小) 10.95、9.25、6.50 茄子披萨(大、中、小) 11.95、9.75、6.75 薯条(大、小) 4.50、3.50 希腊沙拉 7.25 配料: 奶酪 2.00 蘑菇 1.50 香肠 3.00 加拿大熏肉 3.50 AI酱 1.50 辣椒 1.00 饮料: 可乐(大、中、小) 3.00、2.00、1.00 雪碧(大、中、小) 3.00、2.00、1.00 瓶装水 5.00 """} ] # accumulate messages inp = pn.widgets.TextInput(value="Hi", placeholder='Enter text here…') button_conversation = pn.widgets.Button(name="Chat!") interactive_conversation = pn.bind(collect_messages, button_conversation) dashboard = pn.Column( inp, pn.Row(button_conversation), pn.panel(interactive_conversation, loading_indicator=True, height=300), ) dashboard messages = context.copy() messages.append( {'role':'system', 'content':'创建上一个食品订单的 json 摘要。\ 逐项列出每件商品的价格,字段应该是 1) 披萨,包括大小 2) 配料列表 3) 饮料列表,包括大小 4) 配菜列表包括大小 5) 总价'}, ) response = get_completion_from_messages(messages, temperature=0) print(response)

Chatbot 收集完用户的自然语言需求后,通常需要将其转换为后端系统能处理的数据格式。在对话结束时,追加一条新的 System 消息,要求模型基于之前的对话生成 JSON 摘要。

关键点:此时必须将 temperature 设为 0,以确保输出格式的绝对稳定和可预测。

http://www.gsyq.cn/news/1590569.html

相关文章:

  • LangGraph图编排底层原理:状态、节点与边的工程实践
  • 从零构建异构高性能计算集群:Kubernetes与Ceph实战指南
  • 近期碎片0625
  • ChatGPT嵌入DAM系统:自然语言驱动数字资产智能操作
  • 一个传统企业老板的自白
  • Linux命令-pwconv(从 /etc/passwd 创建 /etc/shadow 影子密码)
  • FRSM V6 Dense MoE vs Transformer — 全维度技术报告
  • 智能工程师中的方案设计与优化分析
  • 告别招人内卷!零基础用 QClaw,一人撑起整盘生意
  • 偏函数与柯里化:函数式编程技巧
  • Kubernetes 生产集群故障自愈:从 Pod 驱逐到节点自动恢复的实战进阶
  • 斐波那契常数数字分布分析:从高精度计算到统计检验
  • 【微科普】一文吃透GDPR与CCPA数据法规,后端隐私接口改造附完整方案
  • 程序员专属浪漫!自制HTML生日蛋糕粒子特效源码
  • 照片总修不出“通透感“?这款AI修图神器,一键让废片变大片!
  • 国产开源神器!一个U盘装N个系统,拷贝ISO就能启动,再也不用反复格式化!
  • 2026实测盘点:16款降AI率工具测评,论文安全过关就靠它!
  • ML 实验管理工具链调研:Weights Biases、MLflow 与 DVC 的架构对比与选型评估
  • Mapper算法标签置换零模型的统计收敛性证明与工程实践
  • 智慧军营部队人员车辆信息化管理系统建设方案
  • HarmonyOS 6.1.0 Weather Service 智慧出行与天气服务怎么设计?
  • Python 进阶技巧:异步迭代器与生成器管道——高并发数据流处理的工程范式
  • Pearcleaner:深度解析macOS应用清理的现代Swift架构实现
  • 多协议转换:用 Go 标准库手写 gRPC 翻译网关
  • Linux CPU利用率深度解析:从top命令到虚拟化资源评估
  • Ryujinx模拟器完整配置指南:从零开始畅玩Switch游戏
  • AI 情感陪伴进阶:从情绪识别到共情响应的工程化实现
  • 模型训练进阶:学习率调度与预热策略——从震荡崩溃到稳定收敛的调参实录
  • Prometheus黑盒监控实践:用Blackbox Exporter检测网站与网络可用性
  • Go 网络编程实战:TCP 长连接服务的设计、粘包处理与连接池管理