Public/Remove-DifyModel.ps1
function Remove-DifyModel { [CmdletBinding(SupportsShouldProcess = $true, ConfirmImpact = 'High')] param( [Parameter(ValueFromPipeline = $true)] [PSCustomObject[]] $Model = @() ) begin { $Models = @() } process { foreach ($ModelObject in $Model) { $Models += $ModelObject } } end { $PredefinedModels = @() $CustomizableModels = @() foreach ($Model in $Models) { switch ($Model.FetchFrom) { "predefined-model" { if ($PredefinedModels -notcontains $Model.Provider) { $PredefinedModels += $Model.Provider } } "customizable-model" { $CustomizableModels += $Model } } } if ($PredefinedModels.Count -gt 0) { foreach ($PredefinedModel in $PredefinedModels) { if (Compare-SimpleVersion -Version $env:PSDIFY_VERSION -Ge "1.8.0") { $AvailableCredentials = Get-DifyModelProviderCredential -Provider $PredefinedModel -From "predefined" foreach ($Credential in $AvailableCredentials) { $Endpoint = Join-Url -Segments @($env:PSDIFY_URL, "/console/api/workspaces/current/model-providers", $PredefinedModel, "/credentials") $Method = "DELETE" $Body = @{ "credential_id" = $Credential.CredentialId } | ConvertTo-Json -Depth 10 if ($PSCmdlet.ShouldProcess("$($Credential.CredentialName) on $($PredefinedModel)", "Remove Credential")) { try { $null = Invoke-DifyRestMethod -Uri $Endpoint -Method $Method -Body $Body -Token $env:PSDIFY_CONSOLE_TOKEN } catch { throw "Failed to remove predefined model credential: $_" } } } } else { $Endpoint = Join-Url -Segments @($env:PSDIFY_URL, "/console/api/workspaces/current/model-providers", $PredefinedModel) $Method = "DELETE" if ($PSCmdlet.ShouldProcess("$($PredefinedModel)", "Remove All Predefined Models")) { try { $null = Invoke-DifyRestMethod -Uri $Endpoint -Method $Method -Token $env:PSDIFY_CONSOLE_TOKEN } catch { throw "Failed to remove predefined model: $_" } } } } } if ($CustomizableModels.Count -gt 0) { foreach ($CustomizableModel in $CustomizableModels) { if (Compare-SimpleVersion -Version $env:PSDIFY_VERSION -Ge "1.8.0") { $AvailableCredentials = Get-DifyModelProviderCredential -Provider $CustomizableModel.Provider -Name $CustomizableModel.Model -Type $CustomizableModel.Type -From "customizable" foreach ($Credential in $AvailableCredentials) { $Endpoint = Join-Url -Segments @($env:PSDIFY_URL, "/console/api/workspaces/current/model-providers", $CustomizableModel.Provider, "/models/credentials") $Method = "DELETE" $Body = @{ "credential_id" = $Credential.CredentialId "model" = $CustomizableModel.Model "model_type" = $CustomizableModel.Type } | ConvertTo-Json -Depth 10 if ($PSCmdlet.ShouldProcess("$($Credential.CredentialName) on $($CustomizableModel.Model) of $($CustomizableModel.Provider)", "Remove Model Credential")) { try { $null = Invoke-DifyRestMethod -Uri $Endpoint -Method $Method -Body $Body -Token $env:PSDIFY_CONSOLE_TOKEN } catch { throw "Failed to remove customizable model credential: $_" } } } } else { $Endpoint = Join-Url -Segments @($env:PSDIFY_URL, "/console/api/workspaces/current/model-providers", $CustomizableModel.Provider, "/models") $Method = "DELETE" $Body = @{ "model" = $CustomizableModel.Model "model_type" = $CustomizableModel.Type } | ConvertTo-Json if ($PSCmdlet.ShouldProcess("$($CustomizableModel.Model) on $($CustomizableModel.Provider)", "Remove Model")) { try { $null = Invoke-DifyRestMethod -Uri $Endpoint -Method $Method -Body $Body -Token $env:PSDIFY_CONSOLE_TOKEN } catch { throw "Failed to remove customizable model: $_" } } } } } return } } |