mirror of
https://github.com/tiennm99/DocsGPT.git
synced 2026-10-11 12:11:45 +00:00
How the instance default, team allowances and user overrides resolve (including users in several teams), the quota window, who is charged for agent traffic, how cost budgets price models and what happens to unpriced ones, and the admin and user API.
118 lines
5.6 KiB
Plaintext
118 lines
5.6 KiB
Plaintext
API_KEY=<LLM api key (for example, open ai key)>
|
|
LLM_NAME=docsgpt
|
|
VITE_API_STREAMING=true
|
|
INTERNAL_KEY=<internal key for worker-to-backend authentication>
|
|
|
|
# Provider-specific API keys (optional - use these to enable multiple providers)
|
|
# OPENAI_API_KEY=<your-openai-api-key>
|
|
# ANTHROPIC_API_KEY=<your-anthropic-api-key>
|
|
# GOOGLE_API_KEY=<your-google-api-key>
|
|
# GROQ_API_KEY=<your-groq-api-key>
|
|
# NOVITA_API_KEY=<your-novita-api-key>
|
|
# OPEN_ROUTER_API_KEY=<your-openrouter-api-key>
|
|
|
|
# Embedding model. Leave it commented out and DocsGPT picks one for you: a
|
|
# fresh install is pinned to granite (multilingual, 32k context, the same 768
|
|
# dimensions as the legacy model), and an install that already has sources
|
|
# keeps the model its index was built with.
|
|
#
|
|
# Setting it here overrides that pin, so only set it deliberately. On an index
|
|
# that already has vectors, changing it without re-embedding leaves queries
|
|
# searching a different vector space than the stored vectors -- which fails
|
|
# silently, because both models are 768-dimensional. To switch, set it and then
|
|
# run:
|
|
# python -m docsgpt.scripts.reembed
|
|
# EMBEDDINGS_NAME=ibm-granite/granite-embedding-311m-multilingual-r2
|
|
|
|
# Remote Embeddings (Optional - for using a remote embeddings API instead of
|
|
# running the model in-process). When set, the app calls the remote API and
|
|
# never loads a local model, which keeps the API and worker containers small.
|
|
EMBEDDINGS_BASE_URL=
|
|
EMBEDDINGS_KEY=
|
|
|
|
# Run the embedding model on the Celery worker instead of in every process that
|
|
# embeds. The API embeds each query it serves, so without this it holds its own
|
|
# copy of the model (~370 MB more resident). Costs a broker round trip per
|
|
# query. Retrieval then needs a worker consuming EMBEDDINGS_QUEUE -- set this to
|
|
# false if you run the API on its own.
|
|
# EMBEDDINGS_DELEGATE_TO_WORKER=true
|
|
# EMBEDDINGS_QUEUE=embeddings
|
|
# EMBEDDINGS_DELEGATE_TIMEOUT=60
|
|
|
|
# Documents per local ONNX forward pass. Each pass pads every input up to the
|
|
# longest one in it, and that waste grows with the square of chunk length, so
|
|
# larger is not faster here: at the 1250-token default chunk size, 32 peaked at
|
|
# 6.6 GB and took 326s, while 1 peaked at 2.9 GB and took 90s. Raise it only if
|
|
# your chunks are short and uniform. Distinct from EMBEDDINGS_BATCH_SIZE, which
|
|
# is chunks per store transaction / per remote embed request.
|
|
# EMBEDDINGS_MODEL_BATCH_SIZE=1
|
|
|
|
#For Azure (you can delete it if you don't use Azure)
|
|
OPENAI_API_BASE=
|
|
OPENAI_API_VERSION=
|
|
AZURE_DEPLOYMENT_NAME=
|
|
AZURE_EMBEDDINGS_DEPLOYMENT_NAME=
|
|
|
|
#Azure AD Application (client) ID
|
|
MICROSOFT_CLIENT_ID=your-azure-ad-client-id
|
|
#Azure AD Application client secret
|
|
MICROSOFT_CLIENT_SECRET=your-azure-ad-client-secret
|
|
#Azure AD Tenant ID (or 'common' for multi-tenant)
|
|
MICROSOFT_TENANT_ID=your-azure-ad-tenant-id
|
|
#If you are using a Microsoft Entra ID tenant,
|
|
#configure the AUTHORITY variable as
|
|
#"https://login.microsoftonline.com/TENANT_GUID"
|
|
#or "https://login.microsoftonline.com/contoso.onmicrosoft.com".
|
|
#Alternatively, use "https://login.microsoftonline.com/common" for multi-tenant app.
|
|
MICROSOFT_AUTHORITY=https://{tenantId}.ciamlogin.com/{tenantId}
|
|
|
|
|
|
# POSTGRES_URI=postgresql://docsgpt:docsgpt@localhost:5432/docsgpt
|
|
|
|
# Authentication (optional - default is no auth; see docs: Deploying -> App Configuration)
|
|
# AUTH_TYPE=None|simple_jwt|session_jwt|oidc
|
|
# JWT_SECRET_KEY=<long random string; required in production and shared by every replica>
|
|
# Local development auto-generates .jwt_secret_key when this is unset.
|
|
|
|
# OIDC SSO (only when AUTH_TYPE=oidc; works with Authentik, Keycloak, Okta, ...)
|
|
# OIDC_ISSUER=<issuer URL, e.g. https://auth.example.com/application/o/docsgpt/>
|
|
# OIDC_CLIENT_ID=<client id registered at the IdP>
|
|
# OIDC_CLIENT_SECRET=<only for confidential clients; PKCE is always used>
|
|
# OIDC_FRONTEND_URL=<browser-facing app URL, e.g. http://localhost:5173>
|
|
# OIDC_SCOPES=openid profile email
|
|
# OIDC_USER_ID_CLAIM=sub
|
|
# OIDC_REDIRECT_URI=<override callback URL when behind a reverse proxy>
|
|
# OIDC_SESSION_LIFETIME_SECONDS=28800
|
|
# OIDC_PROVIDER_NAME=<sign-in button label, e.g. Acme SSO; unset shows "SSO">
|
|
# OIDC_ALLOWED_GROUPS=<comma-separated IdP group allowlist; unset = any authenticated user>
|
|
# OIDC_GROUPS_CLAIM=groups
|
|
# OIDC_ADMIN_GROUPS=<comma-separated IdP groups granted the admin role; unset = no OIDC admin mapping>
|
|
# Add offline_access to OIDC_SCOPES for silent session renewal on IdPs that
|
|
# require it for refresh tokens (Authentik does; Keycloak does not).
|
|
|
|
# RBAC (admin/user roles). Persisted admin grants live in the user_roles table
|
|
# and apply only under AUTH_TYPE=oidc — manage them with scripts/grant_admin.py
|
|
# (bootstrap the first admin) or OIDC_ADMIN_GROUPS above. LOCAL_MODE_ADMIN is the
|
|
# ONLY non-DB admin path; it applies solely to AUTH_TYPE=None (no-auth self-host)
|
|
# and MUST stay false in any networked deployment.
|
|
# LOCAL_MODE_ADMIN=false
|
|
|
|
# SCIM 2.0 provisioning (IdP-driven user create/deactivate at /scim/v2;
|
|
# pair with OIDC_USER_ID_CLAIM=email so SCIM userName matches the OIDC user id)
|
|
# SCIM_ENABLED=false
|
|
# SCIM_TOKEN=<long random bearer token presented by the IdP's SCIM client>
|
|
|
|
# Personal access tokens (scoped API tokens for CLI and CI/CD; Settings → Access Tokens).
|
|
# Available with AUTH_TYPE=oidc or unset.
|
|
# PAT_ENABLED=true
|
|
# PAT_DEFAULT_LIFETIME_DAYS=90
|
|
# PAT_MAX_LIFETIME_DAYS=365
|
|
# PAT_ALLOW_NON_EXPIRING=false
|
|
# PAT_MAX_PER_USER=25
|
|
|
|
# Usage quotas (set limits in Admin → Quotas). Usage is counted per calendar
|
|
# day, week or month in UTC. Models without a declared price are recorded at $0
|
|
# unless a fallback [input, output] USD rate per 1M tokens is given.
|
|
# QUOTA_PERIOD=month
|
|
# QUOTA_UNPRICED_RATE_PER_MILLION=[0.5, 1.5]
|