AIGC|把Azure Open AI和Jira集成起来,实现智能化项目管理

news/2024/5/20 8:39:52 标签: AIGC, azure, 人工智能, openAI, 项目管理

目录

一、Jira与Azure OpenAI介绍

二、Jira和Azure OpenAI的REST API对接

三、利用Chats插件实现对话的过程

四、总结


一、Jira与Azure OpenAI介绍

Jira是一款由澳大利亚公司Atlassian开发的项目管理工具,主要用于追踪问题、管理需求、构建报告和管理故障等事项。Jira被广泛应用于软件开发、敏捷项目管理、IT服务管理和业务流程管理等领域。Jira支持插件扩展,可扩展不同类型的项目管理工作。

Azure OpenAI是由微软提供的基于云计算的自然语言处理平台。这个平台通过领先的NLP模型和工具,为各种用户提供了一系列功能,包括但不限于语音转文本、文本翻译、自动摘要、实体识别、情感分析和语义分析等。这些功能都是由最先进的AI技术驱动的,旨在提高人工智能与人类之间的交互流畅程度,并为企业提供高效的智能化解决方案。

二、Jira和Azure OpenAI的REST API对接

Jira的插件扩展功能提供了一个很好的平台,允许开发人员创建自定义功能插件来扩展Jira的功能。因此,如果想要将Azure OpenAI集成到Jira中,我们可以利用Jira插件系统开发一个插件,插件通过REST API与Azure OpenAI交互,并响应用户的提问。

在Jira和Azure OpenAI集成前,我们需要创建Azure账户并申请一个Azure OpenAI资源,申请完成后可以获得一个有效的API密钥。

图片

然后我们选取一个AI模型(本文以GPT-35-turbo为例),创建并发布成功后就可以使用了。

图片

本文通过调用Azure OpenAI服务提供的Chat completions接口,向OpenAI模型发出自然语言查询,并获得模型的自动完成功能,实现了一个简单的例子。

图片

具体流程为:将用户提出的问题封装成报文,向Chat completions 接口发送POST请求,Azure OpenAI模型会自动完成语句并返回一个答案。

private String doChatCompletions(String content) {
        if (StringUtils.isEmpty(content)) {
            return "";
        }

        String resourceName = "aoai-5";
        String deploymentId = "jiraChatGpt";
        String apiKey = "YOUR_API_KEY";

        String chatCompletions = AzureOpenAiUtil.chatCompletions(resourceName, deploymentId, apiKey, content);
        return getChatCompletionsContent(chatCompletions);
    }

/**
     * Create completions for chat messages with the ChatGPT and GPT-4 models.
     * @param resourceName
     * @param deploymentId
     * @param apiKey
     * @param content
     * @return
     */
    public static String chatCompletions(String resourceName, String deploymentId, String apiKey, String content) {
        String url = getUrl(resourceName, CHAT_COMPLETIONS_URL, deploymentId, API_VERSION_2023_03_15_PREVIEW);
        List<JSONObject> jsonObjectList = new ArrayList<>();
        JSONObject jsonMessages = new JSONObject();
        JSONObject jsonObject = new JSONObject();
        try {
            jsonObject.put("role", "user");
            jsonObject.put("content", content);
            jsonObjectList.add(jsonObject);
            jsonMessages.put("messages", jsonObjectList);
        } catch (JSONException e) {
           LOG.warn(e);
        }

        return sendPostRequest(apiKey, url, jsonMessages.toString());
    }

三、利用Chats插件实现对话的过程

Chats是一款Jira插件,可用于在Jira用户之间进行聊天。使用Chats插件,在Jira用户之间创建或加入一个聊天窗口,这样用户可以快速交换信息和协作。

如果将Azure OpenAI集成到Chats中,则可以将OpenAI自动完成的语句转换为聊天消息,并在聊天过程中进行实时转发,实现自动化对话。

为了演示如何将Azure OpenAI集成到Jira的Chats插件中,我基于Jira和Azure OpenAI开发了一个样例插件,插件将使用上一节封装的Chat completions接口和Azure OpenAI模型进行对话。

图片

Chats插件对话的实质是在Issue上添加评论,这里利用Jira自带的WebHooks监听器,监听创建评论(Comment created)事件来触发Azure OpenAI接口的调用流程。

图片

最后将Chat completions接口返回的语句,添加到Issue的评论里,实现聊天对话过程。

