介绍
在近年来,聊天机器人在人工智能的推动下发展成了功能复杂的对话代理工具。本指南深入探讨了构建一个高级的Rasa-powered聊天机器人的过程,该机器人专门针对与Confluence页面和Jira工单相关的用户查询进行了定制。将Confluence和Jira集成起来带来了很多好处,可以简化信息检索,并促进协同工作环境的形成。Confluence有助于协同文档编写,而Jira则是一个强大的项目管理工具。通过创建与这些平台无缝集成的聊天机器人,可以提高可访问性,优化团队进行内容协作和项目管理的效率。
学习目标
在本文中,您将学习到:
- Rasa项目设置:学习如何启动一个Rasa项目,为高级聊天机器人的开发奠定基础。
- NLU意图定义:定义Confluence和Jira查询的特定自然语言理解(NLU)意图,提高聊天机器人的理解能力。
- 自定义动作开发:创建基于Python的自定义动作,与Confluence和Jira的API进行交互,从而扩展功能。
- 模型训练和测试:了解模型训练过程,确保聊天机器人的泛化能力,并进行迭代测试以持续改进。
本文是作为数据科学博文的一部分发表的。
基础概念
Rasa
Rasa是一个开源的对话人工智能平台,可以帮助开发人员构建强大的上下文感知的聊天机器人。Rasa利用机器学习来理解并响应复杂的用户输入,不仅仅是简单的基于规则的系统。其自然语言处理能力和对话管理工具使得Rasa成为创建智能对话代理的多功能解决方案。
Jira
Jira是由Atlassian开发的一款著名的项目管理和问题追踪工具。在敏捷软件开发中被广泛使用,Jira通过组织任务、追踪问题和使团队的工作流程变得更加高效来促进协作。其丰富的功能,如可自定义的工作流和实时协作,有助于在开发团队和项目经理中的广泛使用。Jira的丰富的RESTful API允许与外部工具和应用的无缝集成,实现实时数据交换和自动化。
Confluence
Confluence同样是由Atlassian开发的一个协同平台,用于组织内的高效文档编写、知识共享和团队合作。它是一个集中化的空间,供团队创建、共享和协作于内容,使其成为项目文档、会议记录和一般知识管理的重要工具。实时协同编辑可以让多个团队成员同时在同一文档上进行工作。通过Confluence强大的搜索能力,可以高效地找到相关信息。Confluence与Jira等Atlassian产品无缝集成,创造了一个统一的项目管理和文档生态系统。
聊天机器人
聊天机器人已成为现代数字互动的重要组成部分,能够提供即时和个性化的响应。由人工智能驱动,聊天机器人能够解释用户的输入、理解上下文,并提供相关信息或执行操作。从客户支持到流程自动化,聊天机器人改变了企业与用户互动的方式,提高了效率和用户体验。聊天机器人利用自然语言处理来识别用户意图,使其能够以上下文相关和准确的方式响应。在Rasa的上下文中,自定义动作是Python函数,扩展了聊天机器人的功能,使其能够执行除简单意图识别之外的任务。
先决条件
在我们深入开发过程之前,请确保您拥有必要的工具和访问权限:
Python和虚拟环境
- 确保您已安装Python。使用以下命令创建并激活虚拟环境:
# 命令提示符(Windows)或终端(macOS/Linux)
python -m venv myenv
# 在Windows上
.\myenv\Scripts\activate
# 在macOS/Linux上
source myenv/bin/activate
安装 Rasa
- 使用以下命令安装Rasa Open Source:
# 命令提示符(Windows)或终端(macOS/Linux)
pip install rasa
Confluence 和 Jira 访问:
- 确保您可以访问 Confluence 和 Jira,并具有通过其 API 获取信息的必要权限。
Confluence API
- 文档链接:Confluence REST API
- 创建 API 的步骤:
- 生成个人访问令牌(PAT):
- 登录到您的 Confluence 实例。
- 转到左下角的个人资料图片,然后选择“个人设置”。
- 点击“创建和管理 API 令牌”。
- 创建一个新的 API 令牌并妥善保管。
2. 检索空间键:您需要空间键才能获取有关 Confluence 页面的信息。在导航到 Confluence 空间时,可以在 URL 中找到它。3. API 端点:Confluence API 端点将基于您的 Confluence 实例的 URL。例如,如果您的 Confluence 托管在 https://your-confluence-instance.com 上,API 端点可能类似于 https://your-confluence-instance.com/rest/api/content。
Jira API
- 文档链接:Jira Cloud REST API
- 创建 API 的步骤:
1. 生成 API 令牌:
- 登录到您的 Jira 实例。
- 转到“帐户设置”或“安全性”(位置可能因您的 Jira 版本而异)。
- 创建一个新的 API 令牌。
2. API 端点:
- Jira API 端点通常基于您的 Jira 实例的 URL。例如,如果您的 Jira 托管在 https://your-jira-instance.com 上,API 端点可能类似于 https://your-jira-instance.com/rest/api/latest/issue。
构建聊天机器人
创建新的 Rasa 项目
设置 Rasa 项目涉及创建目录结构并初始化项目。这一步骤对于组织聊天机器人开发过程非常重要。目录结构组织了聊天机器人的各个方面,从训练数据到自定义操作。了解每个目录的目的对于维护一个组织良好和可扩展的项目至关重要。这种组织方式提升了项目管理,并为未来的扩展和改进提供了清晰的路线图。
# 命令提示符:创建新的 Rasa 项目
mkdir my_rasa_project
cd my_rasa_project
rasa init
为 Confluence 和 Jira 定义 NLU 意图
为了让我们的聊天机器人能够理解关于 Confluence 页面和 Jira 问题的用户查询,我们需要定义自然语言理解(NLU)意图。在 NLU 训练数据中提供与 Confluence 和 Jira 相关的查询示例。训练数据的丰富程度直接影响聊天机器人解释和响应用户查询的能力。例如,考虑添加诸如“Can you provide information on Confluence?”或“Tell me about Jira ticket statuses.”等变体。这可以增强模型的泛化能力,并适应用户可能使用的不同措辞。
# 表示 Rasa 聊天机器人 NLU 组件的训练数据的 YAML 文件
# data/nlu.yml
version: "2.0"
nlu:
- intent: query_confluence
examples: |
- Tell me about Confluence
- How can I find information on Confluence?
- What is a Confluence page?
- intent: query_jira
examples: |
- How do I check my Jira tickets?
- Tell me about Jira ticket status
- What are my open Jira issues?
了解用户输入的差异至关重要。通过提供一组强大的例子,您可以使您的聊天机器人能够有效处理各种查询。考虑将额外的用户角色和场景纳入其中,以确保您的聊天机器人在实际使用中具备多样性。
为Confluence和Jira创建自定义操作
在Rasa中,自定义操作允许我们扩展聊天机器人的功能。创建一个自定义操作(actions.py)来处理关于Confluence页面和Jira工单的查询。这个操作将与各自的API交互以获取信息。深入研究API交互、错误处理和响应处理的复杂性,以确保您的聊天机器人的可靠性和弹性。
扩展您的自定义操作以处理更广泛的场景。例如,您可以为找不到Confluence页面或Jira工单的情况实施响应策略。这种主动的方法增强了用户体验并提供了更有意义的互动。
# Python文件:用于Confluence和Jira的自定义操作# actions.pyimport请求从类型导入任何、文本、字典、列表从rasa_sdk导入操作、跟踪器从rasa_sdk.executor导入CollectingDispatcher类class ActionQueryConfluenceJira(Action): def name(self) -> Text: return "action_query_confluence_jira" def run( self, dispatcher: CollectingDispatcher, tracker: Tracker, domain: Dict[Text, Any] ) -> List[Dict[Text, Any]]: #替换为您的Confluence和Jira详细信息 Confluence_api_url ='YOUR_CONFLUENCE_API_URL/rest/api/content' Jira_api_url ='YOUR_JIRA_API_URL/rest/api/latest/issue' Confluence_space_key ='YOUR_CONFLUENCE_SPACE_KEY' personal_access_token ='YOUR_PERSONAL_ACCESS_TOKEN' user_query = tracker.latest_message.get('text') headers = {'授权':f'Bearer {personal_access_token}'}
#处理Confluence查询 如果tracker.latest_message['intent']['name'] =='query_confluence': params = {'spaceKey':Confluence_space_key,'cql':'text〜"{}"'.format(user_query)} response = requests.get(Confluence_api_url,headers=headers,params=params) 如果响应.status_code == 200: 结果= response.json().get('results', []) 如果结果: 结果=结果[0] 标题= result.get('title', 'No Title') url = result.get('_links', {}). get('webui', '')response_message = "我找到了关于' {标题}' 的信息。您可以在这里找到它 [链接]({url})。"else: response_message = "我在Confluence中找不到有关该主题的任何信息。"else: response_message = "对不起,但检索Confluence中的信息时出现问题。"
#处理Jira查询elif跟踪器.latest_message['intent']['name'] =='query_jira': 参数= {'jql':'text〜"{}"'.format(user_query)} 响应=请求.get(jira_api_url,headers=headers,params=params) 如果响应.status_code == 200: 结果=响应.json() issue_key = result.get('key', 'No Key') 总结= result.get('fields', {}). get('summary', 'No Summary') response_message = f"我找到了有关Jira问题' {issue_key} - {summary}' 的信息。"else: response_message = "对不起,在从Jira检索信息时出现问题。"else: response_message = "我不确定如何处理该查询。" dispatcher.utter_message(response_message)返回[]
持续改进和扩展这些操作,以满足不断发展的用户需求和新的集成可能性。
配置Rasa
配置您的Rasa项目对于确定聊天机器人的行为至关重要。config.yml文件包含用于训练NLU和对话管理模型的设置。根据您的独特需求,探索不同的配置并进行实验,以优化您的聊天机器人的性能。
配置文件作为您的聊天机器人行为的控制中心。深入研究各种参数,尝试不同的机器学习流水线,并微调设置,以实现精确性和效率之间的理想平衡。
# config.ymllanguage: "en"pipeline: - name: "WhitespaceTokenizer" - name: "RegexFeaturizer" - name: "CRFEntityExtractor" - name: "CountVectorsFeaturizer" - name: "EmbeddingIntentClassifier"
训练Rasa模型
训练Rasa模型对于准备聊天机器人应对真实场景至关重要。训练过程将模型暴露给训练数据,使其能够从示例中学习和泛化。定期回顾和更新训练数据以提高模型精度。
考虑实施一个强大的版本控制系统来管理训练数据。这可确保追溯性,并帮助识别对聊天机器人性能改进或挑战有贡献的特定数据集。
# 命令提示符(Windows)或终端(macOS/Linux)rasa train
运行Rasa Action服务器
Rasa动作服务器负责执行自定义动作。运行专用的动作服务器可确保您的聊天机器人的反应速度,使其能够执行复杂任务,如从Confluence和Jira获取实时数据。
随着聊天机器人的发展,探索动作服务器的可扩展性。考虑负载均衡和冗余选项,以确保在高峰使用期间实现无缝的用户体验。
# 命令提示符:运行Rasa动作服务器rasa run actions
与聊天机器人交互
在Rasa动作服务器运行的情况下,打开一个新的终端并启动Rasa shell。这个交互式shell有助于与聊天机器人进行交流,使您能够测试各种场景,并评估其对不同查询的响应。迭代测试对于识别改进和优化的方向至关重要。
rasa shell
示例输出:
用户:我们当前项目的进展如何?聊天机器人:目前的项目进展顺利。我们已经完成80%的任务。用户:您能提供关于我们在Confluence上的项目文档的信息吗?聊天机器人:项目文档在Confluence上可供查阅。您可以在这里找到详细信息[链接到Confluence页面]。用户:为即将到来的冲刺计划创建一个新的Jira问题。聊天机器人:即将到来的冲刺计划的新Jira问题已成功创建。问题ID为PROJ-123。还有其他问题要问吗?
在完善聊天机器人时,考虑探索高级功能,如实体识别,以从用户查询中提取特定信息。
用途
将Confluence和Jira整合到Rasa驱动的聊天机器人中,展现了一系列引人注目的用途,重新定义了协作和项目管理:
1. 项目管理:与Jira整合的聊天机器人可以实时更新项目状态、问题跟踪和冲刺进度。您可以查询特定的Jira问题、即将到期的截止日期和团队分配情况。
2. 知识库访问:与Confluence整合的聊天机器人可以快速访问文档、常见问题和与项目相关的知识。
3. 自动报告:聊天机器人可以生成关于项目里程碑、任务完成和整体团队生产力的自动化报告。通过减少手动工作和简化任务管理流程来提高效率。
风险与注意事项
确保安全处理个人访问令牌和API密钥,以防止未经授权访问Confluence和Jira数据。在通过聊天机器人分享信息时要谨慎,特别是涉及敏感项目细节或用户数据时。用户可能需要关于如何有效与聊天机器人交互的指导。提供清晰的说明和示例以增强用户体验。在自定义动作中实施强大的错误处理机制,以优雅地处理在找不到Confluence页面或Jira问题的情况下的情况。
结论
总之,这篇全面指南引导您构建一款先进的、定制化的Rasa驱动聊天机器人,以解决与Confluence页面和Jira工单有关的用户查询。本文通过探索将Confluence和Jira整合到聊天机器人中,阐明了简化信息检索和促进协同工作环境的重要优势。从设置Rasa项目和定义NLU意图到开发与API交互的自定义动作,您将全面了解聊天机器人的创建过程。该指南强调了配置Rasa以获得最佳性能、使用多样示例进行模型训练以及持续改进的迭代测试。这种方法不仅增强了协作内容创建和项目管理的可访问性,还为在不断变化的会话AI领域进一步探索和定制奠定了基础。
要点
- 通过使用 Rasa 构建高级聊天机器人,重点关注 Confluence 和 Jira 集成的定制应用,获得实用的见解。
- 了解集成 Confluence 和 Jira 的好处,促进信息检索的简化,营造一种协调高效的工作环境。
- 探索优化 Rasa 项目的配置技巧,以改善自然语言理解(NLU)和对话管理。
- 采用迭代测试和模型训练进行持续改进,确保聊天机器人随时间的变化而适应能力和有效性。
常见问题
本文中显示的媒体不归 Analytics Vidhya 所有,仅由作者酌情使用。