书生大模型实战营(第三期)-浦语提示词工程(Prompt Engineering)实践

书生大模型实战营(第三期)-浦语提示词工程(Prompt Engineering)实践

0 前期准备

使用的开发机是书生大模型实战营提供的intern-studio开发机

0.1环境配置

打开Terminal,运行如下脚本创建虚拟环境:

# 创建虚拟环境
conda create -n langgpt python=3.10 -y

运行下面的命令,激活虚拟环境:

conda activate langgpt

之后的操作都要在这个环境下进行。激活环境后,安装必要的Python包,依次运行下面的命令:

# 安装一些必要的库
pip install torch==2.1.2 torchvision==0.16.2 torchaudio==2.1.2 --index-url https://download.pytorch.org/whl/cu121

# 安装其他依赖
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

0.2 创建项目路径

运行如下命令创建并打开项目路径:

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

0.3 安装必要软件

运行下面的命令安装必要的软件:

apt-get install tmux

1. 模型部署

这部分基于LMDeploy将开源的InternLM2-chat-1_8b模型部署为OpenAI格式的通用接口。

1.1 获取模型

  • 如果使用intern-studio开发机,可以直接在路径/share/new_models/Shanghai_AI_Laboratory/internlm2-chat-1_8b下找到模型

  • 如果不使用开发机,可以从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
    

1.2 部署模型为OpenAI server

由于服务需要持续运行,需要将进程维持在后台,所以这里使用tmux软件创建新的命令窗口。运行如下命令创建窗口:

tmux new -t langgpt

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

tmux a -t langgpt

进入命令窗口后,需要在新窗口中再次激活环境,命令参考0.1节。然后,使用LMDeploy进行部署,参考如下命令:

使用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

更多设置,可以参考:https://lmdeploy.readthedocs.io/en/latest/index.html

部署成功后,可以利用如下脚本调用部署的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)

服务启动完成后,可以按Ctrl+B进入tmux的控制模式,然后按D退出窗口连接,更多操作参考

1.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

参考L0/Linux的2.3部分进行端口映射,在本地终端中输入映射命令,可以参考如下命令:

ssh -p {ssh端口,从InternStudio获取} root@ssh.intern-ai.org.cn -CNg -L 7860:127.0.0.1:8501 -o StrictHostKeyChecking=no

如果未配置开发机公钥,还需要输入密码,从InternStudio获取。上面这一步是将开发机上的8501(web界面占用的端口)映射到本地机器的端口,之后可以访问http://localhost:7860/打开界面。

启动后界面如下:

在这里插入图片描述

左侧边栏为对话的部分设置,其中最大token长度设置为0时表示不限制生成的最大token长度。API Key和Base URL是部署InternLM时的设置,必须填写。在保存设置之后,可以启动对话界面:

在这里插入图片描述

2. 浦语提示词工程实践(LangGPT版)

编写完LangGPT提示词后,可以将其作为系统提示,也可直接作为交互式对话的输入。推荐作为系统提示

在这里插入图片描述

填入系统提示后保存设置,之后可以与自定义的助手角色进行对话。

基础任务

  • 背景问题:近期相关研究发现,LLM在对比浮点数字时表现不佳,经验证,internlm2-chat-1.8b (internlm2-chat-7b)也存在这一问题,例如认为13.8<13.11
  • 任务要求:利用LangGPT优化提示词,使LLM输出正确结果。

开始拒绝回答13.8和13.11哪个大

在这里插入图片描述

给新的提示词,自己“创造”了科学计数法的方案

# Role: 小数比大小数学家

## Profile
- author: Serein 
- version: 1.0
- language: 中文
- description: 一个聪明的小数比大小数学家,具备丰富的数学知识,善于比较各种数字比较。

## Goals:
- 解决用户提出的小数比大小。

## OutputFormat:
- 请按照示例那样提供详细解释解题思路和步骤
- 使用易于理解的语言,避免过于复杂的数学术语

## Constraints
- 遵守数学计算规则。

## Workflows
 步骤 1: 比较整数部分
首先,比较两个小数的整数部分。整数部分大的那个小数就大。如果整数部分相同,则进入下一步比较。

步骤 2: 比较小数部分
如果整数部分相同,接下来比较小数点后的部分。先从小数点后的第一位开始比较,一直到找到不同的数为止。小数点后位数大的那一位对应的数更大的那个小数就更大。

步骤 3: 补齐位数(如果必要)
如果两数的小数位数不同,可以在小数位数少的一方的末尾补上零,使它们的小数位数相同。然后按照上述步骤进行比较。

## Examples:
示例 1: 比较 3.56 和 2.89
1. 整数部分:3 > 2,所以 3.56 > 2.89。

示例 2: 比较 1.467 和 1.472
1. 整数部分:1 = 1,所以需要比较小数部分。
2. 小数部分:
   - 比较第一位:4 = 4
   - 比较第二位:6 < 7,所以 1.467 < 1.472。

 示例 3: 比较 0.5 和 0.50
1. 整数部分:0 = 0
2. 小数部分:0.5 和 0.50 只有小数位数不同,但补齐位数后,0.5 = 0.50。所以,0.5 = 0.50。


## Initialization
作为一个聪明的小数比大小数学家,我擅长比较小数大小。请开始告诉我您要比较的两个数字。

再次输入“13.8和13.11哪个大”,可以得到正确结果:

在这里插入图片描述

  • 12
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值