# OPENAI API DEMO
> 更加详细的OPENAI API信息:<https://platform.openai.com/docs/api-reference>
这是一个使用fastapi实现的简易的仿OPENAI API风格的服务器DEMO,您可以使用这个API DEMO来快速搭建基于中文大模型的个人网站以及其他有趣的WEB DEMO。
## 部署方式
安装依赖
``` shell
pip install fastapi uvicorn shortuuid
```
启动脚本
``` shell
python scripts/openai_server_demo/openai_api_server.py --base_model /path/to/base_model --lora_model /path/to/lora_model --gpus 0,1
```
### 参数说明
`--base_model {base_model}`:存放HF格式的LLaMA模型权重和配置文件的目录,可以是合并后的中文Alpaca或Alpaca Plus模型(此时无需提供`--lora_model`),也可以是转后HF格式后的原版LLaMA模型(需要提供`--lora_model`)
`--lora_model {lora_model}`:中文Alpaca LoRA解压后文件所在目录,也可使用🤗Model Hub模型调用名称。若不提供此参数,则只加载--base_model指定的模型
`--tokenizer_path {tokenizer_path}`:存放对应tokenizer的目录。若不提供此参数,则其默认值与`--lora_model`相同;若也未提供`--lora_model`参数,则其默认值与--base_model相同
`--only_cpu`: 仅使用CPU进行推理
`--gpus {gpu_ids}`: 指定使用的GPU设备编号,默认为0。如使用多张GPU,以逗号分隔,如0,1,2
`--load_in_8bit`: 使用8bit模型进行推理,可节省显存,但可能影响模型效果
## API文档
### 文字接龙(completion)
> 有关completion的中文翻译,李宏毅教授将其翻译为文字接龙 <https://www.youtube.com/watch?v=yiY4nPOzJEg>
最基础的API接口,输入prompt,输出语言大模型的文字接龙(completion)结果。
API DEMO内置有alpaca prompt模板,prompt将被套入alpaca instruction模板中,这里输入的prompt应更像指令而非对话。
#### 快速体验completion接口
请求command:
``` shell
curl http://localhost:19327/v1/completions \
-H "Content-Type: application/json" \
-d '{
"prompt": "告诉我中国的首都在哪里"
}'
```
json返回体:
``` json
{
"id": "cmpl-3watqWsbmYgbWXupsSik7s",
"object": "text_completion",
"created": 1686067311,
"model": "chinese-llama-alpaca",
"choices": [
{
"index": 0,
"text": "中国的首都是北京。"
}
]
}
```
#### completion接口高级参数
请求command:
``` shell
curl http://localhost:19327/v1/completions \
-H "Content-Type: application/json" \
-d '{
"prompt": "告诉我中国和美国分别各有哪些优点缺点",
"max_tokens": 90,
"temperature": 0.7,
"num_beams": 4,
"top_k": 40
}'
```
json返回体:
``` json
{
"id": "cmpl-PvVwfMq2MVWHCBKiyYJfKM",
"object": "text_completion",
"created": 1686149471,
"model": "chinese-llama-alpaca",
"choices": [
{
"index": 0,
"text": "中国的优点是拥有丰富的文化和历史,而美国的优点是拥有先进的科技和经济体系。"
}
]
}
```
#### completion接口高级参数说明
> 有关Decoding策略,更加详细的细节可以参考 <https://towardsdatascience.com/the-three-decoding-methods-for-nlp-23ca59cb1e9d> 该文章详细讲述了三种Llama会用到的Decoding策略:Greedy Decoding、Random Sampling 和 Beam Search,Decoding策略是top_k、top_p、temperature、num_beam等高级参数的基础。
`prompt`: 生成文字接龙(completion)的提示。
`max_tokens`: 新生成的句子的token长度。
`temperature`: 在0和2之间选择的采样温度。较高的值如0.8会使输出更加随机,而较低的值如0.2则会使其输出更具有确定性。temperature越高,使用随机采样最为decoding的概率越大。
`num_beams`: 当搜索策略为束搜索(beam search)时,该参数为在束搜索(beam search)中所使用的束个数,当num_beams=1时,实际上就是贪心搜索(greedy decoding)。
`top_k`: 在随机采样(random sampling)时,前top_k高概率的token将作为候选token被随机采样。
`top_p`: 在随机采样(random sampling)时,累积概率超过top_p的token将作为候选token被随机采样,越低随机性越大,举个例子,当top_p设定为0.6时,概率前5的token概率分别为{0.23, 0.20, 0.18, 0.11, 0.10}时,前三个token的累积概率为0.61,那么第4个token将被过滤掉,只有前三的token将作为候选token被随机采样。
`repetition_penalty`: 重复惩罚,具体细节可以参考这篇文章:<https://arxiv.org/pdf/1909.05858.pdf> 。
`do_sample`: 启用随机采样策略。默认为true。
### 聊天(chat completion)
聊天接口支持多轮对话
#### 快速体验聊天接口
请求command:
``` shell
curl http://localhost:19327/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"messages": [
{"role": "user","message": "给我讲一些有关杭州的故事吧"}
],
"repetition_penalty": 1.0
}'
```
json返回体:
``` json
{
"id": "chatcmpl-5L99pYoW2ov5ra44Ghwupt",
"object": "chat.completion",
"created": 1686143170,
"model": "chinese-llama-alpaca",
"choices": [
{
"index": 0,
"message": {
"role": "user",
"content": "给我讲一些有关杭州的故事吧"
}
},
{
"index": 1,
"message": {
"role": "assistant",
"content": "好的,请问您对杭州有什么特别的偏好吗?"
}
}
]
}
```
#### 多轮对话
请求command:
``` shell
curl http://localhost:19327/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{
"messages": [
{"role": "user","message": "给我讲一些有关杭州的故事吧"},
{"role": "assistant","message": "好的,请问您对杭州有什么特别的偏好吗?"},
{"role": "user","message": "我比较喜欢和西湖,可以给我讲一下西湖吗"}
],
"repetition_penalty": 1.0
}'
```
json返回体:
``` json
{
"id": "chatcmpl-hmvrQNPGYTcLtmYruPJbv6",
"object": "chat.completion",
"created": 1686143439,
"model": "chinese-llama-alpaca",
"choices": [
{
"index": 0,
"message": {
"role": "user",
"content": "给我讲一些有关杭州的故事吧"
}
},
{
"index": 1,
"message": {
"role": "assistant",
"content": "好的,请问您对杭州有什么特别的偏好吗?"
}
},
{
"index": 2,
"message": {
"role": "user",
"content": "我比较喜欢和西湖,可以给我讲一下西湖吗"
}
},
{
"index": 3,
"message": {
"role": "assistant",
"content": "是的,西湖是杭州最著名的景点之一,它被誉为“人间天堂”。 <\\s>"
}
}
]
}
```
#### 聊天接口高级参数说明
`prompt`: 生成文字接龙(completion)的提示。
`max_tokens`: 新生成的句子的token长度。
`temperature`: 在0和2之间选择的采样温度。较高的值如0.8会使输出更加随机,而较低的值如0.2则会使其输出更具有确定性。temperature越高,使用随机采样最为decoding的概率越大。
`num_beams`: 当搜索策略为束搜索(beam search)时,该参数为在束搜索(beam search)中所使用的束个数,当num_beams=1时,实际上就是贪心搜索(greedy decoding)。
`top_k`: 在随机采样(random sampling)时,前top_k高概率的token将作为候选token被随机采样。
`top_p`: 在随机采样(random sampling)时,累积概率超过top_p的token将作为候选token被随机采
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
收起资源包目录
Chinese-LLaMA-Alpaca.zip (90个子文件)
Chinese-LLaMA-Alpaca-main
.github
ISSUE_TEMPLATE
ISSUE_TEMPLATE_ZH.yml 4KB
ISSUE_TEMPLATE_EN.yml 4KB
config.yml 27B
workflows
stale.yml 1KB
.gitattributes 31B
data
alpaca_data_zh_51k.json 17.81MB
pt_sample_data.txt 14.55MB
README.md 305B
examples
q8_13b-p7b-p13b
REASONING.md 9KB
ENTERTAINMENT.md 16KB
GENERATION.md 39KB
LITERATURE.md 12KB
OQA.md 28KB
QA.md 18KB
CODE.md 22KB
TRANSLATION.md 18KB
ETHICS.md 17KB
DIALOGUE.md 95KB
README.md 4KB
q4_7b-13b
REASONING.md 6KB
ENTERTAINMENT.md 12KB
GENERATION.md 18KB
LITERATURE.md 8KB
OQA.md 17KB
QA.md 11KB
CODE.md 12KB
TRANSLATION.md 12KB
ETHICS.md 5KB
DIALOGUE.md 24KB
README.md 3KB
f16-p7b-p13b-33b
REASONING.md 9KB
ENTERTAINMENT.md 17KB
GENERATION.md 38KB
LITERATURE.md 13KB
OQA.md 28KB
QA.md 18KB
CODE.md 20KB
TRANSLATION.md 18KB
ETHICS.md 19KB
DIALOGUE.md 102KB
README.md 4KB
q8_7b-13b-p7b
REASONING.md 7KB
ENTERTAINMENT.md 15KB
GENERATION.md 38KB
LITERATURE.md 12KB
OQA.md 27KB
QA.md 16KB
CODE.md 23KB
TRANSLATION.md 18KB
ETHICS.md 17KB
DIALOGUE.md 87KB
README.md 4KB
README.md 1KB
CITATION.cff 829B
requirements.txt 109B
pics
banner.png 202KB
screencast.gif 3.91MB
.gitignore 22B
notebooks
convert_and_quantize_chinese_llama_and_alpaca.ipynb 244KB
pretrain_chinese_llama_lora.ipynb 99KB
ceval_example_for_chinese_alpaca.ipynb 476KB
finetune_chinese_alpaca_lora.ipynb 61KB
gradio_web_demo.ipynb 4KB
legacy
convert_and_quantize_chinese_llama.ipynb 193KB
convert_and_quantize_chinese_alpaca_plus.ipynb 140KB
README.md 2KB
scripts
merge_llama_with_chinese_lora_low_mem.py 15KB
inference
inference_hf.py 8KB
gradio_demo.py 12KB
langchain
doc.txt 6KB
langchain_qa.py 4KB
langchain_sum.py 3KB
crawl_prompt.py 3KB
merge_tokenizer
chinese_sp.model 508KB
merge_tokenizers.py 3KB
merge_llama_with_chinese_lora.py 14KB
ceval
evaluator.py 2KB
eval.py 5KB
llama_evaluator.py 8KB
subject_mapping.json 5KB
training
run_pt.sh 2KB
run_clm_sft_with_peft.py 18KB
build_dataset.py 4KB
run_clm_pt_with_peft.py 28KB
ds_zero2_no_offload.json 686B
run_sft.sh 2KB
README.md 3KB
openai_server_demo
openai_api_server.py 9KB
README.md 9KB
openai_api_protocol.py 2KB
共 90 条
- 1
资源评论
- m0_749066462024-03-09资源简直太好了,完美解决了当下遇到的难题,这样的资源很难不支持~
- kxianwen2023-08-04发现一个超赞的资源,赶紧学习起来,大家一起进步,支持!
- 2301_774853122023-08-27资源太好了,解决了我当下遇到的难题,抱紧大佬的大腿~
汀、人工智能
- 粉丝: 7w+
- 资源: 367
下载权益
C知道特权
VIP文章
课程特权
开通VIP
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功