第一版只考虑实现功能,不考虑是否实现优雅 # chat_app 模块接入 主页chat应用很简单,就是一个聊天窗口模版+socket-io,后台也使用socket-io插件实现这个事件驱动回复。 鉴于要接入一个比较大的模块设计,又暂时不写成插件形式,所以会以类实例的形式侵入flask_app之中。 侵入的位置是 @socketio.on()监听的数个事件中, 暂定每个业务实例对接一个用户,用户基于sid来区分(在一个用户交互过程中不变) 每connect生成一个全新实例,根据sid放入全局实例容器map,每收到信息,从map中获取实例,由实例处理后续的完整的回复生成流程。 # 模块设计 Controller是实际业务控制实例 Controller注册各个层次,串联层次调用 所谓层次即是设计的BusinessLogic层次,三层:理解,业务,生成(可继续泛化成接口类,支持层指定化 三层实现不相同 但会基于一些常用库调用,比如config,dialog_cot 业务层稍微复杂,对接模型和数据存储 具体到本系统的实现,需要定制化某种检索召回重排逻辑 TODO #database,modelbase 在目录下设置config,在__init__内调用Config类读取配置,模块全局变量设置。