<!-- 
RSS generated by JIRA (9.4.2#940002-sha1:46d1a51de284217efdcb32434eab47a99af2938b) at Mon Feb 12 10:23:55 CET 2024

It is possible to restrict the fields that are returned in this document by specifying the 'field' parameter in your request.
For example, to request only the issue key and summary append 'field=key&field=summary' to the URL of your request.
-->
<rss version="0.92" >
<channel>
    <title>Magnolia - Issue tracker</title>
    <link>https://jira.magnolia-cms.com</link>
    <description>This file is an XML representation of an issue</description>
    <language>en-uk</language>    <build-info>
        <version>9.4.2</version>
        <build-number>940002</build-number>
        <build-date>19-01-2023</build-date>
    </build-info>


<item>
            <title>[OPENAIINT-14] Add documentation for Azure openai services</title>
                <link>https://jira.magnolia-cms.com/browse/OPENAIINT-14</link>
                <project id="18280" key="OPENAIINT">OpenAI Integrations </project>
                    <description>&lt;p&gt;We could/should add a way to the documentation how to use our Openai module with Azure Openai services. Maybe we could even add the special filter for Azure to our code base and just mention how to change the endpoint config.&lt;/p&gt;

&lt;p&gt;Decoration:&lt;/p&gt;
&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;
baseUrl: https:&lt;span class=&quot;code-comment&quot;&gt;//magnolia-azure-openai.openai.azure.com/openai/deployments/magnolia-azure-openai
&lt;/span&gt;components:
  authorization:
    class: info.magnolia.ai.automations.&lt;span class=&quot;code-keyword&quot;&gt;rest&lt;/span&gt;.RestAzureClientAuthorizationFilter
restCalls:
  completions:
    queryParameters:
      api-version: 2023-07-01-preview
  chatCompletions:
    queryParameters:
      api-version: 2023-07-01-preview &lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;

&lt;p&gt;Custom filter to set authorization token:&lt;/p&gt;
&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;
/**
 * This file Copyright (c) 2023 Magnolia International
 * Ltd.  (http:&lt;span class=&quot;code-comment&quot;&gt;//www.magnolia-cms.com). All rights reserved.
&lt;/span&gt; *
 *
 * This program and the accompanying materials are made
 * available under the terms of the Magnolia Network Agreement
 * which accompanies &lt;span class=&quot;code-keyword&quot;&gt;this&lt;/span&gt; distribution, and is available at
 * http:&lt;span class=&quot;code-comment&quot;&gt;//www.magnolia-cms.com/mna.html
&lt;/span&gt; *
 * Any modifications to &lt;span class=&quot;code-keyword&quot;&gt;this&lt;/span&gt; file must keep &lt;span class=&quot;code-keyword&quot;&gt;this&lt;/span&gt; entire header
 * intact.
 *
 */
&lt;span class=&quot;code-keyword&quot;&gt;package&lt;/span&gt; info.magnolia.services.&lt;span class=&quot;code-keyword&quot;&gt;rest&lt;/span&gt;;
&#8203;
&lt;span class=&quot;code-keyword&quot;&gt;import&lt;/span&gt; info.magnolia.ai.automations.OpenAIAutomationsModule;
&lt;span class=&quot;code-keyword&quot;&gt;import&lt;/span&gt; info.magnolia.ai.automations.OpenAICredentialsProvider;
&lt;span class=&quot;code-keyword&quot;&gt;import&lt;/span&gt; lombok.extern.slf4j.Slf4j;
&lt;span class=&quot;code-keyword&quot;&gt;import&lt;/span&gt; org.apache.commons.lang3.StringUtils;
&#8203;
&lt;span class=&quot;code-keyword&quot;&gt;import&lt;/span&gt; javax.inject.Inject;
&lt;span class=&quot;code-keyword&quot;&gt;import&lt;/span&gt; javax.ws.rs.client.ClientRequestContext;
&lt;span class=&quot;code-keyword&quot;&gt;import&lt;/span&gt; javax.ws.rs.client.ClientRequestFilter;
&lt;span class=&quot;code-keyword&quot;&gt;import&lt;/span&gt; java.io.IOException;
&#8203;
/**
 * The filter adds the api-key header to the requests
 */
@Slf4j
&lt;span class=&quot;code-keyword&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;code-keyword&quot;&gt;class &lt;/span&gt;RestAzureClientAuthorizationFilter &lt;span class=&quot;code-keyword&quot;&gt;implements&lt;/span&gt; ClientRequestFilter {
&#8203;
    &lt;span class=&quot;code-keyword&quot;&gt;private&lt;/span&gt; &lt;span class=&quot;code-keyword&quot;&gt;final&lt;/span&gt; OpenAIAutomationsModule openAIAutomationsModule;
    &lt;span class=&quot;code-keyword&quot;&gt;private&lt;/span&gt; &lt;span class=&quot;code-keyword&quot;&gt;final&lt;/span&gt; OpenAICredentialsProvider openAICredentialsProvider;
    &lt;span class=&quot;code-keyword&quot;&gt;private&lt;/span&gt; &lt;span class=&quot;code-keyword&quot;&gt;final&lt;/span&gt; &lt;span class=&quot;code-object&quot;&gt;String&lt;/span&gt; API_KEY = &lt;span class=&quot;code-quote&quot;&gt;&quot;api-key&quot;&lt;/span&gt;;
&#8203;
    @Inject
    &lt;span class=&quot;code-keyword&quot;&gt;public&lt;/span&gt; RestAzureClientAuthorizationFilter(OpenAIAutomationsModule openAIAutomationsModule, OpenAICredentialsProvider openAICredentialsProvider) {
        &lt;span class=&quot;code-keyword&quot;&gt;this&lt;/span&gt;.openAIAutomationsModule = openAIAutomationsModule;
        &lt;span class=&quot;code-keyword&quot;&gt;this&lt;/span&gt;.openAICredentialsProvider = openAICredentialsProvider;
    }
&#8203;
    @Override
    &lt;span class=&quot;code-keyword&quot;&gt;public&lt;/span&gt; void filter(ClientRequestContext requestContext) &lt;span class=&quot;code-keyword&quot;&gt;throws&lt;/span&gt; IOException {
        requestContext.getHeaders().add(API_KEY, getAzureApiKey());
    }
&#8203;
    &lt;span class=&quot;code-keyword&quot;&gt;public&lt;/span&gt; &lt;span class=&quot;code-object&quot;&gt;String&lt;/span&gt; getAzureApiKey() {
        &lt;span class=&quot;code-object&quot;&gt;String&lt;/span&gt; bearerToken = openAICredentialsProvider.getAuthorization(openAIAutomationsModule.getApiKey());
        &lt;span class=&quot;code-keyword&quot;&gt;if&lt;/span&gt; (bearerToken != &lt;span class=&quot;code-keyword&quot;&gt;null&lt;/span&gt; &amp;amp;&amp;amp; bearerToken.startsWith(&lt;span class=&quot;code-quote&quot;&gt;&quot;Bearer&quot;&lt;/span&gt;)) {
            bearerToken = StringUtils.replace(bearerToken, &lt;span class=&quot;code-quote&quot;&gt;&quot;Bearer &quot;&lt;/span&gt;, &quot;&quot;);
        }
&#8203;
        &lt;span class=&quot;code-keyword&quot;&gt;return&lt;/span&gt; bearerToken;
    }
&#8203;
}&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;</description>
                <environment></environment>
        <key id="140935">OPENAIINT-14</key>
            <summary>Add documentation for Azure openai services</summary>
                <type id="4" iconUrl="https://jira.magnolia-cms.com/secure/viewavatar?size=xsmall&amp;avatarId=10890&amp;avatarType=issuetype">Improvement</type>
                                            <priority id="6" iconUrl="https://jira.magnolia-cms.com/images/icons/priorities/neutral.gif">Neutral</priority>
                        <status id="6" iconUrl="https://jira.magnolia-cms.com/images/icons/statuses/closed.png" description="The issue is considered finished, the resolution is correct. Issues which are not closed can be reopened.">Closed</status>
                    <statusCategory id="3" key="done" colorName="success"/>
                                    <resolution id="1">Fixed</resolution>
                                        <assignee username="-1">Unassigned</assignee>
                                    <reporter username="tobias.kerschbaum">Tobias Kerschbaum</reporter>
                        <labels>
                    </labels>
                <created>Thu, 26 Oct 2023 08:51:53 +0200</created>
                <updated>Thu, 21 Dec 2023 16:44:53 +0100</updated>
                            <resolved>Thu, 21 Dec 2023 16:44:52 +0100</resolved>
                                                    <fixVersion>1.0.7</fixVersion>
                                        <due></due>
                            <votes>0</votes>
                                    <watches>3</watches>
                                                                                                                <comments>
                            <comment id="382264" author="minh.nguyen" created="Thu, 26 Oct 2023 09:18:15 +0200"  >&lt;p&gt;Ref doc from Azure:&lt;br/&gt;
&lt;a href=&quot;https://learn.microsoft.com/en-us/azure/ai-services/openai/chatgpt-quickstart?tabs=command-line&amp;amp;pivots=rest-api&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://learn.microsoft.com/en-us/azure/ai-services/openai/chatgpt-quickstart?tabs=command-line&amp;amp;pivots=rest-api&lt;/a&gt;&lt;/p&gt;

&lt;p&gt;Once your application is approved, you can try out here: &lt;a href=&quot;https://oai.azure.com/&quot; class=&quot;external-link&quot; target=&quot;_blank&quot; rel=&quot;nofollow noopener&quot;&gt;https://oai.azure.com/&lt;/a&gt;&lt;br/&gt;
 &lt;span class=&quot;image-wrap&quot; style=&quot;&quot;&gt;&lt;a id=&quot;118030_thumb&quot; href=&quot;https://jira.magnolia-cms.com/secure/attachment/118030/118030_SCR-20231026-mrbq.png&quot; title=&quot;SCR-20231026-mrbq.png&quot; file-preview-type=&quot;image&quot; file-preview-id=&quot;118030&quot; file-preview-title=&quot;SCR-20231026-mrbq.png&quot;&gt;&lt;img src=&quot;https://jira.magnolia-cms.com/secure/thumbnail/118030/_thumb_118030.png&quot; style=&quot;border: 0px solid black&quot; role=&quot;presentation&quot;/&gt;&lt;/a&gt;&lt;/span&gt;&lt;br/&gt;
 &lt;span class=&quot;image-wrap&quot; style=&quot;&quot;&gt;&lt;a id=&quot;118031_thumb&quot; href=&quot;https://jira.magnolia-cms.com/secure/attachment/118031/118031_SCR-20231026-mslg.png&quot; title=&quot;SCR-20231026-mslg.png&quot; file-preview-type=&quot;image&quot; file-preview-id=&quot;118031&quot; file-preview-title=&quot;SCR-20231026-mslg.png&quot;&gt;&lt;img src=&quot;https://jira.magnolia-cms.com/secure/thumbnail/118031/_thumb_118031.png&quot; style=&quot;border: 0px solid black&quot; role=&quot;presentation&quot;/&gt;&lt;/a&gt;&lt;/span&gt; &lt;/p&gt;

&lt;div class=&quot;code panel&quot; style=&quot;border-width: 1px;&quot;&gt;&lt;div class=&quot;codeContent panelContent&quot;&gt;
&lt;pre class=&quot;code-java&quot;&gt;
curl &lt;span class=&quot;code-quote&quot;&gt;&quot;https:&lt;span class=&quot;code-comment&quot;&gt;//magnolia-azure-openai.openai.azure.com/openai/deployments/magnolia-azure-openai/chat/completions?api-version=2023-07-01-preview&quot;&lt;/span&gt; \
&lt;/span&gt;  -H &lt;span class=&quot;code-quote&quot;&gt;&quot;Content-Type: application/json&quot;&lt;/span&gt; \
  -H &lt;span class=&quot;code-quote&quot;&gt;&quot;api-key: YOUR_API_KEY&quot;&lt;/span&gt; \
  -d &quot;{
  \&lt;span class=&quot;code-quote&quot;&gt;&quot;messages\&quot;&lt;/span&gt;: [{\&lt;span class=&quot;code-quote&quot;&gt;&quot;role\&quot;&lt;/span&gt;:\&lt;span class=&quot;code-quote&quot;&gt;&quot;system\&quot;&lt;/span&gt;,\&lt;span class=&quot;code-quote&quot;&gt;&quot;content\&quot;&lt;/span&gt;:\&lt;span class=&quot;code-quote&quot;&gt;&quot;You are an AI assistant that helps people find information.\&quot;&lt;/span&gt;}],
  \&lt;span class=&quot;code-quote&quot;&gt;&quot;max_tokens\&quot;&lt;/span&gt;: 800,
  \&lt;span class=&quot;code-quote&quot;&gt;&quot;temperature\&quot;&lt;/span&gt;: 0.7,
  \&lt;span class=&quot;code-quote&quot;&gt;&quot;frequency_penalty\&quot;&lt;/span&gt;: 0,
  \&lt;span class=&quot;code-quote&quot;&gt;&quot;presence_penalty\&quot;&lt;/span&gt;: 0,
  \&lt;span class=&quot;code-quote&quot;&gt;&quot;top_p\&quot;&lt;/span&gt;: 0.95,
  \&lt;span class=&quot;code-quote&quot;&gt;&quot;stop\&quot;&lt;/span&gt;: &lt;span class=&quot;code-keyword&quot;&gt;null&lt;/span&gt;
}&quot;
&lt;/pre&gt;
&lt;/div&gt;&lt;/div&gt;


&lt;p&gt;Thank you.&lt;/p&gt;</comment>
                    </comments>
                    <attachments>
                            <attachment id="118030" name="SCR-20231026-mrbq.png" size="471579" author="minh.nguyen" created="Thu, 26 Oct 2023 09:15:46 +0200"/>
                            <attachment id="118031" name="SCR-20231026-mslg.png" size="423548" author="minh.nguyen" created="Thu, 26 Oct 2023 09:17:50 +0200"/>
                    </attachments>
                <subtasks>
                    </subtasks>
                <customfields>
                                                                            <customfield id="customfield_14166" key="com.okapya.jira.checklist:checklist">
                        <customfieldname>Acceptance criteria</customfieldname>
                        <customfieldvalues>
                            
        <checklist>
        <![CDATA[
                            




                
                                    <div class="o-completion" style="display: flex; flex-shrink: 0;"><span  class="aui-lozenge aui-lozenge-complete" style="font-size: 12px; font-weight: normal; display: flex; flex-direction: row; align-items: center;" ><span style="padding-right: 4px; vertical-align: middle;"><svg width="15" height="15" viewBox="0 0 15 15" xmlns="http://www.w3.org/2000/svg" fill="white"><path clip-rule="evenodd" d="m10.41037,3.42544l-7.86501,0c-0.72395,0 -1.31084,0.58688 -1.31084,1.31084l0,7.86508c0,0.7239 0.58689,1.3108 1.31084,1.3108l7.86501,0c0.724,0 1.3109,-0.5869 1.3109,-1.3108l0,-7.86508c0,-0.72396 -0.5869,-1.31084 -1.3109,-1.31084zm-7.86501,-0.65542c-1.08593,0 -1.96626,0.88032 -1.96626,1.96626l0,7.86508c0,1.0859 0.88033,1.9662 1.96626,1.9662l7.86501,0c1.086,0 1.9663,-0.8803 1.9663,-1.9662l0,-7.86508c0,-1.08594 -0.8803,-1.96626 -1.9663,-1.96626l-7.86501,0z" fill-rule="evenodd"/><path d="m5.09049,10.18526l-1.82767,-1.82766l-0.78479,0.78479l2.61246,2.61246l5.38758,-5.38754l-0.78483,-0.78479l-4.60275,4.60274z"/></svg></span><span>Empty</span></span></div>
                        ]]>
    </checklist>


                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                <customfield id="customfield_10111" key="com.atlassian.jira.toolkit:reporterdomain">
                        <customfieldname>Company</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>magnolia-cms.com</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                <customfield id="customfield_10031" key="com.atlassian.jira.ext.charting:firstresponsedate">
                        <customfieldname>Date of First Response</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>Thu, 26 Oct 2023 09:18:15 +0200</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_12730" key="com.atlassian.jira.plugins.jira-development-integration-plugin:devsummary">
                        <customfieldname>Development</customfieldname>
                        <customfieldvalues>
                            
                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_14151" key="com.atlassian.jira.toolkit:message">
                        <customfieldname>Docu info</customfieldname>
                        <customfieldvalues>
                            
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                            <customfield id="customfield_10061" key="com.atlassian.jira.toolkit:lastusercommented">
                        <customfieldname>Last comm is not jira-dev</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>true</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10071" key="com.atlassian.jira.toolkit:lastupdaterorcommenter">
                        <customfieldname>Last participant</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>sgeschke</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_13136" key="com.atlassian.jira.toolkit:LastCommentDate">
                        <customfieldname>Last public comment date</customfieldname>
                        <customfieldvalues>
                            15 weeks, 4 days ago
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                            <customfield id="customfield_10020" key="com.atlassian.jira.toolkit:attachments">
                        <customfieldname>Number of attachments</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>2.0</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10150" key="com.atlassian.jira.toolkit:comments">
                        <customfieldname>Number of comments</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>1.0</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                        <customfield id="customfield_10011" key="com.atlassian.jira.toolkit:participants">
                        <customfieldname>Participants</customfieldname>
                        <customfieldvalues>
                                        <customfieldvalue>minh.nguyen</customfieldvalue>
            <customfieldvalue>tobias.kerschbaum</customfieldvalue>
    
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                <customfield id="customfield_10833" key="com.pyxis.greenhopper.jira:gh-lexo-rank">
                        <customfieldname>Rank</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>0|y0b83m:</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                <customfield id="customfield_10244" key="com.pyxis.greenhopper.jira:gh-global-rank">
                        <customfieldname>Rank (Obsolete)</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>9223372036854775807</customfieldvalue>
                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                    <customfield id="customfield_14145" key="com.intenso.jira.issue-templates:issue-templates-customfield">
                        <customfieldname>Template</customfieldname>
                        <customfieldvalues>
                            


                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                            <customfield id="customfield_15131" key="com.onresolve.jira.groovy.groovyrunner:scripted-field">
                        <customfieldname>Time in Discovery</customfieldname>
                        <customfieldvalues>
                            <customfieldvalue>0</customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                        <customfield id="customfield_13933" key="com.atlassian.jira.plugin.system.customfieldtypes:select">
                        <customfieldname>Urgency (resolution)</customfieldname>
                        <customfieldvalues>
                                <customfieldvalue key="15724"><![CDATA[Normal]]></customfieldvalue>

                        </customfieldvalues>
                    </customfield>
                                                                                                                                                                                                                                                                                                                                                                                                                </customfields>
    </item>
</channel>
</rss>