Private/ConvertTo-OpenAIDecisionEnrichedResult.ps1
|
function ConvertTo-OpenAIDecisionEnrichedResult { [CmdletBinding()] param( [Parameter(Mandatory)][object]$State, [Parameter(Mandatory)][object]$Response ) $result = [ordered]@{} if ($State -is [System.Collections.IDictionary]) { foreach ($key in $State.Keys) { $name = [string]$key if (-not [string]::IsNullOrWhiteSpace($name)) { $result[$name] = $State[$key] } } } elseif ($State -is [string] -or $State -is [ValueType] -or $State -is [array]) { $result.State = $State } else { foreach ($property in $State.PSObject.Properties) { $result[$property.Name] = $property.Value } } foreach ($property in $Response.PSObject.Properties | Where-Object Name -notin @('answers', 'usage')) { $name = $property.Name while ($result.Contains($name)) { $name = "OpenAIDecision_$name" } $result[$name] = $property.Value } $answerEntries = @() if ($Response.answers -is [System.Collections.IDictionary]) { $answerEntries = @($Response.answers.GetEnumerator() | ForEach-Object { [pscustomobject]@{ Name = [string]$_.Key; Value = $_.Value } }) } elseif ($Response.answers -is [array]) { $answerEntries = @($Response.answers | ForEach-Object { [pscustomobject]@{ Name = [string]$_.name; Value = $_ } }) } elseif ($null -ne $Response.answers) { $answerEntries = @($Response.answers.PSObject.Properties | ForEach-Object { [pscustomobject]@{ Name = $_.Name; Value = $_.Value } }) } foreach ($entry in $answerEntries) { $answer = $entry.Value $value = switch ([string]$answer.type) { 'predicate' { $answer.probability } 'choice' { $answer.choice } 'score' { $answer.score } default { $answer } } $name = $entry.Name while ($result.Contains($name)) { $name = "OpenAIDecision_$name" } $result[$name] = $value } if ($null -ne $Response.usage) { $name = 'usage' while ($result.Contains($name)) { $name = "OpenAIDecision_$name" } $result[$name] = $Response.usage } if ($null -ne $Response.answers) { $name = 'answers' while ($result.Contains($name)) { $name = "OpenAIDecision_$name" } $result[$name] = $Response.answers } [pscustomobject]$result } |