189 lines
8.1 KiB
Python
189 lines
8.1 KiB
Python
import os
|
||
|
||
# Required parameters
|
||
# API Settings
|
||
BACKEND_HOST = os.getenv("BACKEND_HOST", "https://api-dev.gptbase.ai")
|
||
MASTERKEY = os.getenv("MASTERKEY", "master")
|
||
FASTAPI_URL = os.getenv('FASTAPI_URL', 'http://127.0.0.1:8001')
|
||
|
||
# LLM Token Settings
|
||
MAX_CONTEXT_TOKENS = int(os.getenv("MAX_CONTEXT_TOKENS", 200000))
|
||
MAX_OUTPUT_TOKENS = int(os.getenv("MAX_OUTPUT_TOKENS", 8000))
|
||
|
||
# Optional parameters
|
||
# Summarization Settings
|
||
SUMMARIZATION_MAX_TOKENS = int(MAX_CONTEXT_TOKENS/2)
|
||
SUMMARIZATION_TOKENS_TO_KEEP = int(SUMMARIZATION_MAX_TOKENS/3)
|
||
DEFAULT_TRIM_TOKEN_LIMIT = SUMMARIZATION_MAX_TOKENS - SUMMARIZATION_TOKENS_TO_KEEP + 5000
|
||
|
||
# Agent Cache Settings
|
||
TOOL_CACHE_MAX_SIZE = int(os.getenv("TOOL_CACHE_MAX_SIZE", 20))
|
||
TOOL_CACHE_TTL = int(os.getenv("TOOL_CACHE_TTL", 180))
|
||
TOOL_CACHE_AUTO_RENEW = os.getenv("TOOL_CACHE_AUTO_RENEW", "true") == "true"
|
||
|
||
# Project Settings
|
||
PROJECT_DATA_DIR = os.getenv("PROJECT_DATA_DIR", "./projects/data")
|
||
SKILLS_DIR = os.getenv("SKILLS_DIR", "./skills")
|
||
PROJECT_NAME = os.getenv("PROJECT_NAME", "support")
|
||
|
||
# Tokenizer Settings
|
||
TOKENIZERS_PARALLELISM = os.getenv("TOKENIZERS_PARALLELISM", "true")
|
||
|
||
# Embedding Model Settings
|
||
OPENAI_API_KEY = os.getenv("OPENAI_API_KEY", "sk-hsKClH0Z695EkK5fDdB2Ec2fE13f4fC1B627BdBb8e554b5b-4")
|
||
EMBEDDING_BASE_URL = os.getenv("EMBEDDING_BASE_URL", "https://one-dev.felo.me/v1")
|
||
EMBEDDING_API_KEY = os.getenv("EMBEDDING_API_KEY", OPENAI_API_KEY)
|
||
EMBEDDING_MODEL_NAME = os.getenv("EMBEDDING_MODEL_NAME", "text-embedding-3-small")
|
||
EMBEDDING_DIMENSIONS = int(os.getenv("EMBEDDING_DIMENSIONS", "384"))
|
||
EMBEDDING_TIMEOUT = int(os.getenv("EMBEDDING_TIMEOUT", "30"))
|
||
|
||
# Tool Output Length Control Settings
|
||
TOOL_OUTPUT_MAX_LENGTH = SUMMARIZATION_MAX_TOKENS
|
||
TOOL_OUTPUT_TRUNCATION_STRATEGY = os.getenv("TOOL_OUTPUT_TRUNCATION_STRATEGY", "smart")
|
||
|
||
|
||
|
||
# WebDAV Authentication
|
||
WEBDAV_USERNAME = os.getenv("WEBDAV_USERNAME", "admin")
|
||
WEBDAV_PASSWORD = os.getenv("WEBDAV_PASSWORD", "MmL85TjjxZC97hk9rsYfhQ")
|
||
|
||
# MCP Tool Timeout Settings
|
||
MCP_HTTP_TIMEOUT = int(os.getenv("MCP_HTTP_TIMEOUT", 60)) # HTTP request timeout (seconds)
|
||
MCP_SSE_READ_TIMEOUT = int(os.getenv("MCP_SSE_READ_TIMEOUT", 300)) # SSE read timeout (seconds)
|
||
|
||
# ============================================================
|
||
# PostgreSQL Checkpoint Configuration
|
||
# ============================================================
|
||
|
||
|
||
CHECKPOINT_DB_URL = os.getenv("CHECKPOINT_DB_URL", "postgresql://postgres:AeEGDB0b7Z5GK0E2tblt@dev-circleo-pg.celp3nik7oaq.ap-northeast-1.rds.amazonaws.com:5432/gptbase")
|
||
#CHECKPOINT_DB_URL = os.getenv("CHECKPOINT_DB_URL", "postgresql://moshui:@localhost:5432/moshui")
|
||
|
||
|
||
# Connection pool size
|
||
# Maximum number of simultaneous connections
|
||
CHECKPOINT_POOL_SIZE = int(os.getenv("CHECKPOINT_POOL_SIZE", "20"))
|
||
MEM0_POOL_SIZE = int(os.getenv("MEM0_POOL_SIZE", "50"))
|
||
|
||
# Checkpoint auto-cleanup configuration
|
||
# Whether to enable automatic cleanup of old sessions
|
||
CHECKPOINT_CLEANUP_ENABLED = os.getenv("CHECKPOINT_CLEANUP_ENABLED", "true") == "true"
|
||
|
||
# Number of days after which inactive threads are cleaned up
|
||
CHECKPOINT_CLEANUP_INACTIVE_DAYS = int(os.getenv("CHECKPOINT_CLEANUP_INACTIVE_DAYS", "3"))
|
||
|
||
# Cleanup interval (hours)
|
||
# How many hours between cleanup runs
|
||
CHECKPOINT_CLEANUP_INTERVAL_HOURS = int(os.getenv("CHECKPOINT_CLEANUP_INTERVAL_HOURS", "24"))
|
||
|
||
|
||
# ============================================================
|
||
# Redis Configuration (Huey task queue backend)
|
||
# ============================================================
|
||
|
||
# Redis connection URL.
|
||
# Format: redis://[:password]@host:port/db
|
||
REDIS_URL = os.getenv("REDIS_URL", "redis://localhost:6379/1")
|
||
|
||
|
||
# ============================================================
|
||
# Mem0 long-term memory configuration
|
||
# ============================================================
|
||
|
||
# Mem0 feature toggle (global)
|
||
MEM0_ENABLED = os.getenv("MEM0_ENABLED", "true") == "true"
|
||
|
||
# Semantic search configuration
|
||
# Number of memories to recall
|
||
MEM0_SEMANTIC_SEARCH_TOP_K = int(os.getenv("MEM0_SEMANTIC_SEARCH_TOP_K", "20"))
|
||
|
||
# ============================================================
|
||
# Schedule job configuration
|
||
# ============================================================
|
||
|
||
# Whether to enable the scheduled job runner
|
||
SCHEDULE_ENABLED = os.getenv("SCHEDULE_ENABLED", "true") == "true"
|
||
|
||
# Scheduler scan interval (seconds)
|
||
SCHEDULE_SCAN_INTERVAL = int(os.getenv("SCHEDULE_SCAN_INTERVAL", "60"))
|
||
|
||
# Maximum number of concurrent scheduled jobs
|
||
SCHEDULE_MAX_CONCURRENT = int(os.getenv("SCHEDULE_MAX_CONCURRENT", "5"))
|
||
|
||
|
||
# ============================================================
|
||
# Daytona sandbox configuration
|
||
# ============================================================
|
||
|
||
DAYTONA_API_KEY = os.getenv("DAYTONA_API_KEY", "dtn_ccf86acd5b13a3069a8369d12d8cb26a9a184d07451374dfc325955fc2d8331c")
|
||
DAYTONA_SERVER_URL = os.getenv("DAYTONA_SERVER_URL", "https://daytona-dev.gbase.ai/api")
|
||
# DAYTONA_API_KEY = os.getenv("DAYTONA_API_KEY", "dtn_696a914ff54e45bb97132c32fba10995a4cab8ebef0cd8dea18129d447f805a3")
|
||
# DAYTONA_SERVER_URL = os.getenv("DAYTONA_SERVER_URL", "https://app.daytona.io/api")
|
||
DAYTONA_ENABLED = os.getenv("DAYTONA_ENABLED", "false") == "true"
|
||
os.environ["OPENAI_API_KEY"] = "your_api_key"
|
||
|
||
# ============================================================
|
||
|
||
# RAGFlow Knowledge Base Configuration
|
||
# ============================================================
|
||
|
||
# RAGFlow API 配置
|
||
RAGFLOW_API_URL = os.getenv("RAGFLOW_API_URL", "http://100.77.70.35:1080")
|
||
RAGFLOW_API_KEY = os.getenv("RAGFLOW_API_KEY", "ragflow-MRqxnDnYZ1yp5kklDMIlKH4f1qezvXIngSMGPhu1AG8")
|
||
|
||
# 文件上传配置
|
||
RAGFLOW_MAX_UPLOAD_SIZE = int(os.getenv("RAGFLOW_MAX_UPLOAD_SIZE", str(100 * 1024 * 1024))) # 100MB
|
||
RAGFLOW_ALLOWED_EXTENSIONS = os.getenv(
|
||
"RAGFLOW_ALLOWED_EXTENSIONS",
|
||
"pdf,xlsx,xls,csv,png,jpg,jpeg,gif,tif,eml,txt,md,mdx,html,json,docx,pptx,ppt,mp3,wav,mp4,avi,mkv"
|
||
).split(",")
|
||
|
||
# 性能配置
|
||
RAGFLOW_CONNECTION_TIMEOUT = int(os.getenv("RAGFLOW_CONNECTION_TIMEOUT", "30")) # 30秒
|
||
RAGFLOW_MAX_CONCURRENT_UPLOADS = int(os.getenv("RAGFLOW_MAX_CONCURRENT_UPLOADS", "5"))
|
||
|
||
# ============================================================
|
||
# New API Payment Configuration
|
||
# ============================================================
|
||
|
||
# New API 基础 URL(支付后端)
|
||
NEW_API_BASE_URL = os.getenv("NEW_API_BASE_URL", "http://100.77.70.35:3001")
|
||
|
||
# New API 请求超时(秒)
|
||
NEW_API_TIMEOUT = int(os.getenv("NEW_API_TIMEOUT", "30"))
|
||
|
||
# New API 管理员密钥(用于同步用户等管理操作,可选)
|
||
NEW_API_ADMIN_KEY = os.getenv("NEW_API_ADMIN_KEY", "")
|
||
|
||
# ============================================================
|
||
# Volcengine Realtime Dialogue Configuration
|
||
# ============================================================
|
||
VOLCENGINE_APP_ID = os.getenv("VOLCENGINE_APP_ID", "2511880162")
|
||
VOLCENGINE_ACCESS_KEY = os.getenv("VOLCENGINE_ACCESS_KEY", "pjLbaqR1lHFfkv1xcJAYnvKV0HAvsBvt")
|
||
VOLCENGINE_DEFAULT_SPEAKER = os.getenv(
|
||
"VOLCENGINE_DEFAULT_SPEAKER", "zh_female_xiaohe_uranus_bigtts"
|
||
)
|
||
VOLCENGINE_TTS_SAMPLE_RATE = int(os.getenv("VOLCENGINE_TTS_SAMPLE_RATE", "24000"))
|
||
|
||
# ============================================================
|
||
# Voice Lite Configuration (ASR + Agent + TTS pipeline)
|
||
# ============================================================
|
||
VOICE_DEFAULT_MODE = os.getenv("VOICE_DEFAULT_MODE", "lite") # "realtime" | "lite"
|
||
# Silence timeout (seconds) - ASR considers user done speaking after this
|
||
VOICE_LITE_SILENCE_TIMEOUT = float(os.getenv("VOICE_LITE_SILENCE_TIMEOUT", "3.0"))
|
||
|
||
# ============================================================
|
||
# Single Agent Mode Configuration
|
||
# ============================================================
|
||
SINGLE_AGENT_MODE = os.getenv("SINGLE_AGENT_MODE", "false") == "true"
|
||
TEMPLATE_BOT_ID = os.getenv("TEMPLATE_BOT_ID", "403a2b63-88e4-4db1-b712-8dcf31fc98ea")
|
||
TEMPLATE_BOT_NAME = os.getenv("TEMPLATE_BOT_NAME", "智能助手")
|
||
|
||
# Langfuse Observability Configuration
|
||
# ============================================================
|
||
LANGFUSE_ENABLED = os.getenv("LANGFUSE_ENABLED", "false") == "true"
|
||
LANGFUSE_SECRET_KEY = os.getenv("LANGFUSE_SECRET_KEY", "sk-lf-3d6db91e-ebe3-441d-b965-26ecb8e8df98")
|
||
LANGFUSE_PUBLIC_KEY = os.getenv("LANGFUSE_PUBLIC_KEY", "pk-lf-042583dc-2965-411a-be82-16c5050bdb53")
|
||
LANGFUSE_HOST = os.getenv("LANGFUSE_HOST", "https://langfuse.gbase.ai")
|
||
|