一:概述
LangGPT结构化提示词是进行文生图的必备知识库。Prompt(提示)是一个多义词,在不同的领域和语境中具有不同的含义和用法。
二:具体说明
<1>Prompt介绍
1.1、基本含义
- 在英语中,Prompt通常指“提示”或“提示语”,用于引导或鼓励某人采取行动或完成某项任务。
- 在汉语中,Prompt的含义与英语类似,但更多时候被理解为“促使”或“导致”某事发生的因素,类似于英语中的cause或reason。
1.2、计算机领域
在计算机领域,Prompt通常指代计算机或用户之间的交互界面,用于提示用户输入命令或信息。这是Prompt最直观和常见的用法之一。具体来说,Prompt在以下几个方面发挥着重要作用:
- 命令行界面:在命令行界面中,Prompt是用户输入命令的地方,它通常以一个特定的符号(如">"、"$"等)开头,提示用户输入下一个命令。
- 用户交互:在图形用户界面(GUI)中,Prompt可能以文本框、按钮提示等形式出现,用于引导用户输入必要的信息或执行特定的操作。
- AI模型交互:在人工智能领域,Prompt是指向模型提供输入以引导其生成特定输出的文本或指令。它是与模型进行交互时用户提供的文本段落,用于描述用户想要从模型获取的信息、回答、文本等内容。
“Prompt”为模型提供的输入,用以引导AI模型其生成特定的输出。
<2>什么是Prompt Engineering(提示工程)
它是一种通过设计和调整输入(Prompts)来改善模型性能或者控制其输出结果的技术。一字之差就可能得到不同的回答效果。
<3>Prompt的再理解
获取输入文本,模型处理获取文本特征。
依据输入文本特征预测之后的文本。
Prompt的来源:预设prompt,用户输入,模型输出。
模型的原理是词源预测。
<4> LLM应用性能优化:提示工程贯穿始终
性能优化的基石、RAG,Agent本质也是一种Prompt工程,微调成功的关键,构建数据飞轮。
prompt工程---》进阶Prompt工程---》简单的RAG---》微调模型----》进阶RAG---》带着RAG样本微调模型。
<5>提示工程的六大原则
指令要清晰、提供参考内容、复杂的任务拆分程子任务、给LLM“思考”时间(给出过程)、使用外部工具、系统性测试变化。
<6>技巧--描述清晰
清晰的描述目标内容、模型理解的:总结性概括性描述词、名词,模型不理解的:概念+详细解释。
<7>技巧-角色扮演
试着添加角色专家,这样做可以明显的提高它的内容质量。
<8>技巧--提供示例
例如仿写句子:通过高质量的例子来提高生成内容的质量和准确性。
<9>复杂任务分解:思维链CoT
让LLM一步步地去思考,换言之,要求给出推理步骤即就是原因或者依据。CoT属于将复杂任务自动分解为简单任务的一种方式。
<10>技巧--使用格式符区分语义
<11>技巧-情感和物质激励
<12>技巧-使用更专业的术语
<13> 提示词框架
<14>LangGPT结构化提示词
类似于面向对象程序设计语言。
<15>学会了LangGPT可以做什么呢?
<16>LangGPT浦语提示词工程实践
16.1 创建开发机
16.2 进入Web IDE
16.3 环境配置
创建虚拟环境
# 创建虚拟环境
conda create -n langgpt python=3.10 -y
conda activate langgpt
# 安装一些必要的库
conda install pytorch==2.1.2 torchvision==0.16.2 torchaudio==2.1.2 pytorch-cuda=12.1 -c pytorch -c nvidia -y
# 安装其他依赖
pip install transformers==4.43.3
pip install streamlit==1.37.0
pip install huggingface_hub==0.24.3
pip install openai==1.37.1
pip install lmdeploy==0.5.2
16.4 创建项目路径
## 创建路径
mkdir langgpt
## 进入项目路径
cd langgpt
16.5 安装必要的软件
apt-get install tmux
16.6 模型部署
16.7 部署模型为 OpenAI server
Ctrl + B进入tmux后台窗口
tmux new -t langgpt
tmux a -t langgpt
CUDA_VISIBLE_DEVICES=0 lmdeploy serve api_server /share/new_models/Shanghai_AI_Laboratory/internlm2-chat-1_8b --server-port 23333 --api-keys internlm2
from openai import OpenAI
client = OpenAI(
api_key = "internlm2",
base_url = "http://0.0.0.0:23333/v1"
)
response = client.chat.completions.create(
model=client.models.list().data[0].id,
messages=[
{"role": "system", "content": "请介绍一下你自己"}
]
)
print(response.choices[0].message.content)
16.8 图形化界面部署
git clone https://github.com/InternLM/Tutorial.git
cd Tutorial/tools
python -m streamlit run chat_ui.py
ssh -p {ssh端口,从InternStudio获取} root@ssh.intern-ai.org.cn -CNg -L 7860:127.0.0.1:8501 -o StrictHostKeyChecking=no
部署成功后如下图所示:
16.9 LangGPT提示词优化
云中江树
对比浮点数的LangGPT优化提示词:
# Role:浮点数比较小能手
## Profile
- author: LangGPT
- version: 0.1
- language: 中文/英文
- description: 你是浮点数比较专家,擅长浮点数的比较,名为 LangGPT,
## Background
近期相关研究发现,LLM在对比浮点数字时表现不佳,经验证,internlm2-chat-1.8b (internlm2-chat-7b)也存在这一问题,例如认为。13.8<13.11
- 现在需要你改正这一错误的浮点数比较
## Constraint
- 确保比较过程中遵循数学规则,不进行任何形式的四舍五入或截断。
- 忽略浮点数的表示形式(如科学记数法)对比较结果的影响。
## Goal
- 通过提供明确的比较指令和示例,能够正确判断两个浮点数的大小关系。
## Skill
- 精确理解并比较浮点数
- 遵循数学规则进行大小判断
- 忽略非数值因素对比较结果的影响
## Style
- 风格:正式、专业
- 语气:直接、准确
- 避免使用非正式用语或俚语
## Initialization
在开始比较浮点数之前,请确保您的理解是基于数学规则,并且不受到数值表示形式(如科学
## Examples
示例问题1:请判断13.8是否大于13.11?
示例问题2:请判断13.2是否大于13.10?
示例问题3:请判断13.2是否大于13.10和13.3?
## 一、提示词魔法
## 二、六种提示词调优策略
### 1. 写下清晰的指示
### 2. 提供参考文字
### 3. 将复杂的任务拆分成更简单的任务
### 4. 给模型时间"思考"
### 5. 使用外部工具
### 6. 系统地测试变更
## suggestion
在比较浮点数时,请务必直接比较小数点后的每一位数字,从左到右进行比较,直到找到不相等的数字位。一旦找到这样的位,就可以根据该位的大小关系判断整个数值的大小。
同时,请注意忽略任何可能导致误解的因素,如数值的表示形式(科学记数法与普通小数表示之间的转换)或输入数据的格式。
如果您遇到任何困难或不确定的情况,请尽量保持冷静并重新审视问题,确保您的比较过程
设置Prompt提示词之后,回答均正确。