utilities/GPT4OnYourData.ps1 (52 lines of code) (raw):
# Azure Open AI configuration
$AzureOpenAIEndpoint = "<resource-name>.openai.azure.com"
$EmbeddingDeploymentName = "embedding"
# Azure AI search configuraton
$AzureAiSearchEndpoint = "<resource-name>.search.windows.net"
$DeploymentName = "GPT4"
$Prompt = "Find information about my health insurance."
# Azure AI search configuraton
$IndexName = "myindex"
# Get Token
$TokenRequest = Get-AzAccessToken -ResourceUrl "https://cognitiveservices.azure.com"
$MyToken = $TokenRequest.token
# Form the request body towards the Azure Open AI API endpoint, with AzureCognitiveSearch added as dataSource for RAG
$Body = @"
{
"dataSources": [
{
"type": "AzureCognitiveSearch",
"queryType": "vectorSimpleHybrid",
"parameters": {
"endpoint": "https://$($AzureAiSearchEndpoint)",
"indexName": "$($IndexName)",
"embeddingDeploymentName": "$($EmbeddingDeploymentName)"
}
}
],
"messages": [
{
"role": "system",
"content": "You are an AI assistant that helps people find information."
},
{
"role": "user",
"content": "$($Prompt)"
}
]
}
"@
# AI Request
$AzureOAIRequest = @{
Uri = "https://$($AzureOpenAIEndpoint)/openai/deployments/$($DeploymentName)/extensions/chat/completions?api-version=2023-10-01-preview"
Headers = @{
Authorization = "Bearer $($MyToken)"
'Content-Type' = 'application/json'
}
Method = 'POST'
Body = $Body
#UseBasicParsing = $true
}
$Response = Invoke-WebRequest @AzureOAIRequest
[Newtonsoft.Json.Linq.JObject]::Parse($Response.Content).ToString()
$PSResponse = $Response.Content | ConvertFrom-Json