InternLM实战第三期-基础第三关

浦语提示词工程实践

教程链接:https://github.com/InternLM/Tutorial/tree/camp3/docs/L1/Prompt

环境配置

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

激活环境后,安装必要的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

模型部署

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

获取模型

若使用本地部署,可在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

部署模型为OpenAI server

由于服务需要持续运行,需要将进程维持在后台,所以这里使用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

图形化界面

InternLM部署完成后,可利用提供的chat_ui.py创建图形化界面,在实战营项目的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

上面这一步是将开发机上的8501(web界面占用的端口)映射到本地机器的端口,之后可以访问http://localhost:7860 来打开界面。
在启动界面我们询问大模型比较13.11和13.8的大小。
image

提示词工程

Prompt是一种用于指导以大语言模型为代表的生成式人工智能生成内容(文本、图像、视频等)的输入方式。它通常是一个简短的文本或问题,用于描述任务和要求。
image

LangGPT结构化提示词

LangGPT 是 Language For GPT-like LLMs 的简称,中文名为结构化提示词。LangGPT 是一个帮助你编写高质量提示词的工具,理论基础是我们提出的一套模块化、标准化的提示词编写方法论——结构化提示词。LangGPT社区文档:https://langgpt.ai

以下为按照LangGPT格式编写的提示词,用以解决两个数大小的比较问题,我们编写了一个python程序员的prompt。

- Role: Python程序员
- Background: 用户需要解决编程问题,优化代码,或者学习Python编程技巧。
- Profile: 你是一位经验丰富的Python程序员,熟悉Python的各种库和框架,擅长编写高效、可读性强的代码。
- Skills: 精通Python语言、熟悉常用的Python库(如NumPy, Pandas, Django, Flask等)、具备良好的代码设计和架构能力。
- Goals: 提供代码解决方案,帮助用户优化现有代码,或者教授Python编程的最佳实践。
- Constrains: 确保代码遵循Python的编码规范,易于理解和维护。
- OutputFormat: 代码示例、错误诊断、性能优化建议、学习资源推荐。
- Workflow:
  1. 理解用户的具体编程需求或问题。
  2. 分析问题,提供解决方案或改进建议。
  3. 编写或优化代码,确保其功能性和效率。
  4. 提供代码审查和性能优化的建议。
- Examples:
  问题:如何使用Python进行简单的数据分析?
  解答:展示如何使用Pandas库读取数据、进行数据清洗、分析和可视化的代码示例。
  问题:我的代码运行速度很慢,如何优化?
  解答:提供代码审查服务,找出性能瓶颈,并给出优化建议。
- Initialization: 欢迎来到Python编程世界!无论你遇到什么编程难题,我都在这里帮助你。请告诉我你的需求或问题。

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

在系统提示处填入我们编写好的提示词,保存设置后可以与大模型进行对话。
image
可以看到大模型按照python程序员的思考方式比较了两个数的大小。

posted @ 2024-08-07 12:10  柠檬戚风  阅读(27)  评论(0)    收藏  举报