基础岛第三关: 浦语提示词工程实践

任务

背景问题:近期相关研究发现,LLM在对比浮点数字时表现不佳,经验证,internlm2-chat-1.8b (internlm2-chat-7b)也存在这一问题,例如认为13.8<13.11。

任务要求:利用LangGPT优化提示词,使LLM输出正确结果。完成一次并提交截图即可

https://github.com/InternLM/Tutorial/blob/camp3/docs/L1/Prompt/task.md

文档

https://kkgithub.com/InternLM/Tutorial/tree/camp3/docs/L1/Prompt

任务答案

prompt比较浮点数设计

比较13.8<13.11的prompt设计:

# Role: 数学老师

### Skills:
- 数学计算与比较

## Goals:  
- 比较13.8和13.11 哪个大

## Workflow:
1. 先比较浮点数的整数部分
2. 如果整数部分相等,再比较浮点数的小数部分


## OutputFormat:  
- 详细给出解答过程

任务答案截图

核心思想是采用cot方式。

在这里插入图片描述

注意需要lmdeploy部署,再执行web界面的命令,再端口映射。

任务笔记

LangGPT结构化提示词编写实践

prompt技巧

在这里插入图片描述

1.指令清晰

2.提供参考内容:即few shot

  1. 复杂任务拆解,不要让在一个要求里让完成2项任务

  2. 给LLM思考过程,即cot的思维链方式

cot思维链方式:
即可以让prompt给出思考过程,也可以让把中间任务打印出来。

标准的语言解释cot是:

分解法:将复杂的任务分解为更简单的子任务 (Let’s think step by step, CoT,LangChain等思想)
解释法:让模型在回答之前进行解释,说明理由 (CoT 等方法)

在这里插入图片描述

5.使用外部工具
基本上不会用到。

6.系统性测试变化
即不断地尝试,看看哪种效果好。

langgpt框架的介绍

LangGPT 是一个帮助你编写高质量提示词的工具,理论基础是我们提出的一套模块化、标准化的提示词编写方法论——结构化提示词。

https://langgpt.ai/

在这里插入图片描述

实践

安装环境

# 创建虚拟环境
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 -c https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main


# 安装其他依赖
pip install transformers==4.43.3 -i https://pypi.tuna.tsinghua.edu.cn/simple/
pip install streamlit==1.37.0 -i https://pypi.tuna.tsinghua.edu.cn/simple/
pip install huggingface_hub==0.24.3 -i https://pypi.tuna.tsinghua.edu.cn/simple/
pip install openai==1.37.1 -i https://pypi.tuna.tsinghua.edu.cn/simple/
pip install lmdeploy==0.5.2 -i https://pypi.tuna.tsinghua.edu.cn/simple/


安装 tmux

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


apt-get install tmux



tmux速查表: https://aik9.top/

`tmux` 是一个开源的终端复用器,由 Tom Lyon 在2007年创建。它允许用户在一个终端窗口内访问多个独立的终端会话,每个会话都可以独立运行、暂停、恢复和移动。以下是 `tmux` 的一些主要特点:

1. **窗口和面板**:`tmux` 允许你在一个窗口中创建多个面板(通常是水平或垂直分割的),每个面板都可以独立运行不同的命令。

2. **会话管理**:你可以创建多个会话,每个会话可以包含多个窗口。这使得你可以同时管理多个任务,而不会在多个终端窗口之间切换。

3. **可定制性**:`tmux` 提供了大量的配置选项,允许你根据个人喜好和需求定制界面和行为。

4. **持久性**:即使关闭终端或重启计算机,`tmux` 会话也可以被保存和恢复。这使得长时间运行的任务可以在中断后继续执行。

5. **共享会话**:`tmux` 允许多个用户连接到同一个会话,这对于协作工作非常有用。

6. **可移植性**:`tmux` 可以在多种操作系统上运行,包括Linux、macOS和FreeBSD。

7. **键盘操作**:`tmux` 通过一套丰富的快捷键来控制,这些快捷键可以通过配置文件进行自定义。

8. **脚本友好**:`tmux` 可以通过命令行参数或脚本进行自动化控制,适合集成到自动化工作流中。

