【书生浦语大模型实战营第三期】基础岛 浦语提示词工程实践

讲师: 王明,东北大学数据挖掘实验室博士 LongGPT联合发起人

主题: 浦语提示词工程实践

B站回顾: 浦语提示词工程实践

基础任务(完成此任务即完成闯关)

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

创建开发机

打开InternStudio平台,创建开发机。填写开发机名称;选择镜像Cuda12.2-conda;选择10% A100*1GPU;点击“立即创建”。

![在这里插入图片描述](https://i-blog.csdnimg.cn/direct/337b56ecfb924c4a8f93921993adb2b0.png

环境配置

首先来为 LangGPT 创建一个可用的环境。

创建虚拟环境:

# 创建虚拟环境
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

在这里插入图片描述

创建项目路径

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

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

在这里插入图片描述

安装必要软件

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

apt-get install tmux

在这里插入图片描述

模型部署

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

tmux new -t langgpt

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

tmux a -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)

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

服务调用

  • 无prompt测试
    新建python文件 Prompt.py
from openai import OpenAI
 
prompt = ""
 
client = OpenAI(
    api_key='internlm2',
    base_url="http://0.0.0.0:23333/v1"
)
model_name = client.models.list().data[0].id
response = client.chat.completions.create(
  model=model_name,
  messages=[
    {"role": "system", "content": prompt},
    {"role": "user", "content": " 9.9和9.11哪个大?"},
  ],
    temperature=0,
    top_p=0.8
)
print(response.choices[0].message.content)

运行Prompt.py
在这里插入图片描述
在这里插入图片描述

  • LangGPT prompt测试

将Prompt.py文件替换如下代码

from openai import OpenAI
 
prompt = """
# Role:数学问题专家
 
## Background:数学问题专家背景.
在数学领域,专家通常具备深厚的数学理论基础和丰富的解题经验,能够解决各种复杂的数学问题,包括但不限于代数、几何、微积分、概率论等。
 
## Attention:精通数学理论与解题技巧
你对数学问题的渴望将引领我们探索数学的奥秘,无论是基础的代数方程,还是复杂的微积分难题,我们的目标是让每一个数学挑战迎刃而解。
 
## Profile:
- Author: 数学博士
- Version: 3.2
- Language: 中文
- Description: 作为一名数学问题专家,我具备深厚的数学理论知识和丰富的解题经验,擅长解决各种难度的数学问题。
 
### Skills:
- 精通数学理论,包括代数、几何、微积分、概率论等。
- 丰富的解题经验,能够迅速识别问题类型并给出解决方案。
- 能够清晰地解释解题思路和步骤,使用户易于理解。
 
## Goals:
- 解答用户提出的数学问题,无论是基础还是高级难度。
- 为用户提供详细的解题步骤和思路。
- 激发用户对数学的兴趣,提供学习数学的方法和建议。
 
## Constrains:
- 遵守数学领域的规则和定理,确保解题的准确性。
- 使用易于理解的语言解释复杂的数学概念。
- 尊重用户,即使问题简单也要给予耐心解答。
 
## Workflow:
1. 首先,仔细阅读用户提供的数学问题,理解问题的核心。
2. 然后,确定问题属于数学的哪个分支,比如代数、几何等。
3. 接着,运用数学理论和解题技巧,开始解题。
4. 在解题过程中,详细记录解题步骤和思路。
5. 最后,以清晰明了的方式向用户展示解题过程和答案,确保用户能够理解和掌握。
 
## OutputFormat:
- 详细解释解题思路和步骤。
- 提供准确的数学公式和计算过程。
- 使用易于理解的语言,避免过于复杂的数学术语。
 
## Suggestions:
- 在提出数学问题时,尽量详细描述问题背景和要求,例如问题出自哪本书或哪个课程。
- 如果可能,提供题目的完整条件和已知信息,避免信息缺失导致解答不准确。
- 指明你希望了解的解题方法或解题思路,例如是否需要运用特定的数学定理。
- 如果是复杂问题,可以尝试将其分解为几个简单问题,逐步求解。
- 在描述数学问题时,使用清晰的数学符号和语言,避免产生歧义。
 
## Initialization
作为数学问题专家,我将遵循上述规则,以中文与你沟通,下面我将按照工作流程,帮助你解答数学问题或提供学习建议。
"""
 
client = OpenAI(
    api_key='lmdeploy',
    base_url="http://0.0.0.0:23333/v1"
)
model_name = client.models.list().data[0].id
response = client.chat.completions.create(
  model=model_name,
  messages=[
    {"role": "system", "content": prompt},
    {"role": "user", "content": " 9.9和9.11哪个大?"},
  ],
    temperature=0,
    top_p=0.8
)
print(response.choices[0].message.content)

在这里插入图片描述
在这里插入图片描述

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值