You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将Rasa作为库使用,基于config、nlu、stories训练模型并测试

将Rasa作为Python库使用:基于config、NLU、Stories训练与测试模型

如果你想把Rasa当作Python库而非命令行框架使用,直接通过代码调用API完成模型训练和测试,可以按照以下步骤操作:

前置准备

  1. 安装Rasa:pip install rasa
  2. 准备好所需配置文件:
    • config.yml:定义NLU pipeline和对话策略
    • nlu.yml:NLU训练数据(意图、实体示例)
    • stories.yml:对话流程示例
    • domain.yml:领域配置(包含意图、实体、可用动作、回复模板等,Core模型必需)

1. 训练NLU模型

通过Rasa的NLU API单独训练意图识别和实体提取模型:

from rasa.nlu.training_data import load_data
from rasa.nlu.config import RasaNLUModelConfig
from rasa.nlu.model import Trainer

# 加载NLU训练数据和配置文件
nlu_training_data = load_data("nlu.yml")
nlu_config = RasaNLUModelConfig.from_yaml_file("config.yml")

# 初始化训练器并执行训练
nlu_trainer = Trainer(nlu_config)
nlu_trainer.train(nlu_training_data)

# 将训练好的模型保存到指定目录
nlu_model_path = nlu_trainer.persist("./models/nlu", fixed_model_name="latest")

2. 训练Core对话模型

训练处理对话流程的Core模型,依赖domain和stories数据:

from rasa.core.agent import Agent
from rasa.core.policies import MemoizationPolicy, KerasPolicy
from rasa.core.training import load_data as load_stories_data
from rasa.core.domain import Domain

# 加载领域配置和对话stories
domain = Domain.load("domain.yml")
stories = load_stories_data("stories.yml")

# 配置对话策略(可根据需求调整)
policies = [MemoizationPolicy(max_history=3), KerasPolicy()]

# 初始化Agent并训练Core模型
agent = Agent(domain, policies=policies)
agent.train(stories)

# 保存Core模型
agent.persist("./models/core")

3. 联合训练NLU+Core模型

如果需要一次性训练NLU和Core模型,可使用Rasa的联合训练API:

from rasa import train

# 执行联合训练,自动处理NLU和Core部分
train(
    domain="domain.yml",
    config="config.yml",
    training_files=["nlu.yml", "stories.yml"],
    output="./models"
)

4. 测试NLU模型

加载训练好的NLU模型,测试意图识别和实体提取效果:

from rasa.nlu.model import Interpreter

# 加载NLU模型
interpreter = Interpreter.load(nlu_model_path)

# 测试示例文本
test_text = "我要预约下周三的牙科门诊"
parsed_result = interpreter.parse(test_text)

print(f"识别意图: {parsed_result['intent']['name']}")
print(f"意图置信度: {parsed_result['intent']['confidence']:.2f}")
print(f"提取实体: {[(ent['entity'], ent['value']) for ent in parsed_result['entities']]}")

5. 测试Core对话模型

加载Core模型,模拟对话交互:

from rasa.core.agent import Agent

# 加载Core模型(如果是联合训练的模型,直接加载整体模型路径即可)
agent = Agent.load("./models/core")

# 模拟单轮对话
response = agent.handle_text("我想预约门诊")
for msg in response:
    print(f"机器人回复: {msg['text']}")

# 模拟多轮对话
tracker = agent.create_tracker()
tracker = agent.handle_message("我想预约门诊", tracker)
tracker = agent.handle_message("下周三", tracker)
final_response = agent.handle_message("牙科", tracker)
for msg in final_response:
    print(f"机器人回复: {msg['text']}")

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 15:20:54