functions/ai/Test-SldgAIProvider.ps1
|
function Test-SldgAIProvider { <# .SYNOPSIS Tests connectivity to the configured AI provider. .DESCRIPTION Sends a simple test prompt to the currently configured AI provider and reports whether the connection succeeded, the response time, and the model used. .EXAMPLE PS C:\> Test-SldgAIProvider Provider : Ollama Model : llama3 Status : Connected ResponseMs: 342 .EXAMPLE PS C:\> Test-SldgAIProvider -Verbose Tests with verbose output showing the request/response details. #> [CmdletBinding()] [OutputType([SqlLabDataGenerator.AIProviderTestResult])] param () $provider = Get-PSFConfigValue -FullName 'SqlLabDataGenerator.AI.Provider' $model = Get-PSFConfigValue -FullName 'SqlLabDataGenerator.AI.Model' if (-not $provider -or $provider -eq 'None') { [SqlLabDataGenerator.AIProviderTestResult]@{ Provider = 'None' Model = $null Status = 'NotConfigured' ResponseMs = $null Error = $script:strings.'AI.ProviderNotConfigured' } return } Write-PSFMessage -Level Verbose -Message ($script:strings.'AI.TestStarting' -f $provider, $model) $sw = [System.Diagnostics.Stopwatch]::StartNew() try { $response = Invoke-SldgAIRequest -SystemPrompt 'You are a test endpoint. Reply with exactly: OK' -UserMessage 'Ping' $sw.Stop() if ($response -and $response -match 'OK') { $status = 'Connected' $errorMessage = $null } elseif ($response) { $status = 'UnexpectedResponse' $errorMessage = "AI responded but did not return expected 'OK'. Got: $($response | Select-Object -First 100)" } else { $status = 'NoResponse' $errorMessage = $script:strings.'AI.TestNoResponse' } } catch { $sw.Stop() $status = 'Failed' $errorMessage = $_.Exception.Message } $result = [SqlLabDataGenerator.AIProviderTestResult]@{ Provider = $provider Model = $model Endpoint = Get-PSFConfigValue -FullName 'SqlLabDataGenerator.AI.Endpoint' Status = $status ResponseMs = [int]$sw.ElapsedMilliseconds Error = $errorMessage } if ($status -eq 'Connected') { Write-PSFMessage -Level Host -Message ($script:strings.'AI.TestSuccess' -f $provider, $model, $sw.ElapsedMilliseconds) } else { Write-PSFMessage -Level Warning -Message ($script:strings.'AI.TestFailed' -f $provider, $errorMessage) } $result } |