1. 环境准备
1.环境配置
创建一个新环境
安装必要依赖:
conda activate langgpt
在这里插入代码片# 安装一些必要的库
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.创建项目路径
## 创建路径
mkdir langgpt
## 进入项目路径
cd langgpt
3.安装必要软件
apt-get install tmux
2. 模型部署
基于LMDeploy将开源的InternLM2-chat-1_8b模型部署为OpenAI格式的通用接口。
2.1 获取模型
由于本项目使用intern-studio开发机,可以直接在路径/share/new_models/Shanghai_AI_Laboratory/internlm2-chat-1_8b下找到模型
2.2 部署模型为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
部署测试:
2.3 图形化界面调用
基于此仓库https://github.com/InternLM/Tutorial.git
cd Tutorial/tools
python -m streamlit run chat_ui.py
浏览器界面:
3.提示工程(Prompt Engineering)
3.1 什么是Prompt
Prompt是一种用于指导以大语言模型为代表的生成式人工智能生成内容(文本、图像、视频等)的输入方式。它通常是一个简短的文本或问题,用于描述任务和要求。
Prompt可以包含一些特定的关键词或短语,用于引导模型生成符合特定主题或风格的内容。
Prompt还可以包含一些特定的指令或要求,用于控制生成文本的语气、风格、长度等方面。
总之,Prompt是一种灵活、多样化的输入方式,可以用于指导大语言模型生成各种类型的内容。
3.2 什么是提示工程
提示工程是一种通过设计和调整输入(Prompts)来改善模型性能或控制其输出结果的技术。
在模型回复的过程中,首先获取用户输入的文本,然后处理文本特征并根据输入文本特征预测之后的文本,原理为next token prediction。
提示工程是模型性能优化的基石,有以下六大基本原则:
- 指令要清晰
- 提供参考内容
- 复杂的任务拆分成子任务
- 给 LLM“思考”时间(给出过程)
- 使用外部工具
- 系统性测试变化
3.3 提示设计框架
- CRISPE,参考:
https://github.com/mattnigh/ChatGPT3-Free-Prompt-List- Capacity and Role (能力与角色):希望 ChatGPT 扮演怎样的角色。
- Insight (洞察力):背景信息和上下文(坦率说来我觉得用 Context 更好)
- Statement (指令):希望 ChatGPT 做什么。
- Personality (个性):希望 ChatGPT 以什么风格或方式回答你。
- Experiment (尝试):要求 ChatGPT 提供多个答案。
- CO-STAR,参考https://aiadvisoryboards.wordpress.com/2024/01/30/co-star-framework/
- Context (背景): 提供任务背景信息
- Objective (目标): 定义需要LLM执行的任务
- Style (风格): 指定希望LLM具备的写作风格
- Tone (语气): 设定LLM回复的情感基调
- Audience (观众): 表明回复的对象
- Response (回复): 提供回复格式