赞
踩
随着LLM时代的到来,通过prompt直接对话语言模型,得到预期结果,解析后用于实际应用的模式也随之推广。那么什么是prompt,如何用好prompt去激发语言模型的潜力,成为了预训练语言模型底座+prmpt-tuning范式的重要议题。
prompt通俗来说就是通过设计自然语言提示词,让预训练的语言模型“回忆”预测出学习到的内容,并对提示词的问题做出解答,具体步骤如下:
prompt采用完形填空、前缀还是后缀的形式,是预训练底座或者微调时需要考虑的,当前就总结基于大模型完成推理(提问)时,该如何设计prompt以及使用什么样的技巧才能更好地激发大模型的潜能。
当提问的方式与大模型的语料库更接近时,模型的预测效果可能会更好,不过大多数大模型的语料库都是非公开的,好在都是采用类似的模版设计,因此能够总结出一定的规律。
想要在推理时得到较理想的预测结果,结合很多prompt经验来看,一个合理的架构就包含了构造prompt所需的技巧,下面介绍一个ChatGPT3官方提出的prompt构造模版CRISPE(Capacity and Role、Insight、Statement、Personality、Experiment),具体为:
构造步骤 | 技巧描述 | 示例 |
---|---|---|
Capacity and Role | 指定角色和能力 | “假设你是一个机器学习架构开发专家,并且还是一个资深博客作家。” |
Insight | 给定一些背景信息 | “博客的受众是有兴趣了解机器学习最新进展的技术专业人士。” |
Statement | 说明任务目标 | “全面概述最流行的机器学习框架,包括它们的优点和缺点。包括现实生活中的例子和案例研究,以说明这些框架如何在各个行业中成功使用。” |
Personality | 控制输出格式与风格 | “在回复时,请使用 Andrej Karpathy、Francois Chollet、Jeremy Howard 和 Yann LeCun 的混合写作风格。” |
Experiment | 指定输出结果的要求,如单输出/多输出 | “给出多个输出示例” |
上述模版包含了很多构造prompt的技巧,不同的模版侧重的技巧可能有差异,但是都是可以用来尝试的范式,其他更多的模版可以参考:9个prompt构造模版范式;
还有很多prompt的设计技巧,避免模型出现幻觉等,更好地得到目标输出结果,比较基础简单的技巧如:
# 采用langchain生成self-ask示例 # pip install langchain # pip install openai # pip install google-search-results import os os.environ['OPENAI_API_KEY'] = str("xxxxxxxxxxxxxxxxxxxx") os.environ["SERPAPI_API_KEY"] = str("xxxxxxxxxxxxxxxxxxxx") from langchain import OpenAI, SerpAPIWrapper from langchain.agents import initialize_agent, Tool from langchain.agents import AgentType llm = OpenAI(temperature=0) search = SerpAPIWrapper() tools = [ Tool( name="Intermediate Answer", func=search.run, description="useful for when you need to ask with search", ) ] self_ask_with_search = initialize_agent( tools, llm, agent=AgentType.SELF_ASK_WITH_SEARCH, verbose=True ) self_ask_with_search.run( "What is the hometown of the reigning men's U.S. Open champion?" ) # 输出self-ask示例 #> Entering new AgentExecutor chain... # Yes. # Follow up: Who is the reigning men's U.S. Open champion? # Intermediate answer: Carlos Alcaraz # Follow up: Where is Carlos Alcaraz from? # Intermediate answer: El Palmar, Spain # So the final answer is: El Palmar, Spain # > Finished chain. # El Palmar, Spain
更多技巧可以参考以下内容:
如果模型的参数是可以通过入口传递的,也可以通过参数设置调整模型的预测结果:
上面提到的链接里有很多更细节/高阶的优化技巧,下面主要是从两种现在应用比较广泛的范式出发来介绍进阶的优化技巧,能更好地解决模型产生幻觉的问题。
把问题拆分成一步一步的小问题,并逐步进行解答,直到得到最终的目标结果。中间过程结合RAG,就能够产出更稳定、准确性更高的模型预测结果;
现在又很多AI-Agent(如:LangChain)集成了这些大模型推理优化技巧,还包含很多底层数据处理和检索等能力,可以协助使用者更好地进行大模型应用,提升模型的预测效果;
还有一些转为优化prompt设计的架构,可以帮你优化提问的文本内容:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。