AI-administrasjon

{aliases.length} aliaser / {providers.length} leverandører / {totalTokens.toLocaleString('nb-NO')} tokens (30d)
{#if keysLoaded}
{#each apiKeys as key} {/each}
{#if expandedKey === '__new__'}
{/if}
{#each apiKeys as key}
{#if expandedKey === key.name}
{#if key.has_db_value} {/if}
{#if saved === key.name} OK {/if}
{/if}
{/each}
{/if} {#if errorMsg}
{errorMsg}
{/if}

Modellkatalog

{#if catalogLoaded} {/if}
{#if catalogLoaded} {#if groupedByProvider.length === 0}

Ingen modeller matcher søket.

{:else} {#each groupedByProvider as [providerName, models] (providerName)}
{#if expandedProviders.has(providerName)}
Modell Kontekst Prompt/M Kompl./M
{#each models as model (model.id)}
{model.name} {formatCtx(model.context_length)} {formatPrice(model.prompt_price_per_m)} {formatPrice(model.completion_price_per_m)}
{#if addingFromCatalog === model.id}
Legg til {model.name} via {model.api_key_env}:
{/if} {/each}
{/if}
{/each} {/if} {/if}

Modellaliaser

Alias Beskrivelse Leverandører Aktiv
{#each sortedAliases as alias (alias.id)} {@const ap = providersForAlias(alias.id)} {@const primaryModel = ap.find(p => p.is_active && isKeyEnabled(p.api_key_env))?.litellm_model} {#if editingAlias === alias.id}
{#if saving === alias.id} ... {/if}
{:else}
(expandedAlias = expandedAlias === alias.id ? null : alias.id)} > {alias.alias} {#if primaryModel} {primaryModel.replace('openrouter/', '')} {/if} {alias.description ?? '\u2014'} {ap.length} {#if saving === alias.id} ... {:else if saved === alias.id} OK {/if}
{/if} {#if expandedAlias === alias.id}
{#each ap as provider, idx (provider.id)} {@const keyDisabled = !isKeyEnabled(provider.api_key_env)}
#{provider.priority} {provider.litellm_model} {provider.api_key_env}{#if keyDisabled} (av){/if} {#if provider.extra_params && Object.keys(provider.extra_params).length > (hasWebPlugin(provider) ? 1 : 0)} +params {/if} {#if saving === provider.id} ... {:else if saved === provider.id} OK {/if}
{#if editingExtraParams === provider.id}
{/if} {/each}
{#if catalogLoaded} {/if}
{#if showCatalogPicker && catalogLoaded}
{#each catalogPickerFiltered as model (model.id)} {/each}
{/if}
{/if} {/each}

Jobbruting

Jobbtype Modellalias Beskrivelse
{#each routing as route (route.job_type)}
{route.job_type} {route.description ?? '\u2014'} {#if saving === route.job_type} ... {:else if saved === route.job_type} OK {/if}
{/each}

System-prompts

Action Visningsnavn Beskrivelse Tegn Oppdatert
{#each prompts as prompt (prompt.action)}
{prompt.action} {prompt.icon ?? ''} {prompt.label ?? '\u2014'} {prompt.description ?? '\u2014'} {prompt.system_prompt.length} {new Date(prompt.updated_at).toLocaleDateString('nb-NO')} {#if saving === prompt.action} ... {:else if saved === prompt.action} OK {:else} {/if}
{#if editingPrompt === prompt.action}
{/if} {/each}

Tokenforbruk (siste 30 dager)

{#if totalEstimatedCost !== null} Estimert totalkostnad: ${totalEstimatedCost.toFixed(2)} {/if}
{#if usage.length === 0}

Ingen AI-kall registrert ennå.

{:else}
Alias Modell Prompt Kall Prompt-tok. Kompl. Totalt Est. $
{#each sortedUsage as row} {@const cost = estimateCost(row)}
{row.model_alias} {row.model_actual ?? '\u2014'} {row.action ?? '\u2014'} {row.call_count} {row.prompt_tokens.toLocaleString('nb-NO')} {row.completion_tokens.toLocaleString('nb-NO')} {row.total_tokens.toLocaleString('nb-NO')} {cost !== null ? `$${cost.toFixed(2)}` : '\u2014'}
{/each}
{#if !catalogLoaded}

Last inn modellkatalogen for å se estimerte kostnader.

{/if} {/if}

Konfigurasjon

{#if configMsg} {configMsg} {/if}

Genererer LiteLLM config.yaml fra databasen. «Generer + restart» aktiverer endringene umiddelbart.