Chatbot UI 和 ChatGLM2-6B 的集成
- 0. 背景
- 1. 部署 Chatbot UI
- 2. 部署 ChatGLM2-6B
- 3. 修改 ChatGLM2-6B 项目的 openai_api.py
- 4. 修改 Chatbot UI 的配置
- 5. 访问 Chatbot UI
0. 背景
尝试将 Chatbot UI 和 ChatGLM2-6B 的进行集成, ChatGLM2-6B 提供 API 服务,Chatbot UI 提供模仿 OpenAI 聊天模型的 ChatGPT 界面和功能。
效果展示,
1. 部署 Chatbot UI
请参考文章 本地部署 Chatbot UI。
2. 部署 ChatGLM2-6B
请参考文章 本地部署 ChatGLM2-6B。
3. 修改 ChatGLM2-6B 项目的 openai_api.py
直接启动 openai_api.py 会报发生以下错误,
PydanticDeprecatedSince20: The `json` method is deprecated; use `model_dump_json` instead. Deprecated in Pydantic V2.0 to be removed in V3.0. See Pydantic V2 Migration Guide at https://errors.pydantic.dev/2.0.2/migration/yield "{}".format(chunk.json(exclude_unset=True, ensure_ascii=False))略File "/root/miniconda3/envs/chatglm2/lib/python3.10/site-packages/pydantic/main.py", line 926, in jsonraise TypeError('`dumps_kwargs` keyword arguments are no longer supported.')
TypeError: `dumps_kwargs` keyword arguments are no longer supported.
具体错误描述可以参考 https://errors.pydantic.dev/2.0.2/migration/ 的说明。
解决方法如下,
vi openai_api.py--- 修改内容,有3处#yield "{}".format(chunk.json(exclude_unset=True, ensure_ascii=False))yield "{}".format(chunk.model_dump_json(exclude_unset=True))
---
(可选)为了实现更高的适配性,增加非 /v1
开头的 API 端点。
class ChatCompletionResponse(BaseModel):略usage: Optional[Dict[str, int]] = {'prompt_tokens': 1, 'completion_tokens': 1, 'total_tokens': 2}@app.get("/models", response_model=ModelList)
async def list_models():global model_argsmodel_card = ModelCard(id="gpt-3.5-turbo")return ModelList(data=[model_card])@app.post("/chat/completions", response_model=ChatCompletionResponse)
async def create_v1_chat_completion(request: ChatCompletionRequest):return RedirectResponse("/v1/chat/completions", status_code=307)
修改完成后,启动 openai_api.py,
python openai_api.py
4. 修改 Chatbot UI 的配置
修改 .env.local 的配置,
vi .env.local---
OPENAI_API_HOST=http://localhost:8000
OPENAI_API_KEY=none
---
启动 Chatbot UI,
npm run dev
5. 访问 Chatbot UI
使用浏览器打开 http://localhost:3000,
问它一个问它,清华大学在哪?
完结!