本文主要介绍大模型的prompt,并且给出实战教程。即使零基础也可以实现大模型的搭建。
内容:初级阶段的修炼心法,帮助凝聚和提升内力,为后续修炼打下基础。
1、prompt
1.1含义和作用
prompt就是提示工程的意思。在大型语言模型中,"prompt"(提示)指的是用户提供给模型的输入文本或指令,用来指导模型生成相应的输出。Prompt在与模型交互时起着至关重要的作用,它影响着模型的理解、回答的准确性和内容的创造性。以下是prompt在大模型中的主要含义和作用:
a. 指导模型生成:Prompt提供了模型生成回复或输出所需的初始信息和方向。它可以包含问题、指令、关键词或上下文信息,帮助模型理解用户的意图和需要,并基于此进行相应的生成。
b. 上下文理解:通过prompt,模型能够了解当前对话或任务的上下文。这对于确保模型生成与用户期望相关和连贯的回复至关重要,特别是在长期交互或多轮对话中。
c.回答准确性:一个清晰和详细的prompt通常会导致更准确的回答。如果prompt描述清楚用户的问题或需求,模型就能更容易地提供符合预期的信息或解决方案。
d.生成多样性:尽管prompt为模型提供了指导,但它并不限制模型的创造性和输出的多样性。合适的prompt可以在保持准确性的同时,激发模型产生新颖或非显而易见的解答。
e. 任务定向:在一些应用场景中,prompt可以具体指定模型需要执行的任务或生成的类型,如回答问题、提供建议、描述情景等。这种指导有助于确保模型输出与特定任务或应用的需求相符。
f. 语言风格和格式:通过prompt,用户可以设定期望的语言风格、回答的结构或特定的信息格式。这对于确保模型输出的整体质量和用户体验至关重要。
总之,prompt在大型语言模型中充当了用户与模型之间交互的桥梁和指南,对于影响模型输出的准确性、相关性和多样性起着关键作用。有效地构建和使用prompt可以显著提高模型的实用性和响应能力。
1.2原则
在处理大型语言模型中的prompt时,有几个原则是通常被考虑和遵循的:
a.清晰和简洁的指导:prompt应该明确表达用户的需求或者问题,避免模糊或多义的描述,以确保模型能够理解并提供相关和准确的回答。
b. 上下文的引导:如果问题或需求涉及到特定的背景或上下文,prompt应该包含必要的信息来帮助模型理解,比如相关的关键词或相关信息。
c. 具体的指令:prompt中应包含具体的指令或问题,以便模型知道用户期望的输出类型和格式。例如,询问一个城市的旅游景点时,可以明确指定需要景点名称、活动建议或交通信息等。
d.避免过度指导:虽然提供一些上下文和指导是有益的,但避免过度指导或提供过多细节,以免限制模型的创造性和回答的多样性。
e. 语言简洁明了:使用清晰、简洁和自然的语言编写prompt,以便模型能够轻松理解和处理。
f.测试和调整:在实际应用中,对prompt进行测试和调整是很重要的,以确保模型能够按预期工作,并且能够有效地处理各种输入。
这些原则有助于确保大型语言模型能够在与用户的交互中表现出高效、准确和有创意的特性。
总之:prompt就是一个起点,给大模型一个提示、引导和规范的作用。
1.3使用技巧
a.分隔符
eg:给出一段话并要求 GPT 进行总结,在该示例中我们使用 ``` 来作为分隔符。
from tool import get_completion
text = """您应该提供尽可能清晰、具体的指示,以表达您希望模型执行的任务。这将引导模型朝向所
需的输出,并降低收到无关或不正确响应的可能性。不要将写清晰的提示词与写简短的提示词混淆。在
许多情况下,更长的提示词可以为模型提供更多的清晰度和上下文信息,从而导致更详细和相关的输出。
""" # 需要总结的文本内容
prompt = f"""把用三个反引号括起来的文本总结成一句话。```{text}```""" # 指令内容,使用 ``` 来分隔指令和待总结的内容
response = get_completion(prompt)
print(response)
# 为了获得所需的输出,您应该提供清晰、具体的指示,避免与简短的提示词混淆,并使用更长的提示
词来提供更多的清晰度和上下文信息。
b.结构化输出
eg:生成三本书的标题、作者和类别,并以 JSON 的格式返回,为便于解析,我们指定了 Json 的键: book_id、title、author、genre。
prompt = f"""请生成包括书名、作者和类别的虚构的、非真实存在的中文书籍清单,并以 JSON 格式
提供,其中包含以下键:book_id、title、author、genre。"""
response = get_completion(prompt)
print(response)
[
{ "book_id": 1, "title": "幻境之夜", "author": "李梦飞", "genre": "奇幻小说"
},
... ]
c.参考示例
Zero-Shot提示:模型只根据任务的描述生成响应,不需要任何示例。
One-Shot提示:只提供一个例子。
Few-Shot提示:提供几个例子。在提示中的作用是通过少量样本引导模型对特定任务进行学习和执行,例如通过提供少量风格或主题示例,引导模型产出具有相似风格或主题的创作。
d.让模型充当角色
示例:请以莎士比亚戏剧中的哈姆雷特的身份解释“生存还是毁灭,这是一个问题”。这个示例要求模型以莎士比亚戏剧《哈姆雷特》中主人公的角色来解释著名的“生存还是毁灭”的问题,以展示模型在不同角色中的表现能力和语境理解能力。
2、模型实战
项目任务(三大业务场景):
1.文本分类
2.文本信息抽取
3.文本匹配
大模型选择:ChatGLM-6B
采用方法:基于Few-Shot+Zero-Shot以及Instrunction的思想,设计prompt, 进而应用ChatGLM-6B模型完成相应的任务
2.1 准备工作
a.我们运用python环境来执行大模型,所以首先需要下载python,(建议用anaconda)
b.下载ChatGLM-6B模型模型,链接如下:
https://github.com/THUDM/ChatGLM-6B?tab=readme-ov-file
README中介绍了ChatGLM-6B模型和硬件需求。
| 量化等级 | 最低 GPU 显存(推理) | 最低 GPU 显存(高效参数微调) |
| FP16(无量化) | 13 GB | 14 GB |
| INT8 | 8 GB | 9 GB |
| INT4 | 6 GB | 7 GB |
c.在你的anaconda中安装需要的依赖。在前面github中下载的包中,它其实把所有需要的依赖都放在了requirements.txt中,直接输入:
pip install -r requirements.txt
如果下载速度很慢,加上清华镜像
pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
其中 transformers 库版本推荐为 4.27.1,但理论上不低于 4.23.1 即可。
此外,如果需要在 cpu 上运行量化后的模型,还需要安装 gcc 与 openmp。多数 Linux 发行版默认已安装。Windows 测试环境 gcc 版本为 TDM-GCC 10.3.0, Linux 为 gcc 11.3.0。
d.从本地加载模型:
以上代码会由 transformers 自动下载模型实现和参数。完整的模型实现可以在 Hugging Face Hub。如果你的网络环境较差,下载模型参数可能会花费较长时间甚至失败。此时可以先将模型下载到本地,然后从本地加载。
从 Hugging Face Hub 下载模型需要先安装Git LFS,然后运行
git clone https://huggingface.co/THUDM/chatglm-6b
如果你从 Hugging Face Hub 上下载 checkpoint 的速度较慢,可以只下载模型实现
GIT_LFS_SKIP_SMUDGE=1 git clone https://huggingface.co/THUDM/chatglm-6b
然后从这里手动下载模型参数文件,并将下载的文件替换到本地的 chatglm-6b 目录下。
将模型下载到本地之后,将以上代码中的 THUDM/chatglm

最低0.47元/天 解锁文章
2297

被折叠的 条评论
为什么被折叠?



