diff --git a/ui/litellm-dashboard/src/components/networking.tsx b/ui/litellm-dashboard/src/components/networking.tsx index 9d9ff575c8c..132ac020a3d 100644 --- a/ui/litellm-dashboard/src/components/networking.tsx +++ b/ui/litellm-dashboard/src/components/networking.tsx @@ -5585,6 +5585,41 @@ export const enrichPolicyTemplate = async ( } }; +export const suggestPolicyTemplates = async ( + accessToken: string, + attackExamples: string[], + description: string +) => { + try { + const url = proxyBaseUrl + ? `${proxyBaseUrl}/policy/templates/suggest` + : `/policy/templates/suggest`; + const response = await fetch(url, { + method: "POST", + headers: { + [globalLitellmHeaderName]: `Bearer ${accessToken}`, + "Content-Type": "application/json", + }, + body: JSON.stringify({ + attack_examples: attackExamples.filter((e) => e.trim()), + description, + }), + }); + + if (!response.ok) { + const errorData = await response.json(); + const errorMessage = deriveErrorMessage(errorData); + handleError(errorMessage); + throw new Error(errorMessage); + } + + return response.json(); + } catch (error) { + console.error("Failed to suggest policy templates:", error); + throw error; + } +}; + export const createPolicyCall = async (accessToken: string, policyData: any) => { try { const url = proxyBaseUrl ? `${proxyBaseUrl}/policies` : `/policies`;