1. Fix "all environment values must be bytes or str" error in hook execution by ensuring all env values are converted to str (getattr may return None when attribute exists but is None). Also sanitize shell_env values. 2. Increase MEM0_POOL_SIZE default from 20 to 50 to address "connection pool exhausted" errors under high concurrency. Fixes: sparticleinc/felo-mygpt#2519 Co-authored-by: zhuchao <zhuchaowe@163.com> Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
100 lines
3.7 KiB
Python
100 lines
3.7 KiB
Python
import os
|
||
|
||
# 必填参数
|
||
# 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))
|
||
|
||
# 可选参数
|
||
# Summarization Settings
|
||
SUMMARIZATION_MAX_TOKENS = int(MAX_CONTEXT_TOKENS/3)
|
||
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")
|
||
|
||
# Tokenizer Settings
|
||
TOKENIZERS_PARALLELISM = os.getenv("TOKENIZERS_PARALLELISM", "true")
|
||
|
||
# Embedding Model Settings
|
||
SENTENCE_TRANSFORMER_MODEL = os.getenv("SENTENCE_TRANSFORMER_MODEL", "TaylorAI/gte-tiny")
|
||
|
||
# Tool Output Length Control Settings
|
||
TOOL_OUTPUT_MAX_LENGTH = int(SUMMARIZATION_MAX_TOKENS/4)
|
||
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 请求超时(秒)
|
||
MCP_SSE_READ_TIMEOUT = int(os.getenv("MCP_SSE_READ_TIMEOUT", 300)) # SSE 读取超时(秒)
|
||
|
||
# ============================================================
|
||
# PostgreSQL Checkpoint Configuration
|
||
# ============================================================
|
||
|
||
# PostgreSQL 连接字符串
|
||
# 格式: postgresql://user:password@host:port/database
|
||
#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")
|
||
|
||
# 连接池大小
|
||
# 同时可以持有的最大连接数
|
||
CHECKPOINT_POOL_SIZE = int(os.getenv("CHECKPOINT_POOL_SIZE", "20"))
|
||
MEM0_POOL_SIZE = int(os.getenv("MEM0_POOL_SIZE", "50"))
|
||
|
||
# Checkpoint 自动清理配置
|
||
# 是否启用自动清理旧 session
|
||
CHECKPOINT_CLEANUP_ENABLED = os.getenv("CHECKPOINT_CLEANUP_ENABLED", "true") == "true"
|
||
|
||
# 清理多少天前未活动的 thread(天数)
|
||
CHECKPOINT_CLEANUP_INACTIVE_DAYS = int(os.getenv("CHECKPOINT_CLEANUP_INACTIVE_DAYS", "3"))
|
||
|
||
# 清理间隔(小时)
|
||
# 每隔多少小时执行一次清理任务
|
||
CHECKPOINT_CLEANUP_INTERVAL_HOURS = int(os.getenv("CHECKPOINT_CLEANUP_INTERVAL_HOURS", "24"))
|
||
|
||
|
||
# ============================================================
|
||
# Mem0 长期记忆配置
|
||
# ============================================================
|
||
|
||
# Mem0 功能开关(全局)
|
||
MEM0_ENABLED = os.getenv("MEM0_ENABLED", "true") == "true"
|
||
|
||
# 语义搜索配置
|
||
# 召回记忆数量
|
||
MEM0_SEMANTIC_SEARCH_TOP_K = int(os.getenv("MEM0_SEMANTIC_SEARCH_TOP_K", "20"))
|
||
|
||
# ============================================================
|
||
# Schedule Job 定时任务配置
|
||
# ============================================================
|
||
|
||
# 是否启用定时任务调度器
|
||
SCHEDULE_ENABLED = os.getenv("SCHEDULE_ENABLED", "true") == "true"
|
||
|
||
# 调度器扫描间隔(秒)
|
||
SCHEDULE_SCAN_INTERVAL = int(os.getenv("SCHEDULE_SCAN_INTERVAL", "60"))
|
||
|
||
# 最大并发执行任务数
|
||
SCHEDULE_MAX_CONCURRENT = int(os.getenv("SCHEDULE_MAX_CONCURRENT", "5"))
|
||
|
||
|
||
os.environ["OPENAI_API_KEY"] = "your_api_key"
|