name: ai_chat services: cli-proxy-api: image: eceasy/cli-proxy-api:latest container_name: cli-proxy-api pull_policy: always ports: - '127.0.0.1:8317:8317' - '127.0.0.1:8085:8085' - '127.0.0.1:1455:1455' - '127.0.0.1:54545:54545' - '127.0.0.1:51121:51121' - '127.0.0.1:11451:11451' environment: - HTTP_PROXY=http://192.168.1.142:6152 - HTTPS_PROXY=http://192.168.1.142:6152 - ALL_PROXY=http://192.168.1.142:6152 - NO_PROXY=localhost,127.0.0.1,litellm,open-webui,cli-proxy-api - no_proxy=localhost,127.0.0.1,litellm,open-webui,cli-proxy-api volumes: - ./cliproxyapi/config.yaml:/CLIProxyAPI/config.yaml:ro - ./cliproxyapi/auths:/root/.cli-proxy-api - ./cliproxyapi/logs:/CLIProxyAPI/logs restart: unless-stopped litellm: image: docker.litellm.ai/berriai/litellm:main-stable container_name: litellm ports: - '4000:4000' environment: - GEMINI_API_KEY=${GEMINI_API_KEY} - HTTP_PROXY=http://192.168.1.142:6152 - HTTPS_PROXY=http://192.168.1.142:6152 - ALL_PROXY=http://192.168.1.142:6152 - NO_PROXY=localhost,127.0.0.1,litellm,open-webui,cli-proxy-api - no_proxy=localhost,127.0.0.1,litellm,open-webui,cli-proxy-api - GOOGLE_APPLICATION_CREDENTIALS=/app/vertex_key.json - CLIPROXY_API_KEY=${CLIPROXY_API_KEY} volumes: - ./litellm:/app/litellm:ro - ./litellm/gen-lang-client-0934968879-03bf3a88d4dd.json:/app/vertex_key.json env_file: - .env depends_on: - cli-proxy-api command: > --config /app/litellm/config.yaml --port 4000 restart: unless-stopped jupyter: image: quay.io/jupyter/datascience-notebook:latest container_name: ai-chat-jupyter environment: - JUPYTER_TOKEN=${JUPYTER_TOKEN} command: > start-notebook.py --ServerApp.token=${JUPYTER_TOKEN} --ServerApp.password= --ServerApp.allow_origin=* volumes: - jupyter-work:/home/jovyan/work restart: unless-stopped open-webui: image: ghcr.io/open-webui/open-webui:main container_name: open-webui pull_policy: always ports: - '3000:8080' env_file: - .env environment: - OPENAI_API_BASE_URLS=http://litellm:4000/v1;http://cli-proxy-api:8317/v1 - OPENAI_API_KEYS=dummy;${CLIPROXY_API_KEY} - WEBUI_NAME=AI Chat - WEBUI_AUTH=true - ENABLE_SIGNUP=true - ENABLE_LOGIN_FORM=true - ENABLE_OAUTH_SIGNUP=true - DEFAULT_USER_ROLE=pending - OAUTH_ALLOWED_DOMAINS=${OAUTH_ALLOWED_DOMAINS} - GOOGLE_CLIENT_ID=${GOOGLE_CLIENT_ID} - GOOGLE_CLIENT_SECRET=${GOOGLE_CLIENT_SECRET} - GOOGLE_REDIRECT_URI=${GOOGLE_REDIRECT_URI} - GOOGLE_OAUTH_SCOPE=${GOOGLE_OAUTH_SCOPE} - ENABLE_IMAGE_GENERATION=true - ENABLE_IMAGE_PROMPT_GENERATION=true - IMAGE_GENERATION_ENGINE=openai - IMAGE_GENERATION_MODEL=imagen-4.0-generate-001-vertex - IMAGE_SIZE=1024x1024 - IMAGES_OPENAI_API_BASE_URL=http://litellm:4000/v1 - IMAGES_OPENAI_API_KEY=dummy - ENABLE_CODE_INTERPRETER=true - CODE_INTERPRETER_ENGINE=jupyter - CODE_INTERPRETER_JUPYTER_URL=http://jupyter:8888 - CODE_INTERPRETER_JUPYTER_AUTH=token - CODE_INTERPRETER_JUPYTER_AUTH_TOKEN=${JUPYTER_TOKEN} - CODE_INTERPRETER_JUPYTER_TIMEOUT=120 - ENABLE_CODE_EXECUTION=true - CODE_EXECUTION_ENGINE=jupyter - CODE_EXECUTION_JUPYTER_URL=http://jupyter:8888 - CODE_EXECUTION_JUPYTER_AUTH=token - CODE_EXECUTION_JUPYTER_AUTH_TOKEN=${JUPYTER_TOKEN} - CODE_EXECUTION_JUPYTER_TIMEOUT=120 volumes: - open-webui:/app/backend/data depends_on: - litellm - cli-proxy-api - jupyter restart: unless-stopped volumes: open-webui: jupyter-work: