Skip to content

openai style api for open large language models, using LLMs just as chatgpt! 开源大模型的统一后端接口

License

Notifications You must be signed in to change notification settings

TrentaAI/api-for-open-llm

 
 

Repository files navigation

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
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

About

openai style api for open large language models, using LLMs just as chatgpt! 开源大模型的统一后端接口

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Python 99.6%
  • Other 0.4%