百度飞桨大模型训练营:零代码对话式大模型应用

1.6k words

构建对话式应用

对话式应用的特点

  • 交互性

使用自然语言,文本,声音来直接和应用互动,使用成本和学习成本低

  • 智能化

能够通过对话式应用的载体较为全面的发挥出大语言模型的功能,例如逻辑、记忆、理解、生成

  • 跨设备支持

对于不同种类的设备都能有很好的支持,例如手机、手表、网站、音响等,都能够落地展现出不同场景的支持能力

对话式应用的开发流程

评估一个对话式应用的标准,一是要降低用户使用学习的门槛,二是要能够准确识别用户的输入和上下文语境,以此来生成高质量的结果

一般来说开发的过程有如下五个模块

  1. 基座模型选型
  2. 参数设计
  3. 系统提示词设计
  4. 示例设计
  5. 检索增强数据库设计

image.png

基座模型的选型

我们使用飞桨大模型社区来进行应用构建,以我自己的项目为例

image.png

这里有五个基础的预制模型,可以查阅他们的区别和优势根据自己的需求选择使用,这里我选择LLaMA-13B

参数的调整

除此之外有两个模型参数,一个是Temperature

image.png

我们需要根据自己的需求,温度越高,输出其他词的可能性也越高

第二个参数是TOP_P,他的意思就是采样和选择

image.png

这里我们就需要通过大量的实验来确定相应的参数选择了

除此之外还有一个策略叫做Top_K,他的意思是选取概率最大的前K个词作为候选,这种策略的好处就是计算量小,而且一定程度上可以保证回答的质量,但是也有一定的概率导致文本过于聚焦,缺乏多样性

系统提示词设计

提示词设计就对应了界面中的

image.png

这里就涉及到了提示词工程的概念,这里的工程就指的是系统化、结构化、迭代化

提示词是用于提示和引导模型的输出更加准确,更有针对性的设计

因此我们就需要学习一定的框架和流程,以确保提示词设计的正确性和合理性

提示词分类

提示词可以分为用户提示词和系统提示词

image.png

那我们作为对话式应用的开发,就写的是系统提示词了

提示词框架

框架用的是全局思考,整体的篇章结构

这里给出一些尽可能全面的框架

image.png

image.png

image.png

这些框架的一个共同点就是分层,分点,分模块的进行描述

image.png

这里我用这个框架来描述我的旅行规划师的基本框架,这只是一个简单示例,具体还需要更精细化的调整

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
# 角色:旅行规划师
## 个人资料:
- 作者:jasmine-leaf
- 版本:1.0
- 语言:中文
- 描述:专门用于创建个性化旅行行程的旅行规划师。
## 目标:
- 根据个人偏好和要求提供量身定制的旅行计划。
- 确保所有计划包括交通、住宿、餐饮、景点和天气等必要细节。
- 除非另有指定,否则默认推广国内旅行目的地。
## 约束条件:
- 完整的旅行计划需要清晰的出发地、目的地和旅行天数信息。
- 除非指定其他国家,否则默认所有目的地均在中国境内。
- 使用各种分隔符,序号,缩进,换行符等进行排版美化
## 技能:
- 对各种目的地、当地习俗和文化实践有深入了解。
- 能够提供全面的旅行建议和详细的行程安排。
- 持续学习并更新旅行相关信息。
## 工作流程:
1. **收集用户信息:**
- 如果没有提供,询问旅行者的出发地、目的地和旅行天数。
- 确认目的地是否在中国或其他国家。
2. **制定旅行计划草案:**
- 利用对目的地的了解创建行程草案。
- 包括交通选项、酒店推荐、餐厅建议和必游景点。
- 检查旅行期间的天气预报。
3. **行程细化:**
- 根据用户反馈和特定偏好调整计划。
- 确保计划符合旅行者的兴趣和需求。
4. **完善旅行计划:**
- 呈现包含所有细节和建议的最终行程。
- 提供关于目的地的额外提示和信息,如当地习俗和紧急联系方式。
5. **持续支持:**
- 为旅行计划的任何进一步查询或变更提供帮助。
- 更新旅行者有关新信息或建议。
---

提示词技巧

技巧是用于优化的,定向修改的,要指导用户自己适时快速和灵活的打造合适的提示词,而不依赖系统内置的提示词

写出清晰的指令
  1. 说清楚——在你的输入中包含详尽的信息,以获取更为准确的答案
  2. 演到位——要求模型采用角色
  3. 排好版——使用分隔符清楚的指令输入不同部分,让大模型区分什么是你的任务指令,什么是待处理信息,什么是举例输出
提供参考资料

可以提高大模型的时效性和针对性

示例设计

我们可以将一些类似的问题+答案作为prompt的一部分进行输入

image.png

但是对于环节众多的任务或者是高级推理的任务,通过碎片化的学习很难取得很好的效果

这时候我们就需要引导大模型将复杂任务拆解为多个子任务,也称之为思维链

image.png

image.png

image.png

这里重在模拟思考和推导的过程

image.png

随着基座模型的增强,大模型也能够产生思维的效果

除此之外,我们可以使用LtM的提示法,每次只问其中的一小部分问题,在多轮互动中来输出准确结果

Comments