目录
二、Jira和Azure OpenAI的REST API对接
一、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相关技术干货。
原文链接:https://blog.csdn.net/CBGCampus/article/details/134183435?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522169900313816800182720168%2522%252C%2522scm%2522%253A%252220140713.130102334.pc%255Fblog.%2522%257D&request_id=169900313816800182720168&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~blog~first_rank_ecpm_v1~times_rank-3-134183435-null-null.nonecase&utm_term=%E6%BE%B3%E6%B4%B22023