LangGPT结构化提示词编写实践

时间:2024-10-08 18:34:27


一:概述

        LangGPT结构化提示词是进行文生图的必备知识库。Prompt(提示)是一个多义词,在不同的领域和语境中具有不同的含义和用法。

二:具体说明

  <1>Prompt介绍

                1.1、基本含义

  • 在英语中,Prompt通常指“提示”或“提示语”,用于引导或鼓励某人采取行动或完成某项任务。
  • 在汉语中,Prompt的含义与英语类似,但更多时候被理解为“促使”或“导致”某事发生的因素,类似于英语中的cause或reason。

                1.2、计算机领域

在计算机领域,Prompt通常指代计算机或用户之间的交互界面,用于提示用户输入命令或信息。这是Prompt最直观和常见的用法之一。具体来说,Prompt在以下几个方面发挥着重要作用:

  1. 命令行界面:在命令行界面中,Prompt是用户输入命令的地方,它通常以一个特定的符号(如">"、"$"等)开头,提示用户输入下一个命令。
  2. 用户交互:在图形用户界面(GUI)中,Prompt可能以文本框、按钮提示等形式出现,用于引导用户输入必要的信息或执行特定的操作。
  3. 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>技巧--使用格式符区分语义

                

LangGPT结构化提示词编写实践_外部工具

<11>技巧-情感和物质激励

                

LangGPT结构化提示词编写实践_浮点数_02

<12>技巧-使用更专业的术语

LangGPT结构化提示词编写实践_外部工具_03

        <13> 提示词框架     

                

LangGPT结构化提示词编写实践_外部工具_04

LangGPT结构化提示词编写实践_python_05

<14>LangGPT结构化提示词

                

LangGPT结构化提示词编写实践_浮点数_06

        

LangGPT结构化提示词编写实践_外部工具_07

LangGPT结构化提示词编写实践_外部工具_08

        类似于面向对象程序设计语言。

LangGPT结构化提示词编写实践_浮点数_09

LangGPT结构化提示词编写实践_prompt_10

    <15>学会了LangGPT可以做什么呢?

                

LangGPT结构化提示词编写实践_外部工具_11

LangGPT结构化提示词编写实践_prompt_12

           <16>LangGPT浦语提示词工程实践

                        16.1 创建开发机

LangGPT结构化提示词编写实践_外部工具_13

                         16.2 进入Web IDE

LangGPT结构化提示词编写实践_prompt_14

                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

LangGPT结构化提示词编写实践_浮点数_15

        16.4 创建项目路径

## 创建路径
mkdir langgpt
## 进入项目路径
cd langgpt

LangGPT结构化提示词编写实践_浮点数_16

        16.5 安装必要的软件

apt-get install tmux

        16.6 模型部署

LangGPT结构化提示词编写实践_prompt_17

       16.7  部署模型为 OpenAI server

LangGPT结构化提示词编写实践_python_18

        Ctrl + B进入tmux后台窗口

LangGPT结构化提示词编写实践_外部工具_19

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)

LangGPT结构化提示词编写实践_python_20

LangGPT结构化提示词编写实践_外部工具_21

        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

LangGPT结构化提示词编写实践_prompt_22

LangGPT结构化提示词编写实践_浮点数_23

部署成功后如下图所示:

LangGPT结构化提示词编写实践_python_24

LangGPT结构化提示词编写实践_prompt_25

                       16.9 LangGPT提示词优化

                                云中江树

LangGPT结构化提示词编写实践_外部工具_26

对比浮点数的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提示词之后,回答均正确。

LangGPT结构化提示词编写实践_外部工具_27