Confirmed in llama-server logs: a real request hit exactly n_gen=4096 (the old floor) and returned no answer -- reasoning_content alone ate the whole budget before any content was written, exactly the failure mode this config's own comment predicted. 16384 is the user-chosen middle ground between 8192 and 32768: ~10 min worst-case at ~26.7 t/s, well under the 65536-token context window. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_018WHfjWrSEcGhCoeu6dQfDa
79 lines
3.8 KiB
YAML
79 lines
3.8 KiB
YAML
model_list:
|
|
- model_name: qwen3.8-27b-local
|
|
litellm_params:
|
|
# Static name — llama.cpp serves whatever model it loaded regardless of
|
|
# what's requested here; this string isn't shell-expanded (this file
|
|
# isn't docker-compose.yml, .env vars don't reach it).
|
|
model: openai/qwen3.8-27b-local
|
|
api_base: http://llama-server:8080/v1
|
|
api_key: local
|
|
# Qwen3 is a reasoning model — it spends output tokens on
|
|
# reasoning_content before ever writing content. Callers that don't
|
|
# set their own max_tokens (Open WebUI's default request didn't) hit
|
|
# llama.cpp's low default, so the model runs out mid-thought and
|
|
# content comes back empty. This is a floor, not a cap — any caller
|
|
# that passes its own max_tokens still overrides it.
|
|
# Raised from 4096: confirmed in the wild (llama-server logs) that
|
|
# 4096 wasn't enough — reasoning_content alone ate the whole budget on
|
|
# a real request (n_gen = 4096 exactly, no answer ever written). At
|
|
# ~26.7 t/s and a 65536-token context window, 16384 is a ~10-minute
|
|
# worst case, not the full ~20-minute worst case 32768 would be.
|
|
max_tokens: 16384
|
|
model_info:
|
|
# Shadow cloud-cost estimate — priced against Claude Sonnet 5's published
|
|
# rate, not real spend (this proxy only ever routes to the local model).
|
|
# Source: https://platform.claude.com/docs/en/about-claude/pricing,
|
|
# checked 2026-08-25. Update these two numbers if that page changes.
|
|
input_cost_per_token: 0.000002 # $2 / MTok
|
|
output_cost_per_token: 0.00001 # $10 / MTok
|
|
|
|
- model_name: local-embedding
|
|
litellm_params:
|
|
# Served by the dedicated embedding-server (nomic-embed-text-v1.5), not
|
|
# the chat model — see docker-compose.yml. Called by litellm-pgvector
|
|
# to embed knowledgebase content, and available directly at
|
|
# /v1/embeddings for anything else that wants it.
|
|
model: openai/local-embedding
|
|
api_base: http://embedding-server:8080/v1
|
|
api_key: local
|
|
model_info:
|
|
mode: embedding
|
|
|
|
# SearXNG-backed web search — a standalone REST endpoint (/v1/search/searxng-search),
|
|
# NOT a model-callable tool and not auto-injected into chat completions. See
|
|
# docs/research/litellm-searxng-search.md. Requires the litellm container to
|
|
# resolve search.home — see the `extra_hosts` entry in docker-compose.yml.
|
|
search_tools:
|
|
- search_tool_name: searxng-search
|
|
litellm_params:
|
|
search_provider: searxng
|
|
api_base: http://search.home/
|
|
|
|
# Knowledgebase / RAG, backed by the litellm-pgvector companion service (NOT
|
|
# Qdrant — LiteLLM's native vector-store feature has no Qdrant provider, see
|
|
# docs/research/litellm-knowledgebase.md). vector_store_id is this proxy's
|
|
# own identifier for the store, not assigned by a backend.
|
|
# ponytail: field names here (custom_llm_provider: pg_vector, api_base
|
|
# pointed at litellm-pgvector) are the best fit from the litellm-pgvector
|
|
# README, not confirmed against a running deploy yet — smoke-test before
|
|
# relying on it. See issue #24.
|
|
vector_store_registry:
|
|
- vector_store_name: memory-and-notes
|
|
litellm_params:
|
|
vector_store_id: "memory-and-notes"
|
|
custom_llm_provider: pg_vector
|
|
api_base: http://litellm-pgvector:8000
|
|
embedding_model: local-embedding
|
|
|
|
router_settings:
|
|
# ponytail: LiteLLM's request-prioritization scheduler is beta (see
|
|
# docs/proxy-request-priority.md) — exact settings key/shape must be
|
|
# confirmed against LiteLLM's current docs and smoke-tested against
|
|
# llama.cpp before workloads depend on it. Redis is available (see the
|
|
# litellm service's REDIS_* env vars in docker-compose.yml) if the
|
|
# scheduler needs shared state for it.
|
|
enable_priority_scheduling: true
|
|
|
|
general_settings:
|
|
master_key: os.environ/LITELLM_MASTER_KEY
|