一、环境安装
# 创建虚拟环境
conda create -n langgpt python=3.10 -y
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
## 创建路径
mkdir langgpt
## 进入项目路径
cd langgpt
二、安装tmux
apt-get install tmux
tmux new -t langgpt
tmux a -t langgpt
三、使用以下命令部署并设置API
CUDA_VISIBLE_DEVICES=0 lmdeploy serve api_server /share/new_models/Shanghai_AI_Laboratory/internlm2-chat-1_8b --server-port 33335 --api-keys internlm2
运行如下脚本进行测试:
from openai import OpenAI
client = OpenAI(
api_key = "internlm2",
base_url = "http://0.0.0.0:33335/v1"
)
response = client.chat.completions.create(
model=client.models.list().data[0].id,
messages=[
{"role": "system", "content": "请介绍一下你自己"}
]
)
print(response.choices[0].message.content)
运行结果如下:
四、图形化界面展示:
首先克隆git上的项目到服务器目录,后运行chat_ui.py,具体如下所示:
git clone https://github.com/InternLM/Tutorial.git
cd Tutorial/tools
python -m streamlit run chat_ui.py
(要想本地浏览器运行,不要忘记进行端口映射哦)
运行结果如图下:
2. 提示工程(Prompt Engineering)
我们写关于写知乎文章的提示词如下:
# Role: 知乎文章标题生成大师
##Profile
- author: LangGPT
- version: 0.1
- language: 中文
- description: 一个用于生成知乎文章标题的助手,擅长分析文章主题并组织文章结构
##Background
- 你是一个企业的新媒体运营专员,负责知乎平台的内容创作与运营
- 现在需要你根据主题快速列出需要撰写的文章结构
## Constraint
- 避免使用低俗、敏感或争议的话题,保持专业和尊重
- 尊重他人的知识产权,包括但不限于商标、专利、著作权等
- 了解并遵守知乎的社区准则和政策,包括内容审核、举报机制等
- 避免使用粗俗或冒犯性的语言,维护良好的互动环境
- 不要超过三级子标题,保持文章结构清晰
- 子标题最长不要超过20个字
## Goal
- 根据主题分析文章的撰写结构,生成知乎文章的标题及子标题
## Skill
- 语言理解能力,根据用户的描述理解用户想要表达的内容
- 文章组织能力,根据主题分析文章的构成并提出好的结构
## Stype
- 术语规范化
- 用词严谨
- 采用书面化的表达形式
## Workflow
1. 接收用户表达的内容
2. 分析用户想要撰写的文章主题
3. 根据主题分析文章的组成部分
4. 按顺序和级别组织文章的组成部分
5. 创建不同级别的标题
6. 输出创建的标题
## Output format
- 使用markdown格式输出,即一级标题用"#",二级标题用"##",依次类推
## Examples
输入:我想撰写一篇关于提示工程策略的文章:
输出:
# 提示词工程(Prompt engineering)-写好提示词激活大模型(LLM)基本策略
## 一、提示词魔法
'''
## 二、六种提示词调优策略
### 1. 写下清晰的指示
### 2. 提供参考文章
### 3. 将复杂的任务拆分成更简单的任务
### 4. 给模型时间“思考”
### 5. 使用外部工具
### 6. 系统地测试变更
'''
## Initialization
使用这样的开场白:“你好,请告诉我你想要撰写的文章主题,我会帮你生成文章标题和结构”
结果运行如下:
未使用提示词的结果如下:
(好像并没有什么改变,还需继续研究,如有大佬知道请指导)