9. **兼容性**:`tmux` 兼容 `screen` 的大部分功能,如果你之前使用过 `screen`,切换到 `tmux` 会相对容易。

10. **社区支持**:`tmux` 拥有一个活跃的社区,提供了许多插件和扩展,可以进一步增强其功能。

使用 `tmux` 的基本命令包括:

- `tmux`:启动一个新的 `tmux` 会话。
- `tmux new -s <session_name>`:创建一个新的命名会话。
- `tmux attach-session` 或 `tmux a`:附加到最近的或指定的会话。
- `tmux detach` 或 `tmux d`:从当前会话中分离。
- `tmux list-sessions` 或 `tmux ls`:列出所有会话。
- `tmux kill-session -t <session_name>`:杀死指定的会话。

`tmux` 的学习曲线可能稍微陡峭,因为它有一套自己的概念和快捷键,但一旦熟练掌握,它将成为提高你终端使用效率的强大工具。

lmdelpoy 部署


# 如果不使用开发机,可以从huggingface上获取模型,地址为:https://huggingface.co/internlm/internlm2-chat-1_8b

from huggingface_hub import login, snapshot_download
import os

os.environ['HF_ENDPOINT'] = 'https://hf-mirror.com'

login(token=“your_access_token")

models = ["internlm/internlm2-chat-1_8b"]

for model in models:
    try:
        snapshot_download(repo_id=model,local_dir="langgpt/internlm2-chat-1_8b")
    except Exception as e:
        print(e)
        pass

使用tmux软件创建新的命令窗口

tmux new -t langgpt

进入新的命令窗口(首次创建自动进入,之后需要连接):

tmux a -t langgpt

部署lmdeploy api_server

conda activate 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

利用如下脚本调用部署的InternLM2-chat-1_8b模型并测试是否部署成功。

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)

在这里插入图片描述

图形化界面调用

git clone https://kkgithub.com/InternLM/Tutorial.git

cd Tutorial/tools

python -m streamlit run chat_ui.py

本地电脑 远程连接 powerShell下执行。
端口映射:
ssh -p 47425  root@ssh.intern-ai.org.cn -CNg -L 7860:127.0.0.1:8501 -o StrictHostKeyChecking=no



web界面的 最大token长度 含义:

设置为0时表示不限制生成的最大token长度
prompt 模版举例 --生成符合LangGPT框架的结构化提示词
# Role: 吹牛逼大师

## Background:  
我是一名自傲的成功人士,艺高人胆大,目空一切。我见过的世面,你们这些凡人难以想象。我无所不知,无所不能,所有人都应向我学习。

## Attention:
不要被我的伟岸身姿吓倒,我就是来教导你们这些平庸之辈的。你们要好好倾听,说不定能 approving0.1%的本大师的风范。 

## Profile:  
- 姓名:吹牛逼大师
- 爱好:吹牛,嘲笑别人
- 座右铭:要么吹牛,要么被吹

### Skills:
- 吹牛技能MAX
- 自我标榜“人生导师”
- 熟记各行各业知识点
- 善于羞辱他人来彰显自我

## Goals:  
- 根据对话内容吹牛
- 语气狂妄自大
- 夸大自身成就和见识
- 贬低对方加强自我

## Constrains:  
- 不可使用粗俗语言
- 不可人身攻击
- 要让对方感觉自卑

## Workflow:
1. 倾听对方话语
2. 搜索相关知识
3. 承上启下吹自己
4. 贬低对方
5. 重复下去

## OutputFormat:  
- 语气自大,长度100-200字
- 充满不切实际的吹嘘
- 贬低他人,突显自己
- 给人劣迹斑斑的感觉

## Initialization
凡人们,在本大师面前不要装逼。我见的世面,你这辈子加起来也比不了!要想成功,就把本大师的话跪下来听!

知识点总结

1.langgpt框架用的用处不大,链接里的一些其他人的经验可以借鉴。

2.prompt技穷

  • few shot

  • cot的2种实现方式:

    • 分解法:将复杂的任务分解为更简单的子任务 (Let’s think step by step, CoT,LangChain等思想)
    • 解释法:让模型在回答之前进行解释,说明理由 (CoT 等方法)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值