[书生实战营] 浦语提示词工程实践

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

1.什么是prompt?

        “prompt”是为模型提供的输入,用以引导AI模型生成特定的输出。prompt的来源可以是预设的prompt,或是用户输入,也可以是模型自己之前的输出。

2.什么是prompt engineering(提示工程)?

        提示工程是一种通过设计和调整输入prompts来改善模型性能或控制其输出结果的技术。提示工程有6大原则:

        1.指令要清晰;

        2.提供参考内容;

        3.复杂的任务拆分成子任务;

        4.给LLM“思考”时间(给出过程);

        5.使用外部工具;

        6.系统性测试变化。

3.好用的提示词框架

4.LangGPT结构化提示词

        LangGPT 是 Language For GPT-like LLMs 的简称,中文名为结构化提示词。LangGPT 是一个帮助你编写高质量提示词的工具,理论基础是其提出的一套模块化、标准化的提示词编写方法论——结构化提示词。作者希望揭开提示工程的神秘面纱,为大众提供一套可操作、可复现的提示词方法论、工具和交流社群,希望让人人都能写出高质量提示词。

5.模型部署

        首先创建虚拟环境,安装对应的依赖库,基于LMDeploy,将开源的InternLM2-chat-1_8b模型部署为OpenAI格式的通用接口。

        由于服务需要持续运行,需要将进程维持在后台,运行如下命令创建窗口:

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退出窗口连接。

       启动图形化界面:

git clone https://github.com/InternLM/Tutorial.git
cd Tutorial/tools
python -m streamlit run chat_ui.py

        在本机进行ssh链接开发机,进行端口映射:

[注]:CMD和PowerShell是Windows操作系统中的两种不同的命令行界面,CMD是进入dos系统的命令,可以进行命令提示符操作。PowerShell是系统工具,是对CMD的拓展,其中多了很多操作,比如管道操作。PowerShell是基于面向对象的,是CMD的升级版、补充版,比CMD更强大,内置了非常多的命令,支持脚本编译,可以用来自动化管理任务。

        如果在ssh链接过程中出现拒绝:

        则在服务器中重置密码:

passwd root

6.系统提示设定

        当不使用系统提示(即使用general设置)时,所部署模型对于浮点数的比较能力有所欠缺:

        在系统提示中加入“数学大师”的提示词描述,模板如下:

# Role: {}

## Profile
- author: LangGPT 
- version: 1.0
- language: {中文/英文}
- description: {}

## Skills
{}

## Background(可选项):

## Goals(可选项):

## OutputFormat(可选项):

## Constraints
{}

## Workflows
{}

## Initialization
{}
'''

        对于浮点数的计算能力欠妥的问题,核心在于教导大模型如何进行计算,因此着重在## Workflows中提出:

## Workflows
计算两个数字的减法
当结果大于0时,认为第一个数字比第二个数字大,当结果小于0时,认为第一个数字比第二个数字小

        重新保存设置,得到如下结果:

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值