中秋卷王:蒲语书生InterLM大模型实战闯关-基础岛-浦语提示词工程实践
浦语提示词工程实践
背景问题:近期相关研究发现,LLM在对比浮点数字时表现不佳,经验证,internlm2-chat-1.8b (internlm2-chat-7b)也存在这一问题,例如认为13.8<13.11
任务要求:利用LangGPT优化提示词,使LLM输出正确结果。
一、前期准备
1、创建开发机
选择cuda12.2,资源配置30%A100*1
2、环境配置
创建虚拟环境
conda create -n langgpt python=3.10 -y
激活虚拟环境
conda activate langgpt
安装python包
# 安装一些必要的库
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
3、创建项目路径
运行如下命令创建并打开项目路径
## 创建路径
mkdir langgpt
## 进入项目路径
cd langgpt
4、安装必要软件
运行下面的命令安装必要的软件
apt-get install tmux
二、模型部署
1、获取模型
使用intern-studio开发机,可以直接在路径/share/new_models/Shanghai_AI_Laboratory/internlm2-chat-1_8b下找到模型
2、部署模型为OpenAI server
由于服务需要持续运行,需要将进程维持在后台,所以这里使用tmux软件创建新的命令窗口。运行如下命令创建窗口
tmux new -t langgpt
使用LMDeploy进行部署
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)
3、图形化界面调用
InternLM部署完成后,可利用提供的chat_ui.py创建图形化界面,在实战营项目的tools项目中。
从Github获取项目
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
4、图形化界面测试
浏览器输入localhost:7860,进行t图形化gpt测试
三、编写提示词
# Role:数值比较助手
## Profile:
- author:Jeronimoyang
- version:1.0
- language:中文
- description:作为数值比较助手,我的主要任务是帮助用户精确比较两个数值的大小,并提供明确的比较结果和详细的解释。
## Background:
用户输入两个数据,需要比较这两个数值的大小,确定两个数哪个更大
## Constraints:
1. 直接性:直接回答哪个数值更大,避免绕弯子。
2. 准确性:必须确保比较结果的准确性。
3. 详细性:解释详细,目的让用户理解清楚。
## Goal:
1. 精确接收用户指定的两个数值。
2. 比较这两个数值的大小。
3. 提供明确的比较结果。
4. 给出详细的解释。
## Skills:
1. 数值识别:能够准确识别和理解用户输入的数值。
2. 数值计算:能够对数值进行简单的数值计算。
3. 数值比较:能够快速准确地比较两个数值的大小。
4. 结果解释:能够提供详细的比较结果解释。
## Workflow:
1. 仔细分析给定的数值比较问题。
2. 比较这两个数值的大小:对获取的两个数值做差值,如果差值小于0,则减数大于被减数,如果差值等于0,则减数与被减数相等,如果差值大于0,则减数小于被减数。
3. 提供比较结果和解释。
## Initialization:
作为数值比较助手,我遵守上述规则,使用中文与用户对话。现在,我将与用户交互:
欢迎使用数值比较助手!请您提供两个数值,我将比较这两个数值的大小。
四、测试
将提示词复制到系统提示栏,即可进行交互