Rasa是一个开源的对话式AI框架,专注于构建基于文本和语音的自动化对话。它允许开发者创建复杂的、上下文感知的对话代理,用于各种应用场景,如客户服务聊天机器人、虚拟助手和技能。Rasa提供强大的自然语言理解(NLU)和对话管理(DM)能力,使开发者能够构建高度定制化的智能助手。
Rasa 是一个开源机器学习框架,用于构建上下文式 AI 助手。与许多使用预定义意图和实体匹配规则的聊天机器人平台不同,Rasa利用机器学习算法来理解用户的消息并决定下一步该做什么。这使得构建更加智能、灵活且能够处理复杂对话流程的机器人成为可能。
Rasa 框架主要由以下两个核心组件构成:
与其他对话式AI平台相比,Rasa 有以下几个显著优势:
Rasa 可以用于构建各种类型的对话式AI助手,以下是一些常见的应用场景:
以下是使用 Rasa 构建一个简单聊天机器人的基本步骤:
pip install rasa
rasa init
version: '3.1'nlu:- intent: greet examples: | - hi - hello - hey- intent: goodbye examples: | - bye - goodbye - see you later
version: '3.1'stories:- story: greet and goodbye steps: - intent: greet - action: utter_greet - intent: goodbye - action: utter_goodbye
version: '3.1'intents:- greet- goodbyeactions:- utter_greet- utter_goodbyeresponses: utter_greet: - text: 'Hey! How are you?' utter_goodbye: - text: 'Bye!'
rasa train
rasa shell
Rasa 提供了多种 NLU 模型配置选项,您可以根据您的具体需求选择合适的模型。以下是一些常见的 NLU 模型组件:
您可以将这些组件组合成不同的 pipeline,以构建定制化的 NLU 模型。一个典型的 NLU pipeline 如下所示:
language: zhpipeline:- name: WhitespaceTokenizer- name: RegexFeaturizer- name: LexicalSyntacticFeaturizer- name: CountVectorsFeaturizer- name: CountVectorsFeaturizer analyzer: char_wb min_ngram: 1 max_ngram: 4- name: DIETClassifier epochs: 100- name: EntitySynonymMapper- name: ResponseSelector epochs: 100
Rasa 的对话管理策略决定了机器人如何根据对话历史和当前用户输入选择下一步的行动。Rasa 提供了多种对话管理策略,包括:
您可以根据您的具体需求选择合适的对话管理策略,并将其组合成一个策略 ensemble。一个典型的策略 ensemble 如下所示:
policies:- name: MemoizationPolicy- name: RulePolicy- name: TEDPolicy max_history: 5 epochs: 100
Rasa 可以与外部 API 集成,以获取数据或执行操作。例如,您可以将 Rasa 与天气 API 集成,以查询天气信息;或者与数据库 API 集成,以查询用户信息。
要与外部 API 集成,您需要创建一个自定义行动,并在行动中调用 API。以下是一个示例:
from rasa_sdk import Actionfrom rasa_sdk.events import SlotSetimport requestsclass ActionGetWeather(Action): def name(self): return 'action_get_weather' def run(self, dispatcher, tracker, domain): city = tracker.get_slot('city') url = f'https://api.example.com/weather?city={city}' response = requests.get(url).json() weather = response['weather'] dispatcher.utter_message(f'The weather in {city} is {weather}.') return [SlotSet('weather', weather)]
然后,您需要在 `domain.yml` 文件中注册该行动:
actions:- action_get_weather
并在对话故事中使用该行动:
stories:- story: get weather steps: - intent: ask_weather entities: - city: beijing - action: action_get_weather
Rasa Enterprise 是 Rasa 的商业版本,提供额外的功能和支持,包括:
如果您需要构建大规模、高可靠性的对话式AI助手,或者需要企业级安全和支持,可以考虑使用 Rasa Enterprise。
以下是一些有用的 Rasa 学习资源:
Rasa 和 Dialogflow 都是流行的对话式 AI 框架,但它们在设计理念和功能方面存在一些关键差异。下表对两者进行了比较:
特性 | Rasa | Dialogflow |
---|---|---|
开源 | 是 | 否 (Google Cloud Platform 的一部分) |
定制性 | 高度可定制,允许开发者控制 NLU 和对话管理流程 | 定制性较低,主要依赖预定义的意图和实体 |
机器学习驱动 | 是,使用机器学习算法进行 NLU 和对话管理 | 部分机器学习驱动,但更多依赖规则和模板 |
部署 | 灵活,可部署在本地、云平台或 Kubernetes | 主要部署在 Google Cloud Platform 上 |
复杂对话 | 擅长处理复杂、上下文相关的对话 | 更适合简单、直接的对话 |
价格 | 开源版本免费,企业版收费 | 根据使用量收费 |
选择 Rasa 还是 Dialogflow 取决于您的具体需求。如果您需要高度的定制性、灵活性和对数据的控制,并且希望构建复杂的对话式 AI 助手,那么 Rasa 是一个更好的选择。如果您的需求比较简单,并且希望快速构建一个基本的聊天机器人,那么 Dialogflow 可能会更适合您。
总而言之,Rasa 提供了一个强大的平台,让开发人员能够创建复杂的、上下文感知的对话代理。它的开源性质、机器学习驱动的方法和高度可定制性使其成为构建各种应用程序的理想选择。