当前位置:   article > 正文

【大模型LLM第一篇】Prompt Engineering(PE)总结-学会与LLM交谈

大模型pe

前言

prompt更像是和大模型直接交流的语言,prompt写的好坏,可能直接影响LLM的输出,在产品中,为了输出的格式,或者其他的约束,在输入的prompt中添加一些话术也是必不可少的,现在对于prompt提示工程也有很多paper的研究工作,这次主要记录自己学习llm初期,关于prompt的一些知识,整体偏简约,不会写的太冗余

通过为 AI 分配一个角色,我们给它提供了一些上下文。这个上下文有助于 AI 更好地理解问题。通过更好地理解问题,AI 往往可以给出更好的答案。

一、基础

主要包含以下几个部分

  • 角色(role):给 AI 定义一个和任务最相关的角色,比如:「你是一位算法工程师」,先定义角色,其实就是在prompt的开头将问题域缩小,问答更具垂直性

  • 指示(instruction):对任务大体要完成的方向进行描述, 比如写小说

  • 知识(knowledge):和用户提的问题相关的私有化知识或者持续更新的外部知识

  • 历史记录(history):可能需要,在一个输入的prompt中添加之前的有选择的history对话(user/assist对话对)

  • 上下文(context):给出与输入的任务相关的其它上下文(背景)信息,其实就是提供可能和这个输入或者任务有关系的一些信息,作为辅助信息,让回答更准确

  • 例子(example):给出任务的实际例子,其实就是few-shot learning

  • 输入(input):输入信息

  • 输出(output schema):输出格式描述,主要是为了后续解析,将想要的结果拿出来,做其他集成,用得最多的主要就是json

在使用过程中,如果prompt足够长,这些prompt提示词本身放的前后顺序要比想象中的大,大模型通常对 prompt 开头和结尾的内容更敏感。

二、进阶技巧

2.1 少样本提示(few shot prompt)

046ac6788cc36e332c9a2667075c6af6.png

类似于给一至多个实例,来让大模型泛化

2.2 思维链(Chain of Thoughts, CoT)

出自于华人nips2022的paper,短短不到两年,引用已经快3000了:Chain-of-Thought Prompting Elicits Reasoning in Large Language Models

Paper link:https://proceedings.neurips.cc/paper_files/paper/2022/file/9d5609613524ecf4f15af0f7b31abca4-Paper-Conference.pdf

666ef9c9f3c8450ad95ebc02be47ce93.png

具体看原文,这里直接说结果了。这种能力类似于,告诉llm和人一样,把一个大的task分成很多个小的task,每一步想明白,最后的结果更不容易出错,这个论文中最早发现llm的这一特性,但还是需要把思维链的prompt详细的写出来一次,类似于Few-shot,所以这种Cot被称为Few-shot-CoT

后来根据东京大学的学者发表的论文:Large Language Models are Zero-Shot Reasoners

Paper link:https://arxiv.org/pdf/2205.11916.pdf

想简单的采用思维链,只需要在prompt加入Let's think step by step 等等话术,就可以得到相同的效果,  相当于一句话实现zero-shot

d48b6641abc2062be2fc6eef27844dd9.png

2.3 自洽性(Self-Consistency)

来自于ICLR 2023的一篇论文:Self-Consistency Improves Chain of Thought Reasoning in Language Models

Paper link:https://openreview.net/forum?id=1PL1NIMMrw

6d9ac4959514551d4737120ee37fee5a.png

类似于 machine learning中的 vote的 embedding的玩法

  1. 执行很多次模型的推理

  2. 根据投票最多选择输出的结果 而Self-Consistency的思路是

  3. 都是通过CoT来引导LLM

  4. 对语言模型进行多次采样, 生成多个推理路径的结果

  5. 对不同推理路径生成结果基于投票策略选择最一致的答案进行输出

2.4 最少到最多提示过程(Least-To-Most)

论文来自ICLR2023:Least-to-Most Prompting Enables Complex Reasoning in Large Language Models 

Paper link:https://openreview.net/forum?id=WZH7099tgfM

d40a19ce411a99b330a13c7107a2c1d3.png

主要的思想就是 首先将问题分解为子问题,然后逐个解决,但是这里值得注意的是每个子问题的问答history信息都要放在下一次子问题的prompt中。论文图中已经特别详细给出了使用的方式,具体不赘述了

2.5 思维树(Tree-of-thought, ToT)

论文来源NIPS2023:Tree of Thoughts: Deliberate Problem Solving with Large Language Models

Paper link:https://arxiv.org/pdf/2305.10601.pdf

代码:https://github.com/princeton-nlp/tree-of-thought-llm

属于一个框架,不像前面说的实现上那么简单,轻便。主要引入BFS深度搜索的思想。

5937f3ecb05eab44b21ebd2e2e02570f.png
  • prompt位置:https://github.com/princeton-nlp/tree-of-thought-llm/blob/master/src/tot/prompts/text.py

  • bfs逻辑:https://github.com/princeton-nlp/tree-of-thought-llm/blob/master/src/tot/methods/bfs.py

主要的规则是:依旧使用“思想链”方法来提示语言模型,每一个“思想”作为解决问题的中间单元,允许 LLM 通过考虑多种不同的推理路径(BFS)和自我评估选择(类似于剪枝和回溯)来决定下一步行动路径,最终得到深思熟虑的output的效果

2.6检索增强生成(Retrieval Augmented Generation, RAG)

主要为了三点:

  1. 数据的保密性、私有性

  2. 数据的实时更新,相比于sft,更轻量

  3. 为了更好解决幻觉问题

主要的应用情况:

0c8a01492cfde7cee28f6b9c2fa5b039.png

更新数据库的步骤

  1. 数据收集

  2. 文档切分

  3. embedding得到数据对应的向量

  4. 存入向量数据库

LLM推理的过程

  1. User input 向量化

  2. 检索数据集

  3. 得到topk的信息

  4. 再排序(可能存在)

  5. 检索结果插入到prompt中,作为knowledge的一部分

  6. 和LLM chat 这个领域工作比较多,后面慢慢看

Reference

  • https://prompt-guide.xiniushu.com/

  • https://www.promptingguide.ai/zh

推荐阅读:

我的2022届互联网校招分享

我的2021总结

浅谈算法岗和开发岗的区别

互联网校招研发薪资汇总

公众号:AI蜗牛车

保持谦逊、保持自律、保持进步

db596283c4696bfa8e20b08cd5d9129d.jpeg

发送【蜗牛】获取一份《手把手AI项目》(AI蜗牛车著)

发送【1222】获取一份不错的leetcode刷题笔记

发送【AI四大名著】获取四本经典AI电子书

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Cpp五条/article/detail/637815
推荐阅读
相关标签
  

闽ICP备14008679号