<style>p { margin: 0; }span.fr-emoticon.fr-emoticon-img { background-repeat: no-repeat !important; font-size: inherit; height: 1em; width: 1em; min-height: 20px; min-width: 20px; display: inline-block; margin: -0.1em 0.1em 0.1em; line-height: 1; vertical-align: middle; } span.fr-emoticon { font-weight: normal; font-family: "Apple Color Emoji", "Segoe UI Emoji", "NotoColorEmoji", "Segoe UI Symbol", "Android Emoji", "EmojiSymbols"; display: inline; line-height: 0; } blockquote { border-left: solid 2px #5e35b1; color: #5e35b1; margin-left:0; padding-left:5px;}blockquote blockquote{ border-color: #00bcd4; color: #00bcd4;}blockquote blockquote blockquote{ border-color: #43a047; color: #43a047;} table.grid{ border-collapse: collapse;} table.grid td, table.grid th { border: 1px solid #ddd;} .fr-fic.fr-dib{ display: block; margin: 5px auto;}.fr-fic.fr-dib.fr-fir{ text-align: right; margin: 5px 0 5px auto;}.fr-fic.fr-dib.fr-fil{ text-align: left; margin: 5px auto 5px 0;}.fr-fic.fr-dii{ float: none; margin: 5px auto;}.fr-fic.fr-dii.fr-fil{ float: left; margin: 5px auto;}.fr-fic.fr-dii.fr-fir{ float: right; margin: 5px auto;}img.fr-dib.fr-fir { margin-right: 0; text-align: right;}img.fr-dib.fr-fil { margin-left: 0; text-align: left;}img.fr-dib { margin: 5px auto; display: block; float: none;}img.fr-bordered { box-sizing: content-box; border: solid 5px #CCC;}img.fr-shadow { box-shadow: 10px 10px 5px 0px #cccccc;}img.fr-rounded { border-radius: 10px; -moz-border-radius: 10px; -webkit-border-radius: 10px; -moz-background-clip: padding; -webkit-background-clip: padding-box; background-clip: padding-box;}</style><style>
p {
margin: 0;
}
span.fr-emoticon.fr-emoticon-img {
background-repeat: no-repeat !important; font-size: inherit; height: 1em; width: 1em; min-height: 20px; min-width: 20px; display: inline-block; margin: -0.1em 0.1em 0.1em; line-height: 1; vertical-align: middle;
}
span.fr-emoticon {
font-weight: normal; font-family: "Apple Color Emoji", "Segoe UI Emoji", "NotoColorEmoji", "Segoe UI Symbol", "Android Emoji", "EmojiSymbols"; display: inline; line-height: 0;
}
blockquote {
border-left: solid 2px #5e35b1; color: #5e35b1; margin-left: 0; padding-left: 5px;
}
blockquote blockquote {
border-color: #00bcd4; color: #00bcd4;
}
blockquote blockquote blockquote {
border-color: #43a047; color: #43a047;
}
table.grid {
border-collapse: collapse;
}
table.grid td,
table.grid th {
border: 1px solid #ddd;
}
.fr-fic.fr-dib {
display: block; margin: 5px auto;
}
.fr-fic.fr-dib.fr-fir {
text-align: right; margin: 5px 0 5px auto;
}
.fr-fic.fr-dib.fr-fil {
text-align: left; margin: 5px auto 5px 0;
}
.fr-fic.fr-dii {
float: none; margin: 5px auto;
}
.fr-fic.fr-dii.fr-fil {
float: left; margin: 5px auto;
}
.fr-fic.fr-dii.fr-fir {
float: right; margin: 5px auto;
}
img.fr-dib.fr-fir {
margin-right: 0; text-align: right;
}
img.fr-dib.fr-fil {
margin-left: 0; text-align: left;
}
img.fr-dib {
margin: 5px auto; display: block; float: none;
}
img.fr-bordered {
box-sizing: content-box; border: solid 5px #CCC;
}
img.fr-shadow {
box-shadow: 10px 10px 5px 0px #cccccc;
}
img.fr-rounded {
border-radius: 10px; -moz-border-radius: 10px; -webkit-border-radius: 10px; -moz-background-clip: padding; -webkit-background-clip: padding-box; background-clip: padding-box;
}
</style><style>
p {
margin: 0;
}
span.fr-emoticon.fr-emoticon-img {
background-repeat: no-repeat !important; font-size: inherit; height: 1em; width: 1em; min-height: 20px; min-width: 20px; display: inline-block; margin: -0.1em 0.1em 0.1em; line-height: 1; vertical-align: middle;
}
span.fr-emoticon {
font-weight: normal; font-family: "Apple Color Emoji", "Segoe UI Emoji", "NotoColorEmoji", "Segoe UI Symbol", "Android Emoji", "EmojiSymbols"; display: inline; line-height: 0;
}
blockquote {
border-left: solid 2px #5e35b1; color: #5e35b1; margin-left: 0; padding-left: 5px;
}
blockquote blockquote {
border-color: #00bcd4; color: #00bcd4;
}
blockquote blockquote blockquote {
border-color: #43a047; color: #43a047;
}
table.grid {
border-collapse: collapse;
}
table.grid td,
table.grid th {
border: 1px solid #ddd;
}
.fr-fic.fr-dib {
display: block; margin: 5px auto;
}
.fr-fic.fr-dib.fr-fir {
text-align: right; margin: 5px 0 5px auto;
}
.fr-fic.fr-dib.fr-fil {
text-align: left; margin: 5px auto 5px 0;
}
.fr-fic.fr-dii {
float: none; margin: 5px auto;
}
.fr-fic.fr-dii.fr-fil {
float: left; margin: 5px auto;
}
.fr-fic.fr-dii.fr-fir {
float: right; margin: 5px auto;
}
img.fr-dib.fr-fir {
margin-right: 0; text-align: right;
}
img.fr-dib.fr-fil {
margin-left: 0; text-align: left;
}
img.fr-dib {
margin: 5px auto; display: block; float: none;
}
img.fr-bordered {
box-sizing: content-box; border: solid 5px #CCC;
}
img.fr-shadow {
box-shadow: 10px 10px 5px 0px #cccccc;
}
img.fr-rounded {
border-radius: 10px; -moz-border-radius: 10px; -webkit-border-radius: 10px; -moz-background-clip: padding; -webkit-background-clip: padding-box; background-clip: padding-box;
}
</style><style>
p {
margin: 0;
}
span.fr-emoticon.fr-emoticon-img {
background-repeat: no-repeat !important; font-size: inherit; height: 1em; width: 1em; min-height: 20px; min-width: 20px; display: inline-block; margin: -0.1em 0.1em 0.1em; line-height: 1; vertical-align: middle;
}
span.fr-emoticon {
font-weight: normal; font-family: "Apple Color Emoji", "Segoe UI Emoji", "NotoColorEmoji", "Segoe UI Symbol", "Android Emoji", "EmojiSymbols"; display: inline; line-height: 0;
}
blockquote {
border-left: solid 2px #5e35b1; color: #5e35b1; margin-left: 0; padding-left: 5px;
}
blockquote blockquote {
border-color: #00bcd4; color: #00bcd4;
}
blockquote blockquote blockquote {
border-color: #43a047; color: #43a047;
}
table.grid {
border-collapse: collapse;
}
table.grid td,
table.grid th {
border: 1px solid #ddd;
}
.fr-fic.fr-dib {
display: block; margin: 5px auto;
}
.fr-fic.fr-dib.fr-fir {
text-align: right; margin: 5px 0 5px auto;
}
.fr-fic.fr-dib.fr-fil {
text-align: left; margin: 5px auto 5px 0;
}
.fr-fic.fr-dii {
float: none; margin: 5px auto;
}
.fr-fic.fr-dii.fr-fil {
float: left; margin: 5px auto;
}
.fr-fic.fr-dii.fr-fir {
float: right; margin: 5px auto;
}
img.fr-dib.fr-fir {
margin-right: 0; text-align: right;
}
img.fr-dib.fr-fil {
margin-left: 0; text-align: left;
}
img.fr-dib {
margin: 5px auto; display: block; float: none;
}
img.fr-bordered {
box-sizing: content-box; border: solid 5px #CCC;
}
img.fr-shadow {
box-shadow: 10px 10px 5px 0px #cccccc;
}
img.fr-rounded {
border-radius: 10px; -moz-border-radius: 10px; -webkit-border-radius: 10px; -moz-background-clip: padding; -webkit-background-clip: padding-box; background-clip: padding-box;
}
</style><p><strong>In this guide we will cover:</strong></p><p><strong>- Video Walkthrough </strong></p><p><strong>- Create an AI model in Azure and connect this model to Halo</strong></p><p><strong>- Entering Details in Halo </strong></p><p><br></p><p>In order to use AI in your Halo instance you will need to connect and AI model. In this article we will walkthrough how to configure and connect an Azure OpenAI model to Halo. </p><p><br></p><p><strong><span style="font-size: 14pt;">Video Walkthrough </span></strong></p><p id="isPasted">The following video is by Mendy Green (One of our PSA Partners) from Rising Tide Consulting, he covers how to setup the Azure AI application on Microsoft Entra (Azure).</p><p><br></p><p><iframe width="560" height="315" src="https://www.youtube.com/embed/VW62ldt_Hkk?si=jnAWVR5Xd7zWGAS6" title="YouTube video player" frameborder="0" allowfullscreen=""><span class="fr-mk" style="display: none;"> </span><span class="fr-mk" style="display: none;"> </span><span class="fr-mk" style="display: none;"> </span><span class="fr-mk" style="display: none;"> </span><span class="fr-mk" style="display: none;"> </span><span class="fr-mk" style="display: none;"> </span><span class="fr-mk" style="display: none;"> </span><span class="fr-mk" style="display: none;"> </span><span class="fr-mk" style="display: none;"> </span><span class="fr-mk" style="display: none;"> </span><span class="fr-mk" style="display: none;"> </span><span class="fr-mk" style="display: none;"> </span><span class="fr-mk" style="display: none;"> </span><span class="fr-mk" style="display: none;"> </span><span class="fr-mk" style="display: none;"> </span><span class="fr-mk" style="display: none;"> </span><span class="fr-mk" style="display: none;"> </span><span class="fr-mk" style="display: none;"> </span><span class="fr-mk" style="display: none;"> </span><span class="fr-mk" style="display: none;"> </span><span class="fr-mk" style="display: none;"> </span><span class="fr-mk" style="display: none;"> </span><span class="fr-mk" style="display: none;"> </span><span class="fr-mk" style="display: none;"> </span><span class="fr-mk" style="display: none;"> </span><span class="fr-mk" style="display: none;"> </span><span class="fr-mk" style="display: none;"> </span><span class="fr-mk" style="display: none;"> </span><span class="fr-mk" style="display: none;"> </span><span class="fr-mk" style="display: none;"> </span><span class="fr-mk" style="display: none;"> </span><span class="fr-mk" style="display: none;"> </span><span class="fr-mk" style="display: none;"> </span><span class="fr-mk" style="display: none;"> </span><span class="fr-mk" style="display: none;"> </span><span class="fr-mk" style="display: none;"> </span><span class="fr-mk" style="display: none;"> </span><span class="fr-mk" style="display: none;"> </span><span class="fr-mk" style="display: none;"> </span><span class="fr-mk" style="display: none;"> </span><span class="fr-mk" style="display: none;"> </span><span class="fr-mk" style="display: none;"> </span><span class="fr-mk" style="display: none;"> </span><span class="fr-mk" style="display: none;"> </span><span class="fr-mk" style="display: none;"> </span><span class="fr-mk" style="display: none;"> </span></iframe></p><p> </p><p><strong><em>Disclaimer: For the most up to date information please use the content in this guide, below. </em></strong></p><p><br></p><p><strong><span style="font-size: 14pt;">Create an AI model in Azure<br></span></strong></p><p>It is important to make sure your Azure tenant is setup to support the Azure AI area, it can be disabled. If this is the case, please contact Microsoft to get Azure AI enabled for your tenant. There are multiple models which you can deploy in the Azure AI area, so the possibilities are extensive when configuring your own models <strong>(<a href="https://learn.microsoft.com/en-us/azure/ai-services/openai/concepts/models" rel="noopener noreferrer" target="_blank">AI Models</a>)</strong>.</p><p><br></p><p><strong><span style="font-size: 12pt;">Create a Resource Group </span></strong></p><p id="isPasted">Go to <a data-fr-linked="true" href="https://portal.azure.com">https://portal.azure.com</a> and sign in with your Azure account. If you don’t have an account yet, you’ll need to create one first. Now create a Resource Group (if you don’t already have one).</p><p id="isPasted">•<span style="white-space:pre;"> </span>In the left sidebar, click Resource groups.</p><p>•<span style="white-space:pre;"> </span>Select Create.</p><p>•<span style="white-space:pre;"> </span>Give your resource group a name (e.g., openai-rg).</p><p>•<span style="white-space:pre;"> </span>Choose your subscription and region.</p><p>•<span style="white-space:pre;"> </span>Click Review + Create, then Create.</p><p><br></p><p id="isPasted"><strong><span style="font-size: 12pt;">Create an Azure OpenAI Resource</span></strong></p><p>•<span style="white-space:pre;"> </span>From the Azure Portal home, click Create a resource.</p><p>•<span style="white-space:pre;"> </span>Search for Azure OpenAI in the marketplace.</p><p>•<span style="white-space:pre;"> </span>Select it, then click Create.</p><p><br><img src="https://halo.haloservicedesk.com/api/attachment/image?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6ImM5MDA3NjUxLTgwMGMtNDg5NS04MzljLWI3YjM0OGQzYzVlMiJ9.D1tJq0eQVJw-i1cXSK__fTwlXlivFFVEBv019mH0EEU" class="fr-fic fr-fil fr-dib" width="880" style="width: 882px; height: 612.667px;" height="613"></p><p><strong><span style="font-size: 10pt;">Fig 1. Create Azure OpenAI resource </span></strong></p><p><br></p><p>Now fill in the required fields. </p><p><img src="https://halo.haloservicedesk.com/api/attachment/image?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6ImU1ZjM2MzJiLTI5MmQtNDE5Ny04MjE2LWVmYTk4NmZiNzU0MSJ9.NeuKIt8qwQNHLrvPP6vE8AufUYz9deSwYIbeR9lXmi4" class="fr-fic fr-fil fr-dib" width="718" style="width: 720px; height: 764.255px;" height="764"></p><p><strong><span style="font-size: 10pt;">Fig 2. Complete details for Azure OpenAI resource</span></strong></p><p><br></p><p id="isPasted"><strong>Subscription</strong><strong> -</strong> Pick your Azure subscription.</p><p><strong>Resource Group</strong> <strong>- </strong>Select the one you created earlier.</p><p><strong>Region -</strong> Choose a region where Azure OpenAI is available.</p><p><strong>Name -</strong> Give your resource a unique name (e.g., openai-service).</p><p><br></p><p id="isPasted"><strong><em>Note: Many of the regions do not support GPT-4 (Supported Regions: Australia East, Canada East, East US, East US 2, France Central, Japan East, Sweden Central, Switzerland North, UK South) this list may be subject to change, so please do check based on the models you configure.</em></strong></p><p><br></p><p id="isPasted">Click Review + Create, then Create. This will provision your Azure OpenAI instance.</p><p><br></p><p><strong><span style="font-size: 12pt;">Create Deployments</span></strong></p><p id="isPasted">Once your resource is created, you will need to go to it in the Azure Portal and create two deployments. Once for your embeddings and one for your GPT model. In the overview page.</p><p><br></p><p>Go to Azure OpenAI Studio (sometimes called AI Foundry). Alternatively, you can go directly to <a data-fr-linked="true" href="https://ai.azure.com">https://ai.azure.com</a> and sign in.</p><p><br></p><p id="isPasted"><strong>Deploy an Embeddings Model</strong></p><p>•<span style="white-space:pre;"> </span>In Azure AI Foundry, open your Azure OpenAI resource.</p><p>•<span style="white-space:pre;"> </span>Go to Deployments in the left sidebar.</p><p>•<span style="white-space:pre;"> </span>Click + Create new deployment.</p><p>•<span style="white-space:pre;"> </span>Choose Model = text-embedding-ada-002 (or another embedding model that uses 1536 dimensions).</p><p>•<span style="white-space:pre;"> </span>Enter a deployment name (e.g., embeddings-deployment).</p><p>•<span style="white-space:pre;"> </span>Click Create.</p><p><br></p><p><strong>Deploy a GPT Model</strong></p><p>1.<span style="white-space:pre;"> </span>Still in Deployments, click + Create new deployment again.</p><p>2.<span style="white-space:pre;"> </span>Choose your GPT model (e.g., gpt-35-turbo or gpt-4).</p><p>3.<span style="white-space:pre;"> </span>Give it a deployment name (e.g., gpt-deployment).</p><p>4.<span style="white-space:pre;"> </span>Adjust settings if needed (defaults are usually fine).</p><p>5.<span style="white-space:pre;"> </span>Click Create.</p><p><br></p><p id="isPasted"><strong><span style="font-size: 12pt;">Retrieve Your Keys & Endpoint</span></strong></p><ul><li>In the Azure Portal, go back to your Azure OpenAI resource.</li><li>From the left sidebar, select Keys and Endpoint.</li><li>Copy your Endpoint URL and API Key<ul><li style="font-weight: bold; color: rgb(235, 107, 86); font-style: italic;"><strong><em>Important: Save these somewhere secure. You’ll need them when connecting your application to Azure AI.</em></strong></li></ul></li><li>The API version will depend on the GPT model deployed and the region. More information on which API version to use can be found <a data-fr-linked="true" href="https://learn.microsoft.com/en-us/azure/ai-foundry/foundry-models/concepts/models-sold-directly-by-azure?pivots=azure-openai&tabs=global-standard-aoai%2Cstandard-chat-completions%2Cglobal-standard#assistants-preview" id="isPasted" target="_blank" rel="noopener noreferrer">here</a>. For the creation of custom virtual agents within Halo, a minimum API version of 2024-02-15-preview is required.<ul><li>The best way to find the API Version and API Key, is to go to the Azure OpenAI Studio: <a data-fr-linked="true" href="https://oai.azure.com/">https://oai.azure.com/</a> and location the version within the model deployment. </li></ul></li></ul><p><br></p><p><strong><span style="font-size: 14pt;">Entering Details in Halo </span></strong></p><p>Now you have connection details you will need to plug these into your Halo instance you establish connection. </p><p><br></p><p>Head to Configuration > AI > select 'Own Azure OpenAI Connection' as the 'Default AI Connection' > Configure OpenAI Connection. </p><p><img src="https://halo.haloservicedesk.com/api/attachment/image?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6ImE5YWRmNTI1LTg3NDEtNGFhZS1iOGNlLTFjZDQ4MTljZDFhYSJ9.LVh7yvRGBl2PmaEhLD8oHhw4UhkConIgY6PqK-wdMqs" class="fr-fic fr-fil fr-dib" width="418" style="width: 420px; height: 307.432px;" height="307"></p><p><strong><span style="font-size: 10pt;">Fig 3. Configure OpenAI Connection in Halo </span></strong></p><p><br></p><p>Here, you can enter the connection details obtained earlier. </p><p><img src="https://halo.haloservicedesk.com/api/attachment/image?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpZCI6ImE3MjQ2MThiLWEzNzgtNDkyMS05OWY3LWM0NzdlMTQ1MjAxOSJ9.ny-RmzRdj5IxBoBNpZVbDd0cJKoaQH80T-y-tCU6j94" class="fr-fic fr-fil fr-dib" width="564" height="622"></p><p><strong><span style="font-size: 10pt;">Fig 4. Connection details for Azure OpenAI</span></strong></p><p><br></p><p id="isPasted"><strong>Default Azure OpenAI Deployment</strong> - Enter your GPT model here. This is the model that will perform summarisations of ticket data.</p><p><strong>Default Azure OpenAI Embeddings Deployment </strong>- Enter your embeddings model here.</p><p><br></p><p>There is no save buttons on this modal window, but details will save automatically upon entering. </p><p><br></p><p><br></p>