Public/Invoke-PSUAiPrompt.ps1
|
function Invoke-PSUAiPrompt { <# .SYNOPSIS Routes a prompt to the selected AI engine (AzureOpenAI, GeminiAI, PerplexityAI) and returns the response. .DESCRIPTION This function dispatches a prompt to the configured AI engine, supporting JSON response mode. It enforces strict parameter validation and logs parameters for diagnostics. .PARAMETER Prompt The message to send to the AI engine for generating a response. .PARAMETER DefaultAiEngine (Optional) The AI engine to use. Default is $env:DEFAULT_AI_ENGINE. .PARAMETER ReturnJsonResponse (Optional) Switch to request raw JSON response from the AI engine. .EXAMPLE Invoke-PSUAiPrompt -Prompt "Summarize Kubernetes in one line" .OUTPUTS [String] .NOTES Author: Lakshmanachari Panuganti Created: 2025-07-27 Last Modified: 2025-10-19 #> [CmdletBinding()] param( [Parameter(Mandatory)] [string]$Prompt, [Parameter()] [ValidateSet("AzureOpenAi", "GeminiAi", "PerplexityAi")] [string]$DefaultAiEngine = $env:DEFAULT_AI_ENGINE, [Parameter()] [switch]$ReturnJsonResponse ) begin { Write-Verbose "[Invoke-PSUAiPrompt] Parameters:" foreach ($param in $PSBoundParameters.GetEnumerator()) { Write-Verbose " $($param.Key) = $($param.Value)" } if ([string]::IsNullOrWhiteSpace($Prompt)) { throw "Prompt parameter is required." } if ([string]::IsNullOrWhiteSpace($DefaultAiEngine)) { throw "DefaultAiEngine parameter is required. Set via: Set-PSUUserEnvironmentVariable -Name 'DEFAULT_AI_ENGINE' -Value '<engine>'" } } process { switch ($DefaultAiEngine.ToLower()) { "azureopenai" { Write-Verbose "Using Azure OpenAI as the default AI engine" if ($ReturnJsonResponse) { return Invoke-PSUPromptOnAzureOpenAi -Prompt $Prompt -ReturnJsonResponse } else { return Invoke-PSUPromptOnAzureOpenAi -Prompt $Prompt } } "geminiai" { Write-Verbose "Using Gemini as the default AI engine" if ($ReturnJsonResponse) { return Invoke-PSUPromptOnGeminiAi -Prompt $Prompt -ReturnJsonResponse } else { return Invoke-PSUPromptOnGeminiAi -Prompt $Prompt } } "perplexityai" { Write-Verbose "Using Perplexity as the default AI engine" if ($ReturnJsonResponse) { return Invoke-PSUPromptOnPerplexityAi -Prompt $Prompt -ReturnJsonResponse } else { return Invoke-PSUPromptOnPerplexityAi -Prompt $Prompt } } default { throw "Unsupported AI provider: $DefaultAiEngine. Please set `$env:DEFAULT_AI_ENGINE to one of: AzureOpenAi, GeminiAi, PerplexityAi." } } } } |