diff --git a/model_prices_and_context_window.json b/model_prices_and_context_window.json index 7e179db2a81..d8ea5daca5a 100644 --- a/model_prices_and_context_window.json +++ b/model_prices_and_context_window.json @@ -12733,6 +12733,190 @@ "/v1/images/generations" ] }, + "fal_ai/nano-banana-2": { + "litellm_provider": "fal_ai", + "mode": "image_generation", + "output_cost_per_image": 0.01, + "supported_endpoints": [ + "/v1/images/generations" + ] + }, + "fal_ai/nano-banana-2/edit": { + "litellm_provider": "fal_ai", + "mode": "image_generation", + "output_cost_per_image": 0.01, + "supported_endpoints": [ + "/v1/images/generations" + ] + }, + "fal_ai/nano-banana-pro": { + "litellm_provider": "fal_ai", + "mode": "image_generation", + "output_cost_per_image": 0.02, + "supported_endpoints": [ + "/v1/images/generations" + ] + }, + "fal_ai/nano-banana-pro/edit": { + "litellm_provider": "fal_ai", + "mode": "image_generation", + "output_cost_per_image": 0.02, + "supported_endpoints": [ + "/v1/images/generations" + ] + }, + "fal_ai/flux-2/klein/9b": { + "litellm_provider": "fal_ai", + "mode": "image_generation", + "output_cost_per_image": 0.025, + "supported_endpoints": [ + "/v1/images/generations" + ] + }, + "fal_ai/flux-2/klein/9b/edit": { + "litellm_provider": "fal_ai", + "mode": "image_generation", + "output_cost_per_image": 0.025, + "supported_endpoints": [ + "/v1/images/generations" + ] + }, + "fal_ai/flux-2/klein/9b/base/edit/lora": { + "litellm_provider": "fal_ai", + "mode": "image_generation", + "output_cost_per_image": 0.025, + "supported_endpoints": [ + "/v1/images/generations" + ] + }, + "fal_ai/flux-pro": { + "litellm_provider": "fal_ai", + "mode": "image_generation", + "output_cost_per_image": 0.04, + "supported_endpoints": [ + "/v1/images/generations" + ] + }, + "fal_ai/flux-pro/kontext": { + "litellm_provider": "fal_ai", + "mode": "image_generation", + "output_cost_per_image": 0.05, + "supported_endpoints": [ + "/v1/images/generations" + ] + }, + "fal_ai/gemini-3-pro-image-preview": { + "litellm_provider": "fal_ai", + "mode": "image_generation", + "output_cost_per_image": 0.04, + "supported_endpoints": [ + "/v1/images/generations" + ] + }, + "fal_ai/gemini-3-pro-image-preview/edit": { + "litellm_provider": "fal_ai", + "mode": "image_generation", + "output_cost_per_image": 0.04, + "supported_endpoints": [ + "/v1/images/generations" + ] + }, + "fal_ai/gemini-3.1-flash-image-preview": { + "litellm_provider": "fal_ai", + "mode": "image_generation", + "output_cost_per_image": 0.02, + "supported_endpoints": [ + "/v1/images/generations" + ] + }, + "fal_ai/gemini-3.1-flash-image-preview/edit": { + "litellm_provider": "fal_ai", + "mode": "image_generation", + "output_cost_per_image": 0.02, + "supported_endpoints": [ + "/v1/images/generations" + ] + }, + "fal_ai/gemini-25-flash-image": { + "litellm_provider": "fal_ai", + "mode": "image_generation", + "output_cost_per_image": 0.02, + "supported_endpoints": [ + "/v1/images/generations" + ] + }, + "fal_ai/gemini-25-flash-image/edit": { + "litellm_provider": "fal_ai", + "mode": "image_generation", + "output_cost_per_image": 0.02, + "supported_endpoints": [ + "/v1/images/generations" + ] + }, + "fal_ai/bytedance/seedream/v4/text-to-image": { + "litellm_provider": "fal_ai", + "mode": "image_generation", + "output_cost_per_image": 0.03, + "supported_endpoints": [ + "/v1/images/generations" + ] + }, + "fal_ai/bytedance/seedream/v4/edit": { + "litellm_provider": "fal_ai", + "mode": "image_generation", + "output_cost_per_image": 0.03, + "supported_endpoints": [ + "/v1/images/generations" + ] + }, + "fal_ai/bytedance/seedream/v4.5/text-to-image": { + "litellm_provider": "fal_ai", + "mode": "image_generation", + "output_cost_per_image": 0.03, + "supported_endpoints": [ + "/v1/images/generations" + ] + }, + "fal_ai/bytedance/seedream/v4.5/edit": { + "litellm_provider": "fal_ai", + "mode": "image_generation", + "output_cost_per_image": 0.03, + "supported_endpoints": [ + "/v1/images/generations" + ] + }, + "fal_ai/bytedance/seedream/v5/lite/text-to-image": { + "litellm_provider": "fal_ai", + "mode": "image_generation", + "output_cost_per_image": 0.03, + "supported_endpoints": [ + "/v1/images/generations" + ] + }, + "fal_ai/bytedance/seedream/v5/lite/edit": { + "litellm_provider": "fal_ai", + "mode": "image_generation", + "output_cost_per_image": 0.03, + "supported_endpoints": [ + "/v1/images/generations" + ] + }, + "fal_ai/kling-image/omni": { + "litellm_provider": "fal_ai", + "mode": "image_generation", + "output_cost_per_image": 0.04, + "supported_endpoints": [ + "/v1/images/generations" + ] + }, + "fal_ai/iclight-v2": { + "litellm_provider": "fal_ai", + "mode": "image_generation", + "output_cost_per_image": 0.02, + "supported_endpoints": [ + "/v1/images/generations" + ] + }, "featherless_ai/featherless-ai/Qwerky-72B": { "litellm_provider": "featherless_ai", "max_input_tokens": 32768, diff --git a/ui/litellm-dashboard/src/components/view_logs/LogDetailsDrawer/OutputCard.tsx b/ui/litellm-dashboard/src/components/view_logs/LogDetailsDrawer/OutputCard.tsx index 22f1708ee4b..97533362dc3 100644 --- a/ui/litellm-dashboard/src/components/view_logs/LogDetailsDrawer/OutputCard.tsx +++ b/ui/litellm-dashboard/src/components/view_logs/LogDetailsDrawer/OutputCard.tsx @@ -97,6 +97,25 @@ export function OutputCard({ message, completionTokens, outputCost }: OutputCard content={message.content} toolCalls={message.toolCalls} /> + {message.imageUrls && message.imageUrls.length > 0 && ( +
+ {message.imageUrls.map((url, idx) => ( + + {`Generated + + ))} +
+ )} diff --git a/ui/litellm-dashboard/src/components/view_logs/LogDetailsDrawer/prettyMessagesTypes.ts b/ui/litellm-dashboard/src/components/view_logs/LogDetailsDrawer/prettyMessagesTypes.ts index 1f4e23f5bd3..0f117414be7 100644 --- a/ui/litellm-dashboard/src/components/view_logs/LogDetailsDrawer/prettyMessagesTypes.ts +++ b/ui/litellm-dashboard/src/components/view_logs/LogDetailsDrawer/prettyMessagesTypes.ts @@ -7,6 +7,7 @@ export interface ParsedMessage { content: string; toolCalls?: ToolCall[]; toolCallId?: string; + imageUrls?: string[]; } export interface ToolCall { diff --git a/ui/litellm-dashboard/src/components/view_logs/LogDetailsDrawer/prettyMessagesUtils.ts b/ui/litellm-dashboard/src/components/view_logs/LogDetailsDrawer/prettyMessagesUtils.ts index d0828b8c693..93f931d4d1b 100644 --- a/ui/litellm-dashboard/src/components/view_logs/LogDetailsDrawer/prettyMessagesUtils.ts +++ b/ui/litellm-dashboard/src/components/view_logs/LogDetailsDrawer/prettyMessagesUtils.ts @@ -64,6 +64,20 @@ export const parseMessages = (request: any, response: any): ParsedMessages => { }; } + // If no chat response, check for image generation response + if (!responseMessage && response?.data && Array.isArray(response.data)) { + const imageUrls = response.data + .map((img: any) => img.url || (img.b64_json ? `data:image/png;base64,${img.b64_json}` : null)) + .filter(Boolean); + if (imageUrls.length > 0) { + responseMessage = { + role: 'assistant', + content: '', + imageUrls: imageUrls, + }; + } + } + return { requestMessages, responseMessage }; };