mirror of
https://github.com/imartinez/privateGPT.git
synced 2026-07-16 17:00:12 +00:00
306 lines
12 KiB
YAML
306 lines
12 KiB
YAML
# The default configuration file.
|
|
# More information about configuration can be found in the documentation: https://docs.privategpt.dev/
|
|
# Syntax in `private_pgt/settings/settings.py`
|
|
server:
|
|
env_name: ${APP_ENV:prod}
|
|
root_path: ${PGPT_ROOT_PATH:}
|
|
port: ${PORT:8080}
|
|
cors:
|
|
enabled: ${PGPT_CORS_ENABLED:true}
|
|
allow_origins: ["*"]
|
|
allow_methods: ["*"]
|
|
allow_headers: ["*"]
|
|
auth:
|
|
enabled: false
|
|
# python -c 'import base64; print("Basic " + base64.b64encode("secret:key".encode()).decode())'
|
|
# 'secret' is the username and 'key' is the password for basic auth by default
|
|
# If the auth is enabled, this value must be set in the "Authorization" header of the request.
|
|
secret: "Basic c2VjcmV0OmtleQ=="
|
|
network:
|
|
offline_mode: ${PGPT_OFFLINE_MODE,HF_HUB_OFFLINE:false}
|
|
proxy:
|
|
enabled: ${PROXY_ENABLED:false}
|
|
http_proxy: ${HTTP_PROXY,http_proxy:}
|
|
https_server: ${HTTPS_PROXY,https_proxy:}
|
|
username: ${PROXY_USERNAME:}
|
|
password: ${PROXY_PASSWORD:}
|
|
bypass: ${NO_PROXY:localhost,127.0.0.1}
|
|
ssl:
|
|
cert_file: ${SSL_CERT_FILE:}
|
|
cert_dir: ${SSL_CERT_DIR:}
|
|
verify_ssl: ${SSL_VERIFY:true}
|
|
api_doc:
|
|
enabled: ${PGPT_SWAGGER_ENABLED:true}
|
|
swagger_url: ${PGPT_SWAGGER_URL:/docs}
|
|
redoc_url: ${PGPT_REDOC_URL:/redoc}
|
|
openapi_url: ${PGPT_OPENAPI_URL:/openapi.json}
|
|
ui:
|
|
enabled: ${PGPT_UI_ENABLED:true}
|
|
path: ${PGPT_UI_PATH:/ui}
|
|
debug_mode: ${DEBUG_MODE:false}
|
|
max_workers: ${PGPT_MAX_WORKERS:0}
|
|
|
|
data:
|
|
local_ingestion:
|
|
enabled: ${LOCAL_INGESTION_ENABLED:false}
|
|
allow_ingest_from: ["*"]
|
|
local_data_folder: ${PGPT_LOCAL_DATA_FOLDER:local_data/private_gpt}
|
|
reader: ${PGPT_DATA_READER:auto}
|
|
enable_fake_progress: ${PGPT_ENABLE_FAKE_PROGRESS:false}
|
|
enable_reuse_generated_nodes_before: ${PGPT_ENABLE_REUSE_GENERATED_NODES_BEFORE:false}
|
|
enable_term_extractor: ${PGPT_ENABLE_TERM_EXTRACTOR:false}
|
|
max_num_nodes: ${PGPT_MAX_NUM_NODES:0}
|
|
use_async: ${PGPT_USE_ASYNC:false}
|
|
|
|
observability:
|
|
mode: ${PGPT_OBSERVABILITY:none}
|
|
|
|
retrieval:
|
|
top_k: ${PGPT_RETRIEVAL_TOP_K:32}
|
|
maximize_top_k: ${PGPT_MAXIMIZE_TOP_K:true}
|
|
max_merging_recalculations: ${PGPT_MAX_MERGING_RECALCULATIONS:3}
|
|
|
|
chat:
|
|
allow_use_default_prompt: ${PGPT_ALLOW_USE_DEFAULT_PROMPT:true}
|
|
allow_use_context: ${PGPT_ALLOW_USE_CONTEXT:true}
|
|
allow_generate_citations: ${PGPT_ALLOW_GENERATE_CITATIONS:true}
|
|
allow_use_reasoning: ${PGPT_ALLOW_USE_REASONING:true}
|
|
return_missing_citations: ${PGPT_RETURN_MISSING_CITATIONS:false}
|
|
deduplicate_context_in_history: ${PGPT_DEDUPLICATE_CONTEXT_IN_HISTORY:true}
|
|
add_context_to_system_prompt: ${PGPT_ADD_CONTEXT_TO_SYSTEM_PROMPT:false}
|
|
force_to_return_citations: ${PGPT_FORCE_TO_RETURN_CITATIONS:false}
|
|
numerical_shorter_citations: ${PGPT_NUMERICAL_SHORTER_CITATIONS:false}
|
|
condense_strategy: ${PGPT_CONDENSE_CHAT_HISTORY:condenser}
|
|
format_context_strategy: ${PGPT_FORMAT_CONTEXT:list}
|
|
maximum_context_length: ${PGPT_MAXIMUM_CONTEXT_LENGTH:0}
|
|
assistant_name: ${PGPT_ASSISTANT_NAME:PrivateGPT}
|
|
assistant_description: ${PGPT_ASSISTANT_DESCRIPTION:}
|
|
maximum_history_length: ${PGPT_MAXIMUM_HISTORY_LENGTH:0}
|
|
tldr_timeout: ${PGPT_TLDR_TIMEOUT:300}
|
|
tldr_minimum_threshold_seconds: ${PGPT_TLDR_MINIMUM_THRESHOLD_SECONDS:1.5}
|
|
multiplexing_threshold: ${PGPT_MULTIPLEXING_THRESHOLD:10}
|
|
maximum_concurrent_requests: ${PGPT_MAXIMUM_CONCURRENT_REQUESTS:10}
|
|
maximum_blob_size: ${PGPT_MAXIMUM_BLOB_SIZE:26214400}
|
|
|
|
stream:
|
|
broker: ${PGPT_ASYNC_BROKER:memory}
|
|
stream_expiration: ${PGPT_ASYNC_STREAM_EXPIRATION:3600}
|
|
maximum_stream_length: ${PGPT_ASYNC_MAXIMUM_STREAM_LENGTH:10000}
|
|
stream_prefix: ${PGPT_ASYNC_STREAM_PREFIX:stream}
|
|
status_prefix: ${PGPT_ASYNC_STATUS_PREFIX:status}
|
|
minimum_connections: ${PGPT_ASYNC_MINIMUM_CONNECTIONS:50}
|
|
|
|
llm:
|
|
default_model: ${PGPT_LLM_DEFAULT:}
|
|
auto_discover_models: ${PGPT_LLM_AUTO_DISCOVER_MODELS:true}
|
|
|
|
# We need to have at least one model defined here, even if it's just a placeholder for the default model defined above.
|
|
models: []
|
|
|
|
embedding:
|
|
default_model: ${PGPT_EMBEDDING_DEFAULT:}
|
|
auto_discover_models: ${PGPT_EMBEDDING_AUTO_DISCOVER_MODELS:true}
|
|
ingest_mode: simple
|
|
|
|
huggingface:
|
|
username: ${PGPT_HUGGINGFACE_USERNAME:zylon-ai}
|
|
access_token: ${PGPT_HUGGINGFACE_TOKEN:}
|
|
# Warning: Enabling this option will allow the model to download and execute code from the internet.
|
|
# Nomic AI requires this option to be enabled to use the model, be aware if you are using a different model.
|
|
trust_remote_code: true
|
|
|
|
vectorstore:
|
|
database: ${PGPT_VECTORSTORE:qdrant}
|
|
# Needs to match the selected embeddings model
|
|
embed_dim: ${PGPT_EMBED_DIM:1024}
|
|
# Determine multi-tenancy type
|
|
multitenancy: ${PGPT_MULTITENANCY:logical}
|
|
# Default collection name when logical multitenancy is enabled
|
|
default_collection: ${PGPT_DEFAULT_COLLECTION:zgptvector}
|
|
|
|
node_store:
|
|
index_store: ${PGPT_INDEX_STORE:simple}
|
|
doc_store: ${PGPT_DOC_STORE:simple}
|
|
|
|
openai:
|
|
api_base: ${OPENAI_API_BASE:https://api.openai.com/v1}
|
|
api_key: ${OPENAI_API_KEY:}
|
|
embedding_api_base: ${OPENAI_EMBEDDING_API_BASE:}
|
|
embedding_api_key: ${OPENAI_EMBEDDING_API_KEY:}
|
|
request_timeout: ${OPENAI_REQUEST_TIMEOUT:600.0}
|
|
|
|
triton:
|
|
api_base: ${PGPT_TRITON_API_BASE:http://localhost:8000}
|
|
ssl: ${PGPT_TRITON_SSL:false}
|
|
grpc_keep_alive_time: ${PGPT_TRITON_GRPC_KEEP_ALIVE_TIME:30000}
|
|
grpc_keep_alive_timeout: ${PGPT_TRITON_GRPC_KEEP_ALIVE_TIMEOUT:20000}
|
|
grpc_permit_keep_alive_without_calls: ${PGPT_TRITON_GRPC_PERMIT_KEEP_ALIVE_WITHOUT_CALLS:true}
|
|
grpc_max_pings_without_data: ${PGPT_TRITON_GRPC_MAX_PINGS_WITHOUT_DATA:0}
|
|
|
|
docling:
|
|
mode: ${PGPT_DOCLING_MODE:api}
|
|
api_base: ${PGPT_DOCLING_API_BASE:http://localhost:5001}
|
|
api_version: ${PGPT_DOCLING_API_VERSION:v1alpha}
|
|
api_key: ${PGPT_DOCLING_API_KEY:}
|
|
tenant_id: ${PGPT_DOCLING_TENANT_ID:}
|
|
num_threads: ${PGPT_DOCLING_NUM_WORKERS:4}
|
|
use_ocr: ${PGPT_DOCLING_USE_OCR:true}
|
|
ocr_model: ${PGPT_DOCLING_OCR_MODEL:easyocr}
|
|
use_gpu: ${PGPT_DOCLING_USE_GPU:false}
|
|
force_full_page_ocr: ${PGPT_DOCLING_FORCE_FULL_PAGE_OCR:false}
|
|
bitmap_area_threshold: ${PGPT_DOCLING_BITMAP_AREA_THRESHOLD:0.2}
|
|
do_cell_matching: ${PGPT_DOCLING_DO_CELL_MATCHING:true}
|
|
image_mode: ${PGPT_DOCLING_IMAGE_MODE:placeholder}
|
|
table_mode: ${PGPT_DOCLING_TABLE_MODE:accurate}
|
|
image_classifier: ${PGPT_DOCLING_IMAGE_CLASSIFIER:none}
|
|
image_descriptor: ${PGPT_DOCLING_IMAGE_DESCRIPTOR:none}
|
|
langs: ${PGPT_DOCLING_LANGS:["en-US", "fr-FR", "de-DE", "es-ES"]}
|
|
use_async: ${PGPT_DOCLING_USE_ASYNC:true}
|
|
|
|
celery:
|
|
use_workers: true
|
|
acks_late: ${PGPT_CELERY_ACKS_LATE:true}
|
|
soft_time_limit: ${PGPT_CELERY_SOFT_TIME_LIMIT:}
|
|
hard_time_limit: ${PGPT_CELERY_HARD_TIME_LIMIT:}
|
|
visibility_timeout: ${PGPT_CELERY_VISIBILITY_TIMEOUT:21600}
|
|
|
|
# Broker to which workers will notify the result of tasks
|
|
tasks_results_broker:
|
|
mode: ${PGPT_TASKS_RESULTS_BROKER_MODE:rabbitmq}
|
|
|
|
rabbitmq:
|
|
ssl: ${PGPT_RABBITMQ_SSL:false}
|
|
host: ${PGPT_RABBITMQ_HOST:localhost:5672}
|
|
username: ${PGPT_RABBITMQ_USERNAME:guest}
|
|
password: ${PGPT_RABBITMQ_PASSWORD:guest}
|
|
|
|
database:
|
|
host: ${PGPT_DATABASE_HOST:localhost:5432}
|
|
database: ${PGPT_DATABASE_NAME:backend-main}
|
|
username: ${PGPT_DATABASE_USERNAME:postgres}
|
|
password: ${PGPT_DATABASE_PASSWORD:postgres}
|
|
|
|
redis:
|
|
host: ${PGPT_REDIS_HOST:localhost:6379}
|
|
username: ${PGPT_REDIS_USERNAME:}
|
|
password: ${PGPT_REDIS_PASSWORD:}
|
|
database: ${PGPT_REDIS_DATABASE:0}
|
|
|
|
unstructured:
|
|
url: ${PGPT_UNSTRUCTURED_URL:}
|
|
|
|
qdrant:
|
|
url: ${PGPT_QDRANT_URL:}
|
|
path: ${PGPT_QDRANT_PATH:local_data/qdrant}
|
|
hybrid_search: ${PGPT_QDRANT_HYBRID_SEARCH:false}
|
|
distance_metric: ${PGPT_QDRANT_DISTANCE_METRIC:cosine}
|
|
hnsw_m: ${PGPT_QDRANT_HSNW_M:0}
|
|
hnsw_payload_m: ${PGPT_QDRANT_HSNW_PAYLOAD_M:16}
|
|
prefer_grpc: ${PGPT_QDRANT_PREFER_GRPC:true}
|
|
timeout: ${PGPT_QDRANT_TIMEOUT:120000}
|
|
|
|
s3:
|
|
endpoint_url: ${PGPT_S3_ENDPOINT_URL:}
|
|
public_endpoint_url: ${PGPT_S3_PUBLIC_ENDPOINT_URL:}
|
|
path_prefix: ${PGPT_S3_PATH_PREFIX:}
|
|
access_key_id: ${PGPT_S3_ACCESS_KEY_ID:}
|
|
secret_access_key: ${PGPT_S3_SECRET_ACCESS_KEY:}
|
|
durable_bucket_name: ${PGPT_S3_DURABLE_BUCKET_NAME:zylon-storage}
|
|
temporary_bucket_name: ${PGPT_S3_TEMPORARY_BUCKET_NAME:zylon-temporary}
|
|
|
|
phoenix:
|
|
url: ${PGPT_PHOENIX_URL:http://localhost:6006}
|
|
|
|
opik:
|
|
host: ${PGPT_OPIK_HOST:http://localhost:5173/}
|
|
project_name: ${PGPT_OPIK_PROJECT_NAME:}
|
|
api_key: ${PGPT_OPIK_API_KEY:}
|
|
workspace: ${PGPT_OPIK_WORKSPACE:default}
|
|
task_threads: ${PGPT_OPIK_TASK_THREADS:16}
|
|
|
|
sandbox:
|
|
provider: ${PGPT_SANDBOX_PROVIDER:local}
|
|
base_url: ${PGPT_SANDBOX_URL:}
|
|
timeout: ${PGPT_SANDBOX_TIMEOUT:60}
|
|
|
|
|
|
code_execution:
|
|
provider: ${PGPT_CODE_EXECUTION_PROVIDER:local}
|
|
workspace_path: ${PGPT_CODE_EXECUTION_WORKSPACE_PATH:}
|
|
timeout: ${PGPT_CODE_EXECUTION_TIMEOUT:60}
|
|
max_output_bytes: ${PGPT_CODE_EXECUTION_MAX_OUTPUT_BYTES:1048576}
|
|
|
|
web_fetch:
|
|
enabled: ${PGPT_WEBFETCH_ENABLED:false}
|
|
timeout_seconds: ${PGPT_WEBFETCH_TIMEOUT_SECONDS:15}
|
|
pool_size: ${PGPT_WEBFETCH_POOL_SIZE:8}
|
|
pool_idle_timeout_seconds: ${PGPT_WEBFETCH_POOL_IDLE_TIMEOUT:300}
|
|
pool_max_pages_per_browser: ${PGPT_WEBFETCH_POOL_MAX_PAGES:4}
|
|
|
|
database_query:
|
|
timeout_seconds: ${PGPT_DATABASE_QUERY_TIMEOUT_SECONDS:1000}
|
|
batch_size: ${PGPT_DATABASE_QUERY_BATCH_SIZE:1000}
|
|
max_mb_result: ${PGPT_DATABASE_QUERY_MAX_MB_RESULT:150}
|
|
|
|
web_search:
|
|
enabled: ${PGPT_WEBSEARCH_ENABLED:false}
|
|
provider: ${PGPT_WEBSEARCH_PROVIDER:mock}
|
|
processor: ${PGPT_WEBSEARCH_PROCESSOR:best_links}
|
|
num_links: ${PGPT_WEBSEARCH_NUM_LINKS:20}
|
|
mode_quality: ${PGPT_WEBSEARCH_MODE_QUALITY:fast}
|
|
cached: ${PGPT_WEBSEARCH_CACHED:false}
|
|
context_token: ${PGPT_WEBSEARCH_CONTEXT_TOKEN:0}
|
|
|
|
fast_params:
|
|
max_timeout_seconds: ${PGPT_WEBSEARCH_FAST_MAX_TIMEOUT_SECONDS:100}
|
|
max_summary_timeout_seconds: ${PGPT_WEBSEARCH_FAST_MAX_SUMMARY_TIMEOUT_SECONDS:40}
|
|
num_references: ${PGPT_WEBSEARCH_FAST_NUM_REFERENCES:3}
|
|
num_concurrent_consumers: ${PGPT_WEBSEARCH_FAST_NUM_CONCURRENT_CONSUMERS:6}
|
|
max_parallel_summary: ${PGPT_WEBSEARCH_FAST_MAX_PARALLEL_SUMMARY:2}
|
|
index_weight: ${PGPT_WEBSEARCH_FAST_INDEX_WEIGHT:0}
|
|
token_weight: ${PGPT_WEBSEARCH_FAST_TOKEN_WEIGHT:1}
|
|
token_exponent_penalty: ${PGPT_WEBSEARCH_FAST_TOKEN_EXPONENT_PENALTY:4}
|
|
accurate_params:
|
|
max_timeout_seconds: ${PGPT_WEBSEARCH_ACCURATE_MAX_TIMEOUT_SECONDS:500}
|
|
max_summary_timeout_seconds: ${PGPT_WEBSEARCH_ACCURATE_MAX_SUMMARY_TIMEOUT_SECONDS:100}
|
|
num_references: ${PGPT_WEBSEARCH_ACCURATE_NUM_REFERENCES:5}
|
|
num_concurrent_consumers: ${PGPT_WEBSEARCH_ACCURATE_NUM_CONCURRENT_CONSUMERS:4}
|
|
max_parallel_summary: ${PGPT_WEBSEARCH_ACCURATE_MAX_PARALLEL_SUMMARY:2}
|
|
index_weight: ${PGPT_WEBSEARCH_ACCURATE_INDEX_WEIGHT:1}
|
|
token_weight: ${PGPT_WEBSEARCH_ACCURATE_TOKEN_WEIGHT:1}
|
|
token_exponent_penalty: ${PGPT_WEBSEARCH_ACCURATE_TOKEN_EXPONENT_PENALTY:4}
|
|
|
|
brave:
|
|
api_key: ${PGPT_BRAVE_API_KEY:}
|
|
rate_limit: ${PGPT_BRAVE_RATE_LIMIT:1}
|
|
|
|
skills:
|
|
database: ${SKILLS_DATABASE:sqlite}
|
|
storage_provider: ${SKILLS_STORAGE_PROVIDER:local}
|
|
skill_injection_mode: ${SKILL_INJECTION_MODE:system_prompt}
|
|
maximum_loaded_skills: ${SKILL_MAXIMUM_LOADED_SKILLS:1}
|
|
|
|
semaphore:
|
|
mode: ${PGPT_SEMAPHORE_MODE:memory}
|
|
|
|
transformation:
|
|
pptx:
|
|
vision:
|
|
retry_number: ${PGPT_TRANSFORMATION_PPTX_VISION_RETRY_NUMBER:3}
|
|
enable_evaluation: ${PGPT_TRANSFORMATION_PPTX_VISION_ENABLE_EVALUATION:true}
|
|
max_concurrent: ${PGPT_TRANSFORMATION_PPTX_VISION_MAX_CONCURRENT:4}
|
|
batch_size: ${PGPT_TRANSFORMATION_PPTX_VISION_BATCH_SIZE:8}
|
|
max_iterations: ${PGPT_TRANSFORMATION_PPTX_VISION_MAX_ITERATIONS:2}
|
|
enable_semaphore: ${PGPT_TRANSFORMATION_PPTX_ENABLE_SEMAPHORE:false}
|
|
mode: ${PGPT_TRANSFORMATION_PPTX_VISION_MODE:none}
|
|
|
|
docling:
|
|
vision:
|
|
retry_number: ${PGPT_TRANSFORMATION_DOCLING_VISION_RETRY_NUMBER:3}
|
|
enable_evaluation: ${PGPT_TRANSFORMATION_DOCLING_VISION_ENABLE_EVALUATION:true}
|
|
max_concurrent: ${PGPT_TRANSFORMATION_DOCLING_VISION_MAX_CONCURRENT:4}
|
|
batch_size: ${PGPT_TRANSFORMATION_DOCLING_VISION_BATCH_SIZE:8}
|
|
max_iterations: ${PGPT_TRANSFORMATION_DOCLING_VISION_MAX_ITERATIONS:2}
|
|
enable_semaphore: ${PGPT_TRANSFORMATION_DOCLING_ENABLE_SEMAPHORE:false}
|
|
mode: ${PGPT_TRANSFORMATION_DOCLING_VISION_MODE:none}
|