/api-for-open-llm

Openai style api for open large language models, using LLMs just as chatgpt! Support for LLaMA, LLaMA-2, BLOOM, Falcon, Baichuan, Qwen, Xverse, SqlCoder, CodeLLaMA, ChatGLM, ChatGLM2, ChatGLM3 etc. 开源大模型的统一后端接口

Primary LanguagePythonApache License 2.0Apache-2.0

API for Open LLMs

llm.png

图片来自于论文: [A Survey of Large Language Models](https://arxiv.org/pdf/2303.18223.pdf)

🐧 QQ交流群:870207830

📢 新闻

更多新闻和历史请转至 此处


此项目主要内容

此项目为开源大模型的推理实现统一的后端接口,与 OpenAI 的响应保持一致,具有以下特性:

  • ✨ 以 OpenAI ChatGPT API 的方式调用各类开源大模型

  • 🖨️ 支持流式响应,实现打印机效果

  • 📖 实现文本嵌入模型,为文档知识问答提供支持

  • 🦜️ 支持大规模语言模型开发工具 langchain 的各类功能

  • 🙌 只需要简单的修改环境变量即可将开源模型作为 chatgpt 的替代模型,为各类应用提供后端支持

  • 🚀 支持加载经过自行训练过的 lora 模型

  • ⚡ 支持 vLLM 推理加速和处理并发请求

内容导引

章节 描述
💁🏻‍♂支持模型 此项目支持的开源模型以及简要信息
🚄启动方式 启动模型的环境配置和启动命令
⚡vLLM启动方式 使用 vLLM 启动模型的环境配置和启动命令
🦙llama-cpp启动方式 使用 llama-cpp 启动模型的环境配置和启动命令
💻调用方式 启动模型之后的调用方式
❓常见问题 一些常见问题的回复
📚相关资源 关于开源模型训练和推理的相关资源

🐼 支持模型

语言模型

模型 基座模型 参数量 语言 模型权重链接
baichuan2 Baichuan 7/13 en, zh baichuan-inc/Baichuan2-13B-Chat
codellama LLaMA2 7/13/34B multi codellama/CodeLlama-7b-Instruct-hf
xverse-13b-chat Xverse 13B multi xverse/XVERSE-13B-Chat
qwen-7b-chat Qwen 7B en, zh Qwen/Qwen-7B-Chat
baichuan-13b-chat Baichuan 13B en, zh baichuan-inc/Baichuan-13B-Chat
InternLM InternLM 7B en, zh internlm/internlm-chat-7b
InternLM2 InternLM2 20B en, zh internlm/internlm2-chat-20b
ChatGLM2 GLM 6/130B en, zh THUDM/chatglm2-6b
baichaun-7b Baichuan 7B en, zh baichuan-inc/baichuan-7B
Guanaco LLaMA 7/33/65B en timdettmers/guanaco-33b-merged
YuLan-Chat LLaMA 13/65B en, zh RUCAIBox/YuLan-Chat-13b-delta
TigerBot BLOOMZ 7/180B en, zh TigerResearch/tigerbot-7b-sft
OpenBuddy LLaMA、Falcon 7B multi OpenBuddy
MOSS CodeGen 16B en, zh fnlp/moss-moon-003-sft-int4
Phoenix BLOOMZ 7B multi FreedomIntelligence/phoenix-inst-chat-7b
BAIZE LLaMA 7/13/30B en project-baize/baize-lora-7B
Chinese-LLaMA-Alpaca LLaMA 7/13B en, zh ziqingyang/chinese-alpaca-plus-lora-7b
BELLE BLOOMZ 7B zh BelleGroup/BELLE-7B-2M
ChatGLM GLM 6B en, zh THUDM/chatglm-6b

嵌入模型

模型 维度 权重链接
bge-large-zh 1024 bge-large-zh
m3e-large 1024 moka-ai/m3e-large
text2vec-large-chinese 1024 text2vec-large-chinese

🤖 使用方式

环境变量

  • OPENAI_API_KEY: 此处随意填一个字符串即可

  • OPENAI_API_BASE: 后端启动的接口地址,如:http://192.168.0.xx:80/v1

cd streamlit-demo
pip install -r requirements.txt
streamlit run streamlit_app.py

img.png

👉 Chat Completions
from openai import OpenAI

client = OpenAI(
    api_key="EMPTY",
    base_url="http://192.168.20.59:7891/v1/",
)

# Chat completion API
chat_completion = client.chat.completions.create(
    messages=[
        {
            "role": "user",
            "content": "你好",
        }
    ],
    model="gpt-3.5-turbo",
)
print(chat_completion)
# 你好👋!我是人工智能助手 ChatGLM3-6B,很高兴见到你,欢迎问我任何问题。


# stream = client.chat.completions.create(
#     messages=[
#         {
#             "role": "user",
#             "content": "感冒了怎么办",
#         }
#     ],
#     model="gpt-3.5-turbo",
#     stream=True,
# )
# for part in stream:
#     print(part.choices[0].delta.content or "", end="", flush=True)
👉 Completions
from openai import OpenAI

client = OpenAI(
    api_key="EMPTY",
    base_url="http://192.168.20.59:7891/v1/",
)


# Chat completion API
completion = client.completions.create(
    model="gpt-3.5-turbo",
    prompt="你好",
)
print(completion)
# 你好👋!我是人工智能助手 ChatGLM-6B,很高兴见到你,欢迎问我任何问题。
👉 Embeddings
from openai import OpenAI

client = OpenAI(
    api_key="EMPTY",
    base_url="http://192.168.20.59:7891/v1/",
)


# compute the embedding of the text
embedding = client.embeddings.create(
    input="你好",
    model="text-embedding-ada-002"
)
print(embedding)

可接入的项目

通过修改 OPENAI_API_BASE 环境变量,大部分的 chatgpt 应用和前后端项目都可以无缝衔接!

docker run -d -p 3000:3000 \
   -e OPENAI_API_KEY="sk-xxxx" \
   -e BASE_URL="http://192.168.0.xx:80" \
   yidadaa/chatgpt-next-web

web

# 在docker-compose.yml中的api和worker服务中添加以下环境变量
OPENAI_API_BASE: http://192.168.0.xx:80/v1
DISABLE_PROVIDER_CONFIG_VALIDATION: 'true'

dify

📜 License

此项目为 Apache 2.0 许可证授权,有关详细信息,请参阅 LICENSE 文件。

🚧 References

Star History

Star History Chart