public Long createComment(String issueKey, String postBody) throws IOException,JSONException {
        HashMap<String, String> map = new HashMap<>();
        map.put("Authorization", "Basic " + BASE64.encodeToString(Const.JIRAUSER.getBytes(StandardCharsets.UTF_8)));

        String url = Const.JIRAURL + "/rest/api/2/issue/" + issueKey + "/comment";
        String comment = RestApiUtil.sendPostRequest(url, postBody, map);
        JSONObject commentObj = new JSONObject(comment);
        return commentObj.getLong("id");
    }

图片

PS:防止死循环,忽略AI身份admin用户的评论。

四、总结

本文介绍了如何将Jira和Azure OpenAI集成,以实现自然语言处理功能。通过Jira插件和Azure OpenAI 的REST  API将Azure OpenAI集成到Jira中,利用Jira的WebHooks监听器和Chats插件实现自动化对话的过程。

希望这篇文章能够帮助大家更好地了解Jira和Azure OpenAI,并帮助大家在实践中使用这两款产品。

作者:李其仿 | 资深后端开发工程师

版权声明:本文由神州数码云基地团队整理撰写,若转载请注明出处。

公众号搜索神州数码云基地,了解更多AI相关技术干货。


http://www.niftyadmin.cn/n/5144328.html

相关文章

数据结构-栈应用括号匹配

1、顺序栈的定义 2、顺序栈的入栈&#xff0c;出栈&#xff0c;取出栈顶元素&#xff0c;匹配判断函数 3、顺序栈的运行测试 4、实现代码 #include<iostream> using namespace std; #define OK 1 #define ERROR 0 #define OVERFLOW -2 typedef int Status; #define M…

Windows10电脑如何测试宽带网速是多少?

Windows10电脑如何测试宽带网速是多少&#xff1f; 1、Windows10电脑上安装并打开360安全卫士&#xff1b; 2、在360安全卫士搜索框内找到宽带测速器&#xff1b; 3、点击打开360宽带测速器&#xff0c;开始测试本机网速&#xff1b; 4、耐心等待360宽带测速器完成&#xff0c…

kvm--网桥搭建

确定需要桥接的网卡 查看ip地址&#xff1a; 这里使用网卡enp125s0f2做桥接网卡 修改网卡配置 操作系统&#xff1a;kylinv10SP1(Tercel) 查看网卡配置文件&#xff1a; cd /etc/sysconfig/network-scripts/ ls 备份网卡文件 cp ifcfg-enp125s0f2 ifcfg-enp125s0f2.bak …

RFID系统提升物流信息管理效率应用解决方案

一、物流仓储管理方法 1、在仓库的进出口处安装RFID读写器&#xff0c;当粘贴RFID标签的电动叉车和货物进入装载区时&#xff0c;RFID读写器会自动检索并记录信息&#xff0c;当它们离开物流配送中心时&#xff0c;入口处的RFID读写器会读取标签信息&#xff0c;并生成出货单&…

网络中一些重要的协议和技术

全文目录 DNSDNS的基本概念&#xff1a;DNS的工作流程&#xff1a; ICMP 协议ICMP的基本概念&#xff1a;常见的ICMP消息类型&#xff1a;ICMP与IP的关系&#xff1a;为什么ICMP是重要的&#xff1f; NAT协议代理服务器正向代理和反向代理 NAT和代理服务器的区别 DNS DNS (域名…

C#开发的OpenRA游戏之选择建筑物显示状态信息

C#开发的OpenRA游戏之选择建筑物显示状态信息 前面已经分析了金钱系统,有了钱之后,就可以放任地建造万物了。 在建造的过程中,当你选择建筑物时,就可以看到当前建筑物的健康信息和制造当前物品的进度,如下图所示: 从上图可以看到最上面的进度条是这个建筑物的健康程度,…

Android Studio创建项目后Gradle(构建)项目很慢问题解决

Android Studio创建项目后Gradle(构建)项目很慢问题解决 在使用Android Studio创建项目时&#xff0c;会自动从网上下载相关依赖。由于是访问国外服务器&#xff0c;会出现构建项目时下载依赖很慢的问题。为了解决该问题&#xff0c;需要在settings.gradle(或者settings.gradl…

elemenui puls el-menu default-active不更新问题

有时候我们的目录结构会重新刷新&#xff0c;但是default-active始终保持原来的下标 1.一开始我以为是我给定的属性或者值不对&#xff0c;后来经过一番排查发现根本不是 那我们该如何解决那&#xff1f; 方案1. 通过nextTick去重新赋值方案2. 重写赋值menu方案3. v2和v3都可以…