mirror of
https://github.com/tiennm99/DocsGPT.git
synced 2026-10-11 03:12:55 +00:00
The backend import package is now docsgpt, the name it will carry on PyPI; application was far too generic to install into anyone's site-packages. git mv plus a mechanical rewrite of every import, dotted string and path reference: 734 Python files, the compose files, Dockerfile, workflows, docs, setup scripts, devcontainer, k8s manifests, vscode config, pytest and coverage config, .gitignore. Behaviour is unchanged. Kept for one release: - A top-level application package whose meta-path finder resolves application.x.y to the already-imported docsgpt.x.y object, so old imports and entry points (celery -A application.app.celery, uvicorn application.asgi:asgi_app) keep working with a FutureWarning. - Celery registers every application.* task name as an alias of its docsgpt.* task on start-up, so messages queued by the previous release still run. The redbeat key prefix moves to redbeat:docsgpt:v2: so schedule entries the previous release wrote are left unread instead of firing twice. The backend image builds from the repository root (docker build -f docsgpt/Dockerfile .) so it can ship the alias package; a root .dockerignore allow-lists docsgpt/ and application/ and keeps caches, local data, .env files, the sample index files and the Dockerfile out. Compose and the image workflows point at the new context.
104 lines
5.0 KiB
Plaintext
104 lines
5.0 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>
|