书生·浦语大模型全链路开源体系-第3关
为了推动大模型在更多行业落地应用,让开发人员更高效地学习大模型的开发与应用,上海人工智能实验室重磅推出书生·浦语大模型实战营,为开发人员提供大模型学习和开发实践的平台。
本文是书生·浦语大模型全链路开源体系-开源开放体系课程的笔记。
相关资源
- InternLM项目地址
https://github.com/InternLM/InternLM
- InternLM2技术报告
https://arxiv.org/pdf/2403.17297.pdf
- 书生·万卷 数据
https://opendatalab.org.cn/
- 课程链接
https://space.bilibili.com/1293512903/channel/collectiondetail?sid=4017857
提示工程(Prompt Engineering)
什么是Prompt(提示词)
Prompt是一种用于指导以大语言模型为代表的生成式人工智能生成内容(文本、图像、视频等)的输入方式。它通常是一个简短的文本或问题,用于描述任务和要求。
Prompt可以包含一些特定的关键词或短语,用于引导模型生成符合特定主题或风格的内容。例如,如果我们要生成一篇关于“人工智能”的文章,我们可以使用“人工智能”作为Prompt,让模型生成一篇关于人工智能的介绍、应用、发展等方面的文章。
Prompt还可以包含一些特定的指令或要求,用于控制生成文本的语气、风格、长度等方面。例如,我们可以使用“请用幽默的语气描述人工智能的发展历程”作为Prompt,让模型生成一篇幽默风趣的文章。
总之,Prompt是一种灵活、多样化的输入方式,可以用于指导大语言模型生成各种类型的内容。
什么是提示工程
提示工程是一种通过设计和调整输入(Prompts)来改善模型性能或控制其输出结果的技术。
在模型回复的过程中,首先获取用户输入的文本,然后处理文本特征并根据输入文本特征预测之后的文本,原理为next token prediction,类似我们日常使用的输入法。
提示工程是模型性能优化的基石,有以下六大基本原则:
- 指令要清晰
- 提供参考内容
- 复杂的任务拆分成子任务
- 给 LLM“思考”时间(给出过程)
- 使用外部工具
- 系统性测试变化
在提示工程中,第一点给出清晰的指令是至关重要的。一个有效的指令通常包含以下要素:背景、任务、要求、限制条件、示例、输出格式和目标。通过提供这些详细信息,我们可以引导模型生成更符合我们期望的文本。
提示词工程案例
背景问题: 近期相关研究指出,在处理特定文本分析任务时,语言模型的表现有时会遇到挑战,例如在分析单词内部的具体字母数量时可能会出现错误。
比如:当我们问大模型“strawberry”中有几个字母“r”的时候,大模型可能会回答“strawberry”中有两个字母“r”,这是错误的。
- 智谱的回答
- Kimi的回答
- 豆包的回答
- 书生的回答
可以看到上面的回答,几乎是全军覆没。
为了让大模型能够准确的回答问题,这时我们就需要添加一些提示词,让大模型能够理解我们的意图。
比如,我们先尝试使用提示词:
我们统计单词中某个字母出现的次数的时候,应该从头到尾每个字母都进行比较,然后记录下我们关心的字母在单词中出现的位置,最后看看有多少个不同的位置,那么字母就出现了多少次,也就是包含几个字母。那么,请问:strawberry单词有几个字母r
此时,可能仍然无法得到准确的回答:
在 "strawberry" 这个单词中,字母 "r" 出现了两次。虽然 "r" 在单词中只出现在两个不同的位置,但根据你描述的统计方法,我们实际上是要计算字母 "r" 在整个单词中出现的位置。因此,"strawberry" 这个单词中包含两个字母 "r"。
那么,我们就需要更换提示词,直到得到期望的答案。比如:
我们统计单词中某个字母出现的次数的时候,应该从头到尾每个字母都进行比较,将其它字母都替换成空,最后剩下的字母有多少个,那么字母就出现了多少次,也就是包含几个字母。那么,请问:strawberry单词有几个字母r
此时,我们可能会得到准确的答案:
根据你描述的统计方法,即通过将其他字母替换成空,统计剩下的字母的数量来确定某个字母在单词中出现的次数,那么在 "strawberry" 这个单词中,字母 "r" 实际上出现了三次。这是因为当把 "s", "t", "a", "w", "b", "e", "r", "b", "r", "e", "r", "r", "e", "y" 中的其他字母替换成空后,剩下的字母 "r" 有三次出现。因此,"strawberry" 这个单词包含三个字母 "r"。
当然,如果我们得到的回答还是不准确,那么,我们还需要继续调整提示词,逐步完善,直到满意为止。
通过这个例子,我们可以清楚地看到,随着指令的逐步完善,AI生成的内容质量也随之提升。这种渐进式的提示词优化方法可以帮助我们更好地掌控AI输出,获得更符合需求的结果。
其他技巧我们这里不做过多介绍,如果大家感兴趣可以参考下面的资料: