报时机器人的rasa shell执行流程分析( 二 )


app.register_listener(partial(load_agent_on_start, model_path, endpoints, remote_storage), "before_server_start",)app.register_listener(close_resources, "after_server_stop")5.rasa/core/agent.py文件??通过load_agent_on_start()方法加载一个agent 。在rasa/core/agent.py文件中,load_agent()函数如下所示:

报时机器人的rasa shell执行流程分析

文章插图
??在load_agent()函数中,加载模型代码是agent.load_model(model_path) 。在Agent类的def load_model()方法中,关于初始化MessageProcessor代码如下:
self.processor = MessageProcessor(model_path=model_path,tracker_store=self.tracker_store,lock_store=self.lock_store,action_endpoint=self.action_endpoint,generator=self.nlg,http_interpreter=self.http_interpreter,)加载模型的代码如下:
logger.info(f"Loading model {model_tar}...")with tempfile.TemporaryDirectory() as temporary_directory:try:metadata, runner = loader.load_predict_graph_runner(Path(temporary_directory),Path(model_tar),LocalModelStorage,DaskGraphRunner,)return os.path.basename(model_tar), metadata, runnerexcept tarfile.ReadError:raise ModelNotFound(f"Model {model_path} can not be loaded.")6.rasa/engine/loader.py文件??在rasa/engine/loader.py文件中,def load_predict_graph_runner()函数如下:
报时机器人的rasa shell执行流程分析

文章插图
三.遇到的问题和说明1.如何用PyCharm调试Rasa项目解析:一种是基于Script path的调试方法,一种是基于Module name的调试方法 。这里介绍前者如下所示:
报时机器人的rasa shell执行流程分析

文章插图
(1)Script Path:安装rasa类库的__main__.py文件路径 。(2)Parameters:rasa的各种cli,比如train、test、shell等 。(3)Working directory:安装rasa类库的根目录 。说明:因为rasa类库依赖类库太多导致系统环境混乱,所示建议使用虚拟环境进行rasa类库安装 。
2.NoConsoleScreenBufferError解析:exception=NoConsoleScreenBufferError('No Windows console found. Are you running cmd.exe?')
报时机器人的rasa shell执行流程分析

文章插图
3.模型20220915-081548-honest-yield.tar.gz解析:由metadata.json文件和components文件夹组成,后者和config.yml内容密切相关,如下所示:
报时机器人的rasa shell执行流程分析

文章插图
4.Sanic框架解析:Sanic是一个高性能异步的Web框架 。
5.asyncio库解析:它的编程模型是一个消息循环,关键字涉及event_loop、coroutine、task、future、async/await等 。
??本文只是简要的介绍了rasa shell命令启动后的程序执行过程,但是对于加载模型后如何解析模型构建图,以及用户输入后,消息如何通过模型(nlu和dialog policy)得到输出并没有介绍,后面写篇文章专门介绍 。
参考文献:[1]Rasa实战:构建开源对话机器人[2]Sanic官方文档:https://www.osgeo.cn/sanic/[3]asyncio库异步I/O:python.org/3.7/library/asyncio.html" rel="external nofollow noreferrer">https://docs.python.org/3.7/library/asyncio.html[4]聊天机器人框架Rasa资源整理
吾爱DotNet
报时机器人的rasa shell执行流程分析

文章插图
专注于.NET领域的技术分享
人工智能干货推荐
报时机器人的rasa shell执行流程分析

文章插图
专注于人工智能领域的技术分享
【报时机器人的rasa shell执行流程分析】

经验总结扩展阅读