Chatbot UI 和 ChatGLM2-6B 的集成
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 json
raise 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_args
model_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,
问它一个问它,清华大学在哪?
完结!
版权归原作者 engchina 所有, 如有侵权,请联系我们删除。