private/FoundationaLLM-Agent.ps1
|
function Get-AllAgents { return Invoke-ManagementAPI ` -Method GET ` -RelativeUri "providers/FoundationaLLM.Agent/agents" } function Get-Agent { param ( [string]$AgentName ) return Invoke-ManagementAPI ` -Method GET ` -RelativeUri "providers/FoundationaLLM.Agent/agents/$AgentName" } function Merge-Agent { param ( [hashtable]$Agent ) return Invoke-ManagementAPI ` -Method POST ` -RelativeUri "providers/FoundationaLLM.Agent/agents/$($Agent.name)" ` -Body $Agent } function Get-AgentFiles { param ( [string]$AgentName ) return Invoke-ManagementAPI ` -Method GET ` -RelativeUri "providers/FoundationaLLM.Agent/agents/$AgentName/agentFiles" } function Get-AgentFile { param ( [string]$AgentName, [string]$FileName, [switch]$LoadContent ) $uri = "providers/FoundationaLLM.Agent/agents/$AgentName/agentFiles/$FileName" if ($LoadContent) { $uri += "?loadContent=true" $result = Invoke-ManagementAPI ` -Method GET ` -RelativeUri $uri ` -BinaryOutput $contentDisposition = $result.Headers["Content-Disposition"] $extractedFileName = Get-FileNameFromContentDisposition -ContentDisposition $contentDisposition return @{ ContentType = $result.Headers["Content-Type"] FileName = $extractedFileName Content = $result.Content } } return Invoke-ManagementAPI ` -Method GET ` -RelativeUri $uri } function Send-AgentFile { param ( [string]$AgentName, [hashtable]$FileContent ) $bytes = $FileContent.Content $stream = [System.IO.MemoryStream]::new($bytes) $streamContent = [System.Net.Http.StreamContent]::new($stream) $streamContent.Headers.ContentType = [System.Net.Http.Headers.MediaTypeHeaderValue]::Parse($FileContent.ContentType) $multipart = [System.Net.Http.MultipartFormDataContent]::new() $multipart.Add($streamContent, "file", $FileContent.FileName) return Invoke-ManagementAPI ` -Method POST ` -RelativeUri "providers/FoundationaLLM.Agent/agents/$AgentName/agentFiles/$($FileContent.FileName)" ` -MultipartContent $multipart } function Merge-AgentFileToolAssociations { param ( [string]$AgentName, [string]$FileName, [hashtable]$ToolAssociations ) $agentObjectId = (Get-ObjectId -Name $AgentName -Type "FoundationaLLM.Agent/agents") $agentFileObjectId = "$agentObjectId/agentFiles/$FileName" $qualifiedToolAssociations = @{ "agent_file_tool_associations" = @{ $agentFileObjectId = @{ (Get-ObjectId -Name "Code" -Type "FoundationaLLM.Agent/tools") = $ToolAssociations["Code"] (Get-ObjectId -Name "Knowledge" -Type "FoundationaLLM.Agent/tools") = $ToolAssociations["Knowledge"] } } } return Invoke-ManagementAPI ` -Method POST ` -RelativeUri "providers/FoundationaLLM.Agent/agents/$AgentName/agentFileToolAssociations/$FileName" ` -Body $qualifiedToolAssociations } function Merge-ToolType { param ( [hashtable]$ToolType ) return Invoke-ManagementAPI ` -Method POST ` -RelativeUri "providers/FoundationaLLM.Agent/tools/$($ToolType.name)" ` -Body $ToolType } function Merge-WorkflowType { param ( [hashtable]$WorkflowType ) return Invoke-ManagementAPI ` -Method POST ` -RelativeUri "providers/FoundationaLLM.Agent/workflows/$($WorkflowType.name)" ` -Body $WorkflowType } |