本文记录此系统在服务器上部署完成,并在浏览器顺利打开系统后,在测试系统过程中出现的错误。部署过程及原开源项目详见:AI-chat-rag项目复现过程记录-CSDN博客

(一)上传.doc文件测试文件搜索功能,发现搜索结果为b'PK\x03\x04\x14\x00\x06\x00\x08\x00\x00\x00!\x0等二进制内容。

错误原因:系统只能解析txt文件,无法解析.doc文件。

解决方法:1、改写代码

                  2、改上传txt文件

这里选择方法2,因为想把多格式文档解析作为后面的优化点。

(二)点击智能聊天,发送消息发现AI回复异常,一直在加载中。

检查后端发现点击智能对话后端只接收到"GET /api/documents HTTP/1.1" 200 OK

于是需要逐步检查是哪个地方出错了。

1、在服务器运行

grep -R "chat" -n main.py

检查服务器输出是否有

@app.websocket("/ws/chat")

输出这一句说明后端确实是有websocket接口

2、检查WebSocket连接是否建立

在打开系统的浏览器页面——按F12——点击Console

看Console是否报错。检查得console显示(index):1763 WebSocket连接已建立

说明WebSocket建立了,但可能在哪个地方卡住了。

3、检查@app.websocket("/ws/chat")函数

发现错误原因:前端发送的是JSON字符串,但后端先是按字符串接收,又按dict使用,因此修改@app.websocket("/ws/chat")函数。

在服务器中输入

nano main.py

编辑main函数,将main中的@app.websocket("/ws/chat")函数替换为:

@app.websocket("/ws/chat")
async def websocket_endpoint(websocket: WebSocket):
    await websocket.accept()
    print(">>> WebSocket 已 accept")
    logger.info("WebSocket连接已建立")

    try:
        while True:
            raw_data = await websocket.receive_text()
            print(">>> 原始收到的数据:", raw_data)

            # 解析 JSON
            try:
                data = json.loads(raw_data)
            except json.JSONDecodeError:
                logger.error("收到的不是 JSON 数据")
                await websocket.send_text("消息格式错误,无法解析")
                continue

            if data.get('type') == 'message':
                message = data.get('message', '')
                selected_docs = data.get('selected_docs', [])

                logger.info(
                    f"处理用户消息: 消息长度={len(message)}, 选择文档数={len(selected_docs)}"
                )

后面的RAG和LLM部分代码不需要修改。

同时在main函数的import区域加上一个

import json

而后再保存退出,重新运行python main.py。

4、重新运行后,在智能聊天处发送消息,后端保错 Error code: 401 - {'error': {'message': 'Authentication Fails, Your api key: ****here is invalid', 'type': 'authentication_error', 'param': None, 'code': 'invalid_request_error'}}:

这里的错误原因是:后端接收到的Deepseek API Key是无效的。这里检查在部署过程中储存的.env文件,当时的API key是存储在这里面的。检查发现是API Key出错了,到deep seek开放平台创建一个API Key。

然后再重新将sk开头的key复制进.env后保存。

5、重新运行后保错:ERROR - WebSocket处理异常: The api_key client option must be set either by passing api_key to the client or by setting the OPENAI_API_KEY environment variable

检查发现错误原因是LLM客户端是OpenAI SDK,但我们只设置了DEEPSEEK_API_KEY,OpenAI读不到这个变量,但deepseek的API是兼容OpenAI的,只是读取的变量不一样,所以解决方法是在.env文件中再加入一行

OPENAI_API_KEY=sk-xxxxxxxxxxxxxxxxxxxxxxxx

保存退出后再重新运行python main.py,刷新系统,再次发送“你好”

6、此时后端运行报错:ERROR - WebSocket处理异常: Error code: 402 - {'error': {'message': 'Insufficient Balance', 'type': 'unknown_error', 'param': None, 'code': 'invalid_request_error'}}

这个原因就很直接了,就是API余额不足了,因为deepseek的API不是完全免费的,完全没去关注余额,所以解决办法有两个:

1)充值

2)修改代码,切换其他提供免费额度的模型

为了方便当然是选择第一个,毕竟很可能换了模型后又有很多error。充值后重新运行刷新,再发送“你好”,就能看到系统快速回复了。

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