{{ t(request, 'info.forgot_pw_hint') }}
{% endif %}{{ t(request, 'portal.pw_change_hint') }}
{% if error %}| Key-Prefix | Label | {{ t(request, 'lbl.last_used') }} |
|---|---|---|
{{ k.key_prefix }}... |
{{ k.label or '—' }} | {{ k.last_used_at[:16] if k.last_used_at else t(request, 'lbl.never') }} |
| {{ t(request, 'portal.no_keys_hint') | safe }} | ||
{{ tmpl.description }}
{% endif %} {% if tmpl.experts %}| {{ t(request, 'portal.category_col') }} | {{ t(request, 'portal.models_col') }} |
|---|---|
| {{ cat }} |
{% if cat_cfg.models is defined %}
{% for m in cat_cfg.models %}
{{ m.model }}@{{ m.endpoint }}
{% if m.get('role','primary') == 'always' %}{% elif m.get('role','primary') == 'fallback' %}{% else %}{% endif %}
{% endfor %}
{% else %}
{{ cat_cfg.model }}@{{ cat_cfg.endpoint }}
{% endif %}
|
{{ t(request, 'portal.no_experts') }}
{% endif %} {% endfor %} {% else %}{{ t(request, 'portal.expert_tools_desc') | safe }}
| {{ t(request, 'portal.period_col') }} | {{ t(request, 'portal.total_col') }} | Input | Output | {{ t(request, 'portal.limit_col') }} | {{ t(request, 'portal.remaining_col') }} | {{ t(request, 'portal.progress_col') }} | {{ t(request, 'portal.reset_col') }} |
|---|---|---|---|---|---|---|---|
| {{ t(request, 'portal.period_daily') }} | {{ "{:,}".format(redis.daily_used) }} | {{ "{:,}".format(redis.get('daily_input', 0)) }} | {{ "{:,}".format(redis.get('daily_output', 0)) }} | {% if budget.daily_limit %}{{ "{:,}".format(budget.daily_limit) }}{% else %}∞{% endif %} | {% if budget.daily_limit %}{{ "{:,}".format([budget.daily_limit - redis.daily_used, 0]|max) }}{% else %}∞{% endif %} |
{% if budget.daily_limit %}
{% set pct = (redis.daily_used / budget.daily_limit * 100)|round(1) %}
{{ pct }}%
{% endif %}
|
|
| {{ t(request, 'portal.period_monthly') }} | {{ "{:,}".format(redis.monthly_used) }} | {{ "{:,}".format(redis.get('monthly_input', 0)) }} | {{ "{:,}".format(redis.get('monthly_output', 0)) }} | {% if budget.monthly_limit %}{{ "{:,}".format(budget.monthly_limit) }}{% else %}∞{% endif %} | {% if budget.monthly_limit %}{{ "{:,}".format([budget.monthly_limit - redis.monthly_used, 0]|max) }}{% else %}∞{% endif %} |
{% if budget.monthly_limit %}
{% set pct = (redis.monthly_used / budget.monthly_limit * 100)|round(1) %}
{{ pct }}%
{% endif %}
|
|
| {{ t(request, 'portal.period_total') }} | {{ "{:,}".format(redis.total_used) }} | {{ "{:,}".format(redis.get('total_input', 0)) }} | {{ "{:,}".format(redis.get('total_output', 0)) }} | {% if budget.total_limit %}{{ "{:,}".format(budget.total_limit) }}{% else %}∞{% endif %} | {% if budget.total_limit %}{{ "{:,}".format([budget.total_limit - redis.total_used, 0]|max) }}{% else %}∞{% endif %} | {{ t(request, 'portal.no_reset') }} |
| {{ t(request, 'portal.col_model') }} | {{ t(request, 'portal.filter_mode') }} | {{ t(request, 'portal.total_col') }} | Input | Output | {{ t(request, 'portal.requests_col') }} |
|---|---|---|---|---|---|
{{ row.model }} |
{{ row.moe_mode }} | {{ "{:,}".format(row.tokens) }} | {{ "{:,}".format(row.get('prompt_tokens', 0)) }} | {{ "{:,}".format(row.get('completion_tokens', 0)) }} | {{ row.requests }} |
No active requests
No recent activity
| {{ t(request, 'portal.col_timestamp') }} | {{ t(request, 'portal.col_session') }} | {{ t(request, 'portal.col_model') }} | {{ t(request, 'portal.col_api_key') }} | {{ t(request, 'portal.filter_mode') }} | {{ t(request, 'portal.col_prompt') }} | {{ t(request, 'portal.col_completion') }} | {{ t(request, 'portal.total_col') }} | Status | |
|---|---|---|---|---|---|---|---|---|---|
| {{ row.requested_at[:16].replace("T"," ") }} | {{ (row.session_id or '')[:8] }}… |
{{ row.model }}
{% if row.notes %}
{{ row.notes }}
{% else %}
{% endif %}
|
{% if row.key_label %}
{{ row.key_label }}
{% elif row.key_prefix %}
…{{ row.key_prefix[-6:] }}
{% else %}
—
{% endif %}
|
{{ row.moe_mode }} | {{ "{:,}".format(row.prompt_tokens) }} | {{ "{:,}".format(row.completion_tokens) }} | {{ "{:,}".format(row.total_tokens) }} | {% if row.status == "ok" %} ok {% else %} {{ row.status[:8] }} {% endif %} | |
| {{ t(request, 'portal.no_entries') }} | |||||||||
{{ request.session.get("new_api_key") }}
| Key-Prefix | Label | CC Profile | {{ t(request, 'portal.col_created') }} | {{ t(request, 'lbl.last_used') }} | Status | |
|---|---|---|---|---|---|---|
{{ k.key_prefix }}... |
{{ k.label or '—' }} | {% if available_cc_profiles %} {% else %} — {% endif %} | {{ k.created_at[:10] }} | {{ k.last_used_at[:16] if k.last_used_at else t(request, 'lbl.never') }} | {% if k.is_active %} {{ t(request, 'status.active') }} {% else %} {{ t(request, 'status.locked') }} {% endif %} | {% if k.is_active %} {% endif %} |
| {{ t(request, 'portal.no_api_keys') }} | ||||||
{{ t(request, 'portal.key_note') }}
{{ t(request, 'portal.api_bearer_desc') }}
curl {{ api_base }}/chat/completions \
-H "Authorization: Bearer moe-sk-xxxxxxxx..." \
-H "Content-Type: application/json" \
-d '{"model":"qwen2.5-coder:32b","messages":[{"role":"user","content":"Hallo!"}]}'
{{ t(request, 'portal.api_x_key_desc') | safe }}
curl {{ api_base }}/messages \
-H "x-api-key: moe-sk-xxxxxxxx..." \
-H "Content-Type: application/json" \
-d '{"model":"qwen2.5-coder:32b","max_tokens":1024,"messages":[{"role":"user","content":"Hallo!"}]}'
{{ t(request, 'portal.timezone_desc') }}
{{ t(request, 'portal.memory_desc') }}
{{ t(request, 'portal.my_templates_desc') | safe }}
{% if granted_templates %}{{ tmpl.id }}
{{ tmpl.id }}
{{ t(request, 'portal.cc_profiles_desc') }}
{{ prof.id }}
{{ t(request, 'portal.no_cc_profiles') }}
{{ t(request, 'portal.my_connections_desc') | safe }}
{{ t(request, 'portal.my_connections_desc') | safe }}
{{ t(request, 'portal.audit_log.subtitle') }}
| {{ t(request, 'portal.audit_log.col_time') }} | {{ t(request, 'portal.audit_log.col_model') }} | {{ t(request, 'portal.audit_log.col_mode') }} | {{ t(request, 'portal.audit_log.col_prompt') }} | {{ t(request, 'portal.audit_log.col_tokens') }} | {{ t(request, 'portal.audit_log.col_latency') }} |
|---|---|---|---|---|---|
| Loading… | |||||
{{ t(request, 'portal.audit_log.retention_hint').replace('{max}', retention_max|string) }}