private/get-GeminiModels.ps1
|
function Get-GeminiModels { <# .SYNOPSIS Retrieves a list of available Google Gemini models. .DESCRIPTION Calls the Google Gemini API to list all available models. .PARAMETER ApiKey The Google Gemini API key. If not provided, the GEMINI_API_KEY environment variable will be used. .PARAMETER Refresh Forces a refresh of the cached models. .EXAMPLE Get-GeminiModels Retrieves the list of available Google Gemini models using the specified API key. #> [CmdletBinding()] param( [parameter(Mandatory=$false)][string]$ApiKey, [parameter(Mandatory=$false)][switch]$Refresh ) if ($global:GEMINI_MODELS -and -not $Refresh) { Write-Verbose 'Returning cached Gemini models' return $global:GEMINI_MODELS } Write-Verbose 'Retrieving Gemini models from API' if (-not $ApiKey) { $ApiKey = $env:GEMINI_API_KEY } if (-not $ApiKey) { throw "Google Gemini API key is not set. Please provide it via the -ApiKey parameter or the GEMINI_API_KEY environment variable." } $uri = "https://generativelanguage.googleapis.com/v1beta/models?key=$apiKey" try { $response = Invoke-RestMethod -Uri $uri -Method Get $result = @() foreach ($model in $response.models) { $result += $([PSCustomObject]@{ Name = $model.name -replace "models/", "" DisplayName = $model.displayName Description = $model.description }) } $global:GEMINI_MODELS = $result return $result } catch { Write-Error "Failed to retrieve models: $($_.Exception.Message)" } } |