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

在这里插入图片描述
问它一个问它,清华大学在哪?

在这里插入图片描述
完结!

猜你喜欢

转载自blog.csdn.net/engchina/article/details/131631767