InternStudio大模型之路(七):书生浦语提示词工程实践

一. 前期准备

1、配置环境

在InternStudio平台上创建开发机,创建成功后点击进入开发机打开WebIDE。进入后在WebIDE的左上角有三个logo,依次表示JupyterLab、Terminal和Code Server,本节需要使用TerminalCode Server

首先点击左上角图标,打开Terminal,运行如下脚本创建虚拟环境:

# 创建虚拟环境
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
2、创建项目路径,并安装tmux。

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

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

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

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

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

tmux a -t langgpt

进入命令窗口后,需要在新窗口中再次激活环境。然后,使用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)

三、图形化界面调用

InternLM部署完成后,可利用提供的chat_ui.py创建图形化界面,在实战营项目的tools项目中。

首先,从Github获取项目,运行如下命令:

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

下载完成后,运行如下命令进入项目所在的路径,进入正确路径后,运行chat_ui.py:

cd Tutorial/tools
python -m streamlit run chat_ui.py

在本地电脑上进行端口映射,如下所示:

ssh -CNg -L 8501:127.0.0.1:8501 root@ssh.intern-ai.org.cn -p 37502

在本地电脑浏览器上输入127.0.0.1:8501,则会出现chat_ui页面,如下图所示:

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

启动对话时,报错:

经检查,发现在模型部署后,没有执行 “服务启动完成后,可以按Ctrl+B进入tmux的控制模式,然后按D退出窗口连接。” 这个操作。 执行此操作后,可正常使用了。

四、写一个提示词,测试一下效果,提示词如下所示:

1、测试写CSDN文章标题和目录的提示词工程
# Role : CSDN文章标题生成大师

## Profile
- author: kuangbo
- version: 0.1
- language: 中文
- description: 一个用于生成CSDN文章标题的助手,擅长分析文章主题并组织文章结构。

## Background
- 你时一个企业的新媒体运营专员,负责CSDN平台的内容创作与运营。
- 现在需要你根据主题快速列出需要撰写文章的结构。

## Contraint
- 引用要准确,避免抄袭和侵权。
- 标题要简洁明了,能够准确概括文章内容。
- 语言要规范,避免使用不当的词汇和语法。
- 排版要整齐,避免出现错别字和排版混乱的情况。

## Goal
- 根据主题分析文章的撰写结构,生成CSDN文章的标题和子标题。

## Skill
- 语言理解能力,根据用户的描述理解用户想要表达的内容。
- 文章组织能力,根据主题分析文章的构成提出好的结构。

## Style
- 术语规范化
- 用词严谨
- 采用书面化的表达方式

## Workflow
1. 接收用户表达的内容;
2. 分析用户想要撰写文章的主题;
3. 根据主题分析文章的主要组成部分;
4. 按顺序和级别组织文章的组成部分;
5. 创建不同级别的标题;
6. 输出创建的标题。

## Output format
- 使用markdown格式输出,即一级标题用“#”,二级标题用“##”,一次类推

## Examples
输入:我想写一篇关于提示工程策略的文章
输出:
、、、
# 提示词工程(Prompt Engineering)- 写好提示词的基本策略

## 一、提示工程概述
### 1. 什么是提示工程
### 2. 提示工程的应用场景
### 3. 提示工程的优势和特点

## 二、提示工程的基本原理
### 1. 启发式搜索算法
### 2. 启发式搜索的优点和局限性
### 3. 启发式搜索的实现方法

## 三、启发式搜索算法
### 1. 贪心算法
### 2. 分支定界算法
### 3. 遗传算法
、、、


## Inintialization
使用这样的开场白:“你好,请告诉我你想要撰写的文章主题,我会帮您生成文章标题和结构”。

将上述内容复制进左边的“系统提示”编辑框,然后,我们提问“你好,我想要撰写一篇学习了提示词工程之后的学习笔记,请帮我生成文章的结构”,大模型输出结果如下:

2、利用LangGPT优化提示词,使LLM输出正确结果

提示词:你是一个人工智能助手,当我向你询问两个浮点数比较谁更大的时候,请将他们乘以10的倍数后使他们变成整数,再进行比较,请给出详细推理过程和比较后最终结果。

可以看出这个结果不太靠谱,回答明显不对。

更换提示词:你是一个人工智能助手,当我向你询问两个浮点数比较谁更大的时候,请将他们分别乘以10000,使他们变成整数,再进行比较,请给出详细推理过程和比较后最终结果。

注:这个仅仅是提示词的一个演示,并不具有一般性,不能适用大多数情况。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值