# my_openai_api **Repository Path**: rookieaju/my_openai_api ## Basic Information - **Project Name**: my_openai_api - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2023-12-04 - **Last Updated**: 2023-12-04 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # my_openai_api 部署你自己的**OpenAI** 格式api😆,基于**flask, transformers** (使用 **Baichuan2-13B-Chat-4bits** 模型,可以运行在单张Tesla T4显卡) ,实现以下**OpenAI**接口: - **Chat** /v1/chat/completions - **Models** /v1/models - **Completions** /v1/completions 同时实现接口相应的STREAMING模式,保证在**langchain**中基础调用 ## 起因 目前Baichuan2-13B-Chat int4量化后可在单张tesla T4显卡运行,并且效果和速度还可以,可以和gpt-3.5媲美。 - **Baichuan2-13B-Chat-4bits**:[https://huggingface.co/baichuan-inc/Baichuan2-13B-Chat-4bits](https://huggingface.co/baichuan-inc/Baichuan2-13B-Chat-4bits) ## 最低配置 需要16g显存,如果主机显存不够可以考虑~~腾讯云的活动,60块钱15天32g内存、T4显卡的主机~~(**活动已经下架,可以考虑使用Colab**),非常划算😝,可以跑动baichuan2-13b-chat-4bits。 ~~地址: https://cloud.tencent.com/act/pro/gpu-study~~ 如果想要本地运行,T4显卡价格在5600元左右,也可以考虑2080ti魔改22g版本,某宝只要2600元左右 🤓️。 ## Colab 免费的Colab可以使用12G内存和T4显卡🤓️,可以考虑免费的Colab结合ngrok运行 ### 步骤 1. 打开 [![Colab](https://img.shields.io/badge/✏️-Colab-important)](https://colab.research.google.com/github/billvsme/my_openai_api/blob/main/colab/my_openai_api.ipynb) 2. 修改 NGROK_AUTHTOKEN,注意不要带双引号 3. 修改运行配置,点击 修改 -> 笔记本设置 中把显卡改成T4 4. 运行,点击 代码执行程序 -> 全部运行 (下载模型时间较长,请耐心等在) 5. 运行结束后查看输出的ngrok外网访问链接,使用该链接请求 ## 安装 1. 下载代码 ``` git clone https://github.com/billvsme/my_openai_api.git ``` 2. 下载Baichuan2-13B-Chat-4bits模型 ``` cd my_openai_api git lfs install #需要先安装好git-lfs git clone https://huggingface.co/baichuan-inc/Baichuan2-13B-Chat-4bits ``` 3. 安装venv环境 ``` mkdir ~/.venv python -m venv ~/.venv/ai . ~/.venv/ai/bin/activate pip install -r requirements.txt ``` ## 启动 ``` python my_openai_api.py 或者 gunicorn -b 0.0.0.0:5000 --workers=1 my_openai_api:app ``` ## 文档 实现了openai的models, chat, moderations 3个接口 可以参考https://platform.openai.com/docs/api-reference/chat ``` 打开 http://127.0.0.1:5000/apidocs/ ``` ![github_my_open_api_002.png](https://s2.loli.net/2023/09/25/o8I5GE3ONfhSaqz.png) ## 使用 ### langchain 替换openai_base_api ``` # coding: utf-8 from langchain.llms import OpenAI from langchain.chat_models import ChatOpenAI from langchain.callbacks.streaming_stdout import StreamingStdOutCallbackHandler from langchain.schema import ( HumanMessage, ) openai_api_base = "http://127.0.0.1:5000/v1" openai_api_key = "test" # /v1/chat/completions流式响应 chat_model = ChatOpenAI(streaming=True, callbacks=[StreamingStdOutCallbackHandler()], openai_api_base=openai_api_base, openai_api_key=openai_api_key) resp = chat_model([HumanMessage(content="给我一个django admin的demo代码")]) chat_model.predict("你叫什么?") # /v1/chat/completions普通响应 chat_model = ChatOpenAI(openai_api_base=openai_api_base, openai_api_key=openai_api_key) resp = chat_model.predict("给我一个django admin的demo代码") print(resp) # /v1/completions流式响应 llm = OpenAI(streaming=True, callbacks=[StreamingStdOutCallbackHandler()], temperature=0, openai_api_base=openai_api_base, openai_api_key=openai_api_key) llm("登鹳雀楼->王之涣\n夜雨寄北->") # /v1/completions普通响应 llm = OpenAI(openai_api_base=openai_api_base, openai_api_key=openai_api_key) print(llm("登鹳雀楼->王之涣\n夜雨寄北->")) ``` ### ChatGPT Next 设置中把接口地址修改为你的ip,如果部署网页为https,注意在Chrome设置中“不安全内容”选择“允许” ### OpenAI Translator 设置中把api url修改为你的ip