Public/Test-OpenAIDecision.ps1
|
function Test-OpenAIDecision { [CmdletBinding(PositionalBinding=$false)] param( [Parameter(Mandatory,ValueFromPipeline)][object]$State, [Parameter(Mandatory,Position=0)][ValidateNotNullOrEmpty()][string]$Question, [Parameter(Position=1)][ValidateRange(0.0,1.0)][double]$Threshold=0.5, [Parameter()][string]$Model='gpt-6-luna' ) process { $definition = New-OpenAIYesNoQuestion -Name decision -Question $Question $response = Invoke-OpenAIDecision -InputObject $State -Question $definition -Model $Model -ErrorAction Stop $answer = Get-OpenAIDecisionAnswer -Response $response -Name decision if ($answer.type -eq 'refusal' -or $null -eq $answer.probability) { throw 'OpenAI declined or omitted the predicate answer.' } $probability = [double]$answer.probability if ([double]::IsNaN($probability) -or $probability -lt 0 -or $probability -gt 1) { throw 'OpenAI returned a predicate probability outside the range 0 to 1.' } $probability -ge $Threshold } } |