mirror of
https://github.com/yunionio/cloudpods.git
synced 2026-08-31 01:35:56 +08:00
897a6fc61f
* feat(llm): add llm-create * fix(llm): fix llm-create, add llm-list & llm-show * fix(llm): format file names * fear(llm): add exec stream * fear(llm): init llm model cache * fix(llm): move llm model cache to LocalImageCache * feat(llm): auto clean model cache * fix(llm): auto clean tmp model cache * feat(dify): init dify-create * fix(dify): change dify default registry * feat: support create model with gguf file * feat(llm): support more modelfile option for gguf file * feat(dify): init user customize dify parameters * feat: update llm as a service in climc * fix: delete llm from region service * feat: init llm service (with error) * fix: resolve errors (task cant callback yet) * feat: add PerformRequestHostActionByOtherService for container * fix: make llm service usable * feat: delete llm and dify after guest deleted * feat(llm): add llm-image * feat(llm): add llm-model * feat: mv old llm to ollama * feat(llm): init llm-batch-create(can not run) * fix(llm): make llm-create usable * fix(llm): add pull-model step * feat(llm): add list and delete * fix(llm): ollama pull official model don't rely on host & region's code any more * feat(llm): add dify-model * fix: remove llm's code in host & compute * fix: remove remain code in compute * feat(llm): Abstract out and reuse the llm_model logic * feat(llm): abstract llm_base from llm * fix(llm): make dify usable * feat(llm): add sync_dify_images.sh * fix(llm): format import * feat(llm): support start & stop for llm and dify * feat(llm): add model-update * fix(llm): gendocgo
243 lines
17 KiB
Go
243 lines
17 KiB
Go
package models
|
|
|
|
import (
|
|
"yunion.io/x/onecloud/pkg/apis"
|
|
api "yunion.io/x/onecloud/pkg/apis/llm"
|
|
)
|
|
|
|
var sharedApiWorkerEnvKeyVal []*apis.ContainerKeyValue
|
|
|
|
func getSharedApiWorkerEnv(custom *DifyContainerEnv) []*apis.ContainerKeyValue {
|
|
if sharedApiWorkerEnvKeyVal == nil {
|
|
sharedApiWorkerEnv := &DifyContainerEnv{
|
|
"CONSOLE_API_URL": "",
|
|
"CONSOLE_WEB_URL": "",
|
|
"SERVICE_API_URL": "",
|
|
"APP_API_URL": "",
|
|
"APP_WEB_URL": "",
|
|
"LANG": "en_US.UTF-8",
|
|
"LC_ALL": "en_US.UTF-8",
|
|
"PYTHONIOENCODING": "utf-8",
|
|
"LOG_LEVEL": "INFO",
|
|
"LOG_FILE": "/app/logs/server.log",
|
|
"LOG_FILE_MAX_SIZE": "20",
|
|
"LOG_FILE_BACKUP_COUNT": "5",
|
|
"LOG_DATEFORMAT": "%Y-%m-%d %H:%M:%S",
|
|
"LOG_TZ": "UTC",
|
|
"DEBUG": "false",
|
|
"FLASK_DEBUG": "false",
|
|
"ENABLE_REQUEST_LOGGING": "False",
|
|
"SECRET_KEY": api.DIFY_SECRET_KEY,
|
|
"INIT_PASSWORD": "",
|
|
"DEPLOY_ENV": "PRODUCTION",
|
|
"CHECK_UPDATE_URL": "https://updates.dify.ai",
|
|
"OPENAI_API_BASE": "https://api.openai.com/v1",
|
|
"MIGRATION_ENABLED": "true",
|
|
"FILES_ACCESS_TIMEOUT": "300",
|
|
"ACCESS_TOKEN_EXPIRE_MINUTES": "60",
|
|
"REFRESH_TOKEN_EXPIRE_DAYS": "30",
|
|
"APP_MAX_ACTIVE_REQUESTS": "0",
|
|
"APP_MAX_EXECUTION_TIME": "1200",
|
|
"DIFY_BIND_ADDRESS": "0.0.0.0",
|
|
"DIFY_PORT": "5001",
|
|
"SERVER_WORKER_AMOUNT": "1",
|
|
"SERVER_WORKER_CLASS": "gevent",
|
|
"SERVER_WORKER_CONNECTIONS": "10",
|
|
"CELERY_WORKER_CLASS": "",
|
|
"GUNICORN_TIMEOUT": "360",
|
|
"CELERY_WORKER_AMOUNT": "",
|
|
"CELERY_AUTO_SCALE": "false",
|
|
"CELERY_MAX_WORKERS": "",
|
|
"CELERY_MIN_WORKERS": "",
|
|
"API_TOOL_DEFAULT_CONNECT_TIMEOUT": "10",
|
|
"API_TOOL_DEFAULT_READ_TIMEOUT": "60",
|
|
"ENABLE_WEBSITE_JINAREADER": api.DIFY_WEB_ENABLE_WEBSITE_JINAREADER,
|
|
"ENABLE_WEBSITE_FIRECRAWL": api.DIFY_WEB_ENABLE_WEBSITE_FIRECRAWL,
|
|
"ENABLE_WEBSITE_WATERCRAWL": api.DIFY_WEB_ENABLE_WEBSITE_WATERCRAWL,
|
|
"DB_USERNAME": api.DIFY_POSTGRES_USER,
|
|
"DB_PASSWORD": api.DIFY_POSTGRES_PASSWORD,
|
|
"DB_HOST": api.DIFY_LOCALHOST,
|
|
"DB_PORT": api.DIFY_POSTGRES_PORT,
|
|
"DB_DATABASE": "dify",
|
|
"SQLALCHEMY_POOL_SIZE": "30",
|
|
"SQLALCHEMY_POOL_RECYCLE": "3600",
|
|
"SQLALCHEMY_ECHO": "false",
|
|
"SQLALCHEMY_POOL_PRE_PING": "false",
|
|
"SQLALCHEMY_POOL_USE_LIFO": "false",
|
|
"POSTGRES_MAX_CONNECTIONS": api.DIFY_POSTGRES_MAX_CONNECTIONS,
|
|
"POSTGRES_SHARED_BUFFERS": api.DIFY_POSTGRES_SHARED_BUFFERS,
|
|
"POSTGRES_WORK_MEM": api.DIFY_POSTGRES_WORK_MEM,
|
|
"POSTGRES_MAINTENANCE_WORK_MEM": api.DIFY_POSTGRES_MAINTENANCE_WORK_MEM,
|
|
"POSTGRES_EFFECTIVE_CACHE_SIZE": api.DIFY_POSTGRES_EFFECTIVE_CACHE_SIZE,
|
|
"REDIS_HOST": api.DIFY_LOCALHOST,
|
|
"REDIS_PORT": api.DIFY_REDIS_PORT,
|
|
"REDIS_USERNAME": "",
|
|
"REDIS_PASSWORD": api.DIFY_REDISCLI_AUTH,
|
|
"REDIS_USE_SSL": "false",
|
|
"REDIS_DB": "0",
|
|
"REDIS_USE_SENTINEL": "false",
|
|
"REDIS_SENTINELS": "",
|
|
"REDIS_SENTINEL_SERVICE_NAME": "",
|
|
"REDIS_SENTINEL_USERNAME": "",
|
|
"REDIS_SENTINEL_PASSWORD": "",
|
|
"REDIS_SENTINEL_SOCKET_TIMEOUT": "0.1",
|
|
"REDIS_USE_CLUSTERS": "false",
|
|
"REDIS_CLUSTERS": "",
|
|
"REDIS_CLUSTERS_PASSWORD": "",
|
|
"CELERY_BROKER_URL": "redis://:" + api.DIFY_REDISCLI_AUTH + "@" + api.DIFY_LOCALHOST + ":" + api.DIFY_REDIS_PORT + "/1",
|
|
"CELERY_BACKEND": api.DIFY_LOCALHOST,
|
|
"BROKER_USE_SSL": "false",
|
|
"CELERY_USE_SENTINEL": "false",
|
|
"CELERY_SENTINEL_MASTER_NAME": "",
|
|
"CELERY_SENTINEL_PASSWORD": "",
|
|
"CELERY_SENTINEL_SOCKET_TIMEOUT": "0.1",
|
|
"STORAGE_TYPE": "opendal",
|
|
"OPENDAL_SCHEME": "fs",
|
|
"OPENDAL_FS_ROOT": "storage",
|
|
"VECTOR_STORE": "weaviate",
|
|
"VECTOR_INDEX_NAME_PREFIX": "Vector_index",
|
|
"WEAVIATE_ENDPOINT": "http://" + api.DIFY_LOCALHOST + ":8080",
|
|
"WEAVIATE_API_KEY": api.DIFY_WEAVIATE_AUTHENTICATION_APIKEY_ALLOWED_KEYS,
|
|
"UPLOAD_FILE_SIZE_LIMIT": "15",
|
|
"UPLOAD_FILE_BATCH_LIMIT": "5",
|
|
"ETL_TYPE": "dify",
|
|
"UNSTRUCTURED_API_URL": "",
|
|
"UNSTRUCTURED_API_KEY": "",
|
|
"SCARF_NO_ANALYTICS": "true",
|
|
"PROMPT_GENERATION_MAX_TOKENS": "512",
|
|
"CODE_GENERATION_MAX_TOKENS": "1024",
|
|
"PLUGIN_BASED_TOKEN_COUNTING_ENABLED": "false",
|
|
"MULTIMODAL_SEND_FORMAT": "base64",
|
|
"UPLOAD_IMAGE_FILE_SIZE_LIMIT": "10",
|
|
"UPLOAD_VIDEO_FILE_SIZE_LIMIT": "100",
|
|
"UPLOAD_AUDIO_FILE_SIZE_LIMIT": "50",
|
|
"API_SENTRY_DSN": api.DIFY_API_SENTRY_DSN,
|
|
"API_SENTRY_TRACES_SAMPLE_RATE": api.DIFY_API_SENTRY_TRACES_SAMPLE_RATE,
|
|
"API_SENTRY_PROFILES_SAMPLE_RATE": api.DIFY_API_SENTRY_PROFILES_SAMPLE_RATE,
|
|
"WEB_SENTRY_DSN": "",
|
|
"NOTION_INTEGRATION_TYPE": "public",
|
|
"NOTION_CLIENT_SECRET": "",
|
|
"NOTION_CLIENT_ID": "",
|
|
"NOTION_INTERNAL_SECRET": "",
|
|
"MAIL_TYPE": "resend",
|
|
"MAIL_DEFAULT_SEND_FROM": "",
|
|
"RESEND_API_URL": "https://api.resend.com",
|
|
"RESEND_API_KEY": "your-resend-api-key",
|
|
"SMTP_SERVER": "",
|
|
"SMTP_PORT": "465",
|
|
"SMTP_USERNAME": "",
|
|
"SMTP_PASSWORD": "",
|
|
"SMTP_USE_TLS": "true",
|
|
"SMTP_OPPORTUNISTIC_TLS": "false",
|
|
"SENDGRID_API_KEY": "",
|
|
"INDEXING_MAX_SEGMENTATION_TOKENS_LENGTH": api.DIFY_WEB_INDEXING_MAX_SEGMENTATION_TOKENS_LENGTH,
|
|
"INVITE_EXPIRY_HOURS": "72",
|
|
"RESET_PASSWORD_TOKEN_EXPIRY_MINUTES": "5",
|
|
"CHANGE_EMAIL_TOKEN_EXPIRY_MINUTES": "5",
|
|
"OWNER_TRANSFER_TOKEN_EXPIRY_MINUTES": "5",
|
|
"CODE_EXECUTION_ENDPOINT": "http://" + api.DIFY_LOCALHOST + ":8194",
|
|
"CODE_EXECUTION_API_KEY": api.DIFY_SANDBOX_API_KEY,
|
|
"CODE_MAX_NUMBER": "9223372036854775807",
|
|
"CODE_MIN_NUMBER": "-9223372036854775808",
|
|
"CODE_MAX_DEPTH": "5",
|
|
"CODE_MAX_PRECISION": "20",
|
|
"CODE_MAX_STRING_LENGTH": "80000",
|
|
"CODE_MAX_STRING_ARRAY_LENGTH": "30",
|
|
"CODE_MAX_OBJECT_ARRAY_LENGTH": "30",
|
|
"CODE_MAX_NUMBER_ARRAY_LENGTH": "1000",
|
|
"CODE_EXECUTION_CONNECT_TIMEOUT": "10",
|
|
"CODE_EXECUTION_READ_TIMEOUT": "60",
|
|
"CODE_EXECUTION_WRITE_TIMEOUT": "10",
|
|
"TEMPLATE_TRANSFORM_MAX_LENGTH": "80000",
|
|
"WORKFLOW_MAX_EXECUTION_STEPS": "500",
|
|
"WORKFLOW_MAX_EXECUTION_TIME": "1200",
|
|
"WORKFLOW_CALL_MAX_DEPTH": "5",
|
|
"MAX_VARIABLE_SIZE": "204800",
|
|
"WORKFLOW_PARALLEL_DEPTH_LIMIT": "3",
|
|
"WORKFLOW_FILE_UPLOAD_LIMIT": "10",
|
|
"WORKFLOW_NODE_EXECUTION_STORAGE": "rdbms",
|
|
"CORE_WORKFLOW_EXECUTION_REPOSITORY": "core.repositories.sqlalchemy_workflow_execution_repository.SQLAlchemyWorkflowExecutionRepository",
|
|
"CORE_WORKFLOW_NODE_EXECUTION_REPOSITORY": "core.repositories.sqlalchemy_workflow_node_execution_repository.SQLAlchemyWorkflowNodeExecutionRepository",
|
|
"API_WORKFLOW_NODE_EXECUTION_REPOSITORY": "repositories.sqlalchemy_api_workflow_node_execution_repository.DifyAPISQLAlchemyWorkflowNodeExecutionRepository",
|
|
"API_WORKFLOW_RUN_REPOSITORY": "repositories.sqlalchemy_api_workflow_run_repository.DifyAPISQLAlchemyWorkflowRunRepository",
|
|
"HTTP_REQUEST_NODE_MAX_BINARY_SIZE": "10485760",
|
|
"HTTP_REQUEST_NODE_MAX_TEXT_SIZE": "1048576",
|
|
"HTTP_REQUEST_NODE_SSL_VERIFY": "True",
|
|
"RESPECT_XFORWARD_HEADERS_ENABLED": "false",
|
|
"SSRF_PROXY_HTTP_URL": "http://" + api.DIFY_LOCALHOST + ":3128",
|
|
"SSRF_PROXY_HTTPS_URL": "http://" + api.DIFY_LOCALHOST + ":3128",
|
|
"LOOP_NODE_MAX_COUNT": api.DIFY_WEB_LOOP_NODE_MAX_COUNT,
|
|
"MAX_TOOLS_NUM": api.DIFY_WEB_MAX_TOOLS_NUM,
|
|
"MAX_PARALLEL_LIMIT": api.DIFY_WEB_MAX_PARALLEL_LIMIT,
|
|
"MAX_ITERATIONS_NUM": api.DIFY_WEB_MAX_ITERATIONS_NUM,
|
|
"TEXT_GENERATION_TIMEOUT_MS": api.DIFY_WEB_TEXT_GENERATION_TIMEOUT_MS,
|
|
"ALLOW_UNSAFE_DATA_SCHEME": api.DIFY_WEB_ALLOW_UNSAFE_DATA_SCHEME,
|
|
"POSTGRES_USER": "${DB_USERNAME}",
|
|
"POSTGRES_PASSWORD": "${DB_PASSWORD}",
|
|
"POSTGRES_DB": "${DB_DATABASE}",
|
|
"PGDATA": "/var/lib/postgresql/data/pgdata",
|
|
"SANDBOX_API_KEY": api.DIFY_SANDBOX_API_KEY,
|
|
"SANDBOX_GIN_MODE": api.DIFY_SANDBOX_GIN_MODE,
|
|
"SANDBOX_WORKER_TIMEOUT": api.DIFY_SANDBOX_WORKER_TIMEOUT,
|
|
"SANDBOX_ENABLE_NETWORK": api.DIFY_SANDBOX_ENABLE_NETWORK,
|
|
"SANDBOX_HTTP_PROXY": api.DIFY_SANDBOX_HTTP_PROXY,
|
|
"SANDBOX_HTTPS_PROXY": api.DIFY_SANDBOX_HTTPS_PROXY,
|
|
"SANDBOX_PORT": api.DIFY_SANDBOX_PORT,
|
|
"WEAVIATE_PERSISTENCE_DATA_PATH": api.DIFY_WEAVIATE_PERSISTENCE_DATA_PATH,
|
|
"WEAVIATE_QUERY_DEFAULTS_LIMIT": api.DIFY_WEAVIATE_QUERY_DEFAULTS_LIMIT,
|
|
"WEAVIATE_AUTHENTICATION_ANONYMOUS_ACCESS_ENABLED": api.DIFY_WEAVIATE_AUTHENTICATION_ANONYMOUS_ACCESS_ENABLED,
|
|
"WEAVIATE_DEFAULT_VECTORIZER_MODULE": api.DIFY_WEAVIATE_DEFAULT_VECTORIZER_MODULE,
|
|
"WEAVIATE_CLUSTER_HOSTNAME": api.DIFY_WEAVIATE_CLUSTER_HOSTNAME,
|
|
"WEAVIATE_AUTHENTICATION_APIKEY_ENABLED": api.DIFY_WEAVIATE_AUTHENTICATION_APIKEY_ENABLED,
|
|
"WEAVIATE_AUTHENTICATION_APIKEY_ALLOWED_KEYS": api.DIFY_WEAVIATE_AUTHENTICATION_APIKEY_ALLOWED_KEYS,
|
|
"WEAVIATE_AUTHENTICATION_APIKEY_USERS": api.DIFY_WEAVIATE_AUTHENTICATION_APIKEY_USERS,
|
|
"WEAVIATE_AUTHORIZATION_ADMINLIST_ENABLED": api.DIFY_WEAVIATE_AUTHORIZATION_ADMINLIST_ENABLED,
|
|
"WEAVIATE_AUTHORIZATION_ADMINLIST_USERS": api.DIFY_WEAVIATE_AUTHORIZATION_ADMINLIST_USERS,
|
|
"NGINX_SERVER_NAME": api.DIFY_NGINX_SERVER_NAME,
|
|
"NGINX_PORT": api.DIFY_NGINX_PORT,
|
|
"NGINX_WORKER_PROCESSES": api.DIFY_NGINX_WORKER_PROCESSES,
|
|
"NGINX_CLIENT_MAX_BODY_SIZE": api.DIFY_NGINX_CLIENT_MAX_BODY_SIZE,
|
|
"NGINX_KEEPALIVE_TIMEOUT": api.DIFY_NGINX_KEEPALIVE_TIMEOUT,
|
|
"NGINX_PROXY_READ_TIMEOUT": api.DIFY_NGINX_PROXY_READ_TIMEOUT,
|
|
"NGINX_PROXY_SEND_TIMEOUT": api.DIFY_NGINX_PROXY_SEND_TIMEOUT,
|
|
"SSRF_HTTP_PORT": api.DIFY_SSRF_HTTP_PORT,
|
|
"SSRF_COREDUMP_DIR": api.DIFY_SSRF_COREDUMP_DIR,
|
|
"SSRF_REVERSE_PROXY_PORT": api.DIFY_SANDBOX_PORT,
|
|
"SSRF_SANDBOX_HOST": api.DIFY_LOCALHOST,
|
|
"SSRF_DEFAULT_TIME_OUT": "5",
|
|
"SSRF_DEFAULT_CONNECT_TIME_OUT": "5",
|
|
"SSRF_DEFAULT_READ_TIME_OUT": "5",
|
|
"SSRF_DEFAULT_WRITE_TIME_OUT": "5",
|
|
"DB_PLUGIN_DATABASE": api.DIFY_PLUGIN_DB_DATABASE,
|
|
"PLUGIN_DAEMON_PORT": api.DIFY_PLUGIN_SERVER_PORT,
|
|
"PLUGIN_DAEMON_KEY": api.DIFY_PLUGIN_SERVER_KEY,
|
|
"PLUGIN_DAEMON_URL": "http://" + api.DIFY_LOCALHOST + ":" + api.DIFY_PLUGIN_SERVER_PORT,
|
|
"PLUGIN_MAX_PACKAGE_SIZE": api.DIFY_PLUGIN_MAX_PACKAGE_SIZE,
|
|
"PLUGIN_PPROF_ENABLED": api.DIFY_PLUGIN_PPROF_ENABLED,
|
|
"PLUGIN_DEBUGGING_HOST": api.DIFY_PLUGIN_REMOTE_INSTALLING_HOST,
|
|
"PLUGIN_DEBUGGING_PORT": api.DIFY_PLUGIN_REMOTE_INSTALLING_PORT,
|
|
"EXPOSE_PLUGIN_DEBUGGING_HOST": api.DIFY_LOCALHOST,
|
|
"EXPOSE_PLUGIN_DEBUGGING_PORT": api.DIFY_PLUGIN_REMOTE_INSTALLING_PORT,
|
|
"PLUGIN_DIFY_INNER_API_KEY": api.DIFY_API_INNER_KEY,
|
|
"PLUGIN_DIFY_INNER_API_URL": "http://" + api.DIFY_LOCALHOST + ":5001",
|
|
"ENDPOINT_URL_TEMPLATE": "http://" + api.DIFY_LOCALHOST + "/e/{hook_id}",
|
|
"MARKETPLACE_ENABLED": "true",
|
|
"MARKETPLACE_API_URL": api.DIFY_WEB_MARKETPLACE_API_URL,
|
|
"ALLOW_EMBED": api.DIFY_WEB_ALLOW_EMBED,
|
|
"QUEUE_MONITOR_THRESHOLD": "200",
|
|
"QUEUE_MONITOR_ALERT_EMAILS": "",
|
|
"QUEUE_MONITOR_INTERVAL": "30",
|
|
"ENABLE_CLEAN_EMBEDDING_CACHE_TASK": "false",
|
|
"ENABLE_CLEAN_UNUSED_DATASETS_TASK": "false",
|
|
"ENABLE_CREATE_TIDB_SERVERLESS_TASK": "false",
|
|
"ENABLE_UPDATE_TIDB_SERVERLESS_STATUS_TASK": "false",
|
|
"ENABLE_CLEAN_MESSAGES": "false",
|
|
"ENABLE_MAIL_CLEAN_DOCUMENT_NOTIFY_TASK": "false",
|
|
"ENABLE_DATASETS_QUEUE_MONITOR": "false",
|
|
"ENABLE_CHECK_UPGRADABLE_PLUGIN_TASK": "true",
|
|
}
|
|
sharedApiWorkerEnvKeyVal = sharedApiWorkerEnv.GetContainerEnvs(custom)
|
|
}
|
|
return sharedApiWorkerEnvKeyVal
|
|
}
|