You need to enable JavaScript to run this app. 基于ChatterBot与Flask的聊天机器人无法识别消息时自定义回复咨询
优惠活动
大模型
产品
解决方案
定价
更多

基于ChatterBot与Flask的聊天机器人无法识别消息时自定义回复咨询

解决方案

首先你的现有代码存在逻辑问题:你重复初始化了3次ChatBot实例,存储适配器、逻辑适配器的配置都写在了bot实例上,但最终训练和调用的是最早初始化的chatbot实例,所有额外配置都没有生效,需要先修正这个问题。

方案1:使用ChatterBot内置默认回复配置(推荐)

直接在BestMatch逻辑适配器的参数里配置默认回复和匹配阈值即可,开箱即用。
修改后完整代码如下:

from flask import Flask, render_template, request
from chatterbot import ChatBot
from chatterbot.trainers import ChatterBotCorpusTrainer

app = Flask(__name__)

# 整合所有配置到同一个ChatBot实例
chatbot = ChatBot(
    'chatbot_name',
    storage_adapter='chatterbot.storage.SQLStorageAdapter',
    database_uri='sqlite:///database.sqlite3',
    logic_adapters=[
        {
            'import_path': 'chatterbot.logic.BestMatch',
            # 配置无法识别时的默认回复
            'default_response': 'Sorry I don\'t understand that',
            # 配置匹配阈值,范围0-1,匹配度低于该值就返回默认回复,可根据实际效果调整
            'maximum_similarity_threshold': 0.65
        },
        'chatterbot.logic.TimeLogicAdapter'
    ]
)

trainer = ChatterBotCorpusTrainer(chatbot)
trainer.train("chatterbot.corpus.english")

@app.route('/')
def home():
    return render_template('bot1.html')

@app.route('/get')
def get_bot_response():
    userText = request.args.get('msg')
    return str(chatbot.get_response(userText))

if __name__ == '__main__':
    app.run()

方案2:手动判断回复置信度

如果你需要更灵活的自定义判断逻辑,可以在获取回复后手动读取置信度参数,低于阈值就返回自定义回复,只需修改get_bot_response路由即可:

@app.route('/get')
def get_bot_response():
    userText = request.args.get('msg')
    response = chatbot.get_response(userText)
    # 匹配度低于0.65就返回默认回复,阈值可自行调整
    if response.confidence < 0.65:
        return "Sorry I don't understand that"
    return str(response)

两个方案任选其一即可,阈值可以根据实际测试效果调整,数值越高触发默认回复的条件越严格。

内容的提问来源于stack exchange,提问作者user13944038

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.18 00:27:02