Rasa Core 项目教程
1. 项目的目录结构及介绍
Rasa Core 项目的目录结构如下:
rasa_core/
├── data/
├── docker/
├── docs/
├── examples/
├── rasa/
├── rasa_core/
├── tests/
├── .codeclimate.yml
├── .coveragerc
├── .gitignore
├── .travis.yml
├── Dockerfile
├── LICENSE.txt
├── MANIFEST.in
├── Makefile
├── README.md
├── dev-requirements.txt
└── docs-requirements.txt
目录介绍
data/
: 存放项目数据文件。docker/
: 包含 Docker 相关文件。docs/
: 项目文档。examples/
: 示例代码。rasa/
: Rasa 核心代码。rasa_core/
: Rasa Core 核心代码。tests/
: 测试代码。.codeclimate.yml
: CodeClimate 配置文件。.coveragerc
: 代码覆盖率配置文件。.gitignore
: Git 忽略文件配置。.travis.yml
: Travis CI 配置文件。Dockerfile
: Docker 构建文件。LICENSE.txt
: 项目许可证。MANIFEST.in
: 打包清单文件。Makefile
: Makefile 文件。README.md
: 项目说明文档。dev-requirements.txt
: 开发依赖文件。docs-requirements.txt
: 文档依赖文件。
2. 项目的启动文件介绍
Rasa Core 项目的启动文件主要是 rasa_core/run.py
。该文件负责启动 Rasa Core 对话引擎。
# rasa_core/run.py
import argparse
from rasa_core.agent import Agent
from rasa_core.interpreter import RasaNLUInterpreter
def main(model_path, nlu_model_path, port):
interpreter = RasaNLUInterpreter(nlu_model_path)
agent = Agent.load(model_path, interpreter=interpreter)
agent.handle_channels([], port=port)
if __name__ == "__main__":
parser = argparse.ArgumentParser(description="Start Rasa Core server.")
parser.add_argument("--model", required=True, help="Path to the Rasa Core model.")
parser.add_argument("--nlu", required=True, help="Path to the Rasa NLU model.")
parser.add_argument("--port", type=int, default=5005, help="Port to run the server on.")
args = parser.parse_args()
main(args.model, args.nlu, args.port)
启动文件介绍
rasa_core/run.py
: 负责启动 Rasa Core 对话引擎,加载模型并启动服务。
3. 项目的配置文件介绍
Rasa Core 项目的配置文件主要包括以下几个:
config.yml
: 主要配置文件,包含模型训练参数、通道配置等。domain.yml
: 定义对话系统的领域,包括意图、实体、响应等。endpoints.yml
: 定义外部服务的连接点,如 NLU 服务、跟踪服务等。
配置文件介绍
config.yml
:
language: "en"
pipeline:
- name: "WhitespaceTokenizer"
- name: "RegexFeaturizer"
- name: "CRFEntityExtractor"
- name: "EntitySynonymMapper"
- name: "CountVectorsFeaturizer"
- name: "EmbeddingIntentClassifier"
policies:
- name: "KerasPolicy"
- name: "MemoizationPolicy"
- name: "FallbackPolicy"
domain.yml
:
intents:
- greet
- goodbye
- affirm
- deny
- mood_great
- mood_unhappy
entities:
- name
slots:
name:
type: text
responses:
utter_greet:
- text: "Hello! How can I help you today?"
utter_goodbye:
- text: "