Merge pull request #2980 from rennokki/feature/ai-templates

New services: LLM & AI-related one-click services
This commit is contained in:
Andras Bacsai
2024-10-04 13:24:34 +02:00
committed by GitHub
20 changed files with 967 additions and 0 deletions

166
public/svgs/anythingllm.svg Normal file
View File

@@ -0,0 +1,166 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
<svg xmlns="http://www.w3.org/2000/svg" version="1.1" viewBox="0.00 0.00 245.00 245.00">
<path stroke="#919393" stroke-width="2.00" fill="none" stroke-linecap="butt" vector-effect="non-scaling-stroke" d="
M 187.03 159.00
L 161.49 159.00
A 1.24 1.24 0.0 0 1 160.48 158.48
Q 153.96 149.33 147.89 140.81
C 145.78 137.86 141.80 138.01 139.49 140.67
C 136.43 144.17 133.65 147.56 136.44 151.42
Q 142.22 159.39 148.22 167.98
Q 152.74 174.47 160.49 174.57
Q 173.94 174.73 188.79 174.60
C 196.64 174.52 203.24 168.72 203.23 160.63
Q 203.16 123.84 203.20 83.74
C 203.21 78.41 199.97 73.56 195.17 71.35
Q 191.90 69.85 186.23 69.92
Q 173.94 70.08 161.37 69.94
C 156.39 69.89 152.10 71.63 149.08 75.49
Q 117.03 116.46 84.45 158.09
A 2.37 2.35 -70.9 0 1 82.59 159.00
L 57.21 159.00
Q 56.65 159.00 56.65 158.45
L 56.66 85.95
Q 56.66 85.31 57.30 85.31
L 83.00 85.31
A 0.80 0.79 71.0 0 1 83.63 85.62
Q 90.51 94.60 97.61 104.71
C 99.47 107.36 103.07 108.21 105.48 105.83
Q 107.60 103.72 109.70 100.67
C 110.60 99.36 110.38 97.79 110.28 96.30
Q 110.23 95.62 109.82 95.07
Q 103.03 85.94 96.91 77.34
C 93.63 72.73 89.66 69.98 84.18 70.00
Q 71.60 70.05 56.56 69.96
C 50.37 69.93 45.44 72.61 42.63 78.14
Q 41.19 80.99 41.25 87.27
Q 41.55 120.87 41.27 158.11
Q 41.23 162.77 42.32 165.57
Q 44.32 170.75 49.37 173.22
Q 52.63 174.81 60.03 174.72
Q 72.58 174.56 82.84 174.65
Q 91.13 174.73 95.47 169.18
Q 127.35 128.40 160.51 86.00
A 1.81 1.80 18.9 0 1 161.93 85.31
L 187.42 85.31
A 0.40 0.40 0.0 0 1 187.82 85.71
L 187.82 158.21
Q 187.82 159.00 187.03 159.00"
/>
<path fill="#222627" d="
M 46.00 0.00
L 198.80 0.00
Q 221.03 2.81 233.86 19.40
Q 244.84 33.61 244.80 52.00
Q 244.65 120.20 244.83 188.95
Q 244.86 199.26 243.39 205.30
Q 241.12 214.72 235.86 222.46
C 234.56 224.37 232.98 226.08 231.56 227.86
Q 229.92 229.91 227.88 231.54
C 226.00 233.04 224.26 234.66 222.24 236.01
Q 214.15 241.39 204.78 243.49
Q 198.73 244.86 188.67 244.83
Q 119.30 244.65 52.55 244.80
Q 32.84 244.84 18.81 233.38
Q 2.64 220.18 0.00 198.69
L 0.00 45.76
Q 1.42 35.66 4.33 29.79
Q 17.17 3.86 46.00 0.00
Z
M 187.03 159.00
L 161.49 159.00
A 1.24 1.24 0.0 0 1 160.48 158.48
Q 153.96 149.33 147.89 140.81
C 145.78 137.86 141.80 138.01 139.49 140.67
C 136.43 144.17 133.65 147.56 136.44 151.42
Q 142.22 159.39 148.22 167.98
Q 152.74 174.47 160.49 174.57
Q 173.94 174.73 188.79 174.60
C 196.64 174.52 203.24 168.72 203.23 160.63
Q 203.16 123.84 203.20 83.74
C 203.21 78.41 199.97 73.56 195.17 71.35
Q 191.90 69.85 186.23 69.92
Q 173.94 70.08 161.37 69.94
C 156.39 69.89 152.10 71.63 149.08 75.49
Q 117.03 116.46 84.45 158.09
A 2.37 2.35 -70.9 0 1 82.59 159.00
L 57.21 159.00
Q 56.65 159.00 56.65 158.45
L 56.66 85.95
Q 56.66 85.31 57.30 85.31
L 83.00 85.31
A 0.80 0.79 71.0 0 1 83.63 85.62
Q 90.51 94.60 97.61 104.71
C 99.47 107.36 103.07 108.21 105.48 105.83
Q 107.60 103.72 109.70 100.67
C 110.60 99.36 110.38 97.79 110.28 96.30
Q 110.23 95.62 109.82 95.07
Q 103.03 85.94 96.91 77.34
C 93.63 72.73 89.66 69.98 84.18 70.00
Q 71.60 70.05 56.56 69.96
C 50.37 69.93 45.44 72.61 42.63 78.14
Q 41.19 80.99 41.25 87.27
Q 41.55 120.87 41.27 158.11
Q 41.23 162.77 42.32 165.57
Q 44.32 170.75 49.37 173.22
Q 52.63 174.81 60.03 174.72
Q 72.58 174.56 82.84 174.65
Q 91.13 174.73 95.47 169.18
Q 127.35 128.40 160.51 86.00
A 1.81 1.80 18.9 0 1 161.93 85.31
L 187.42 85.31
A 0.40 0.40 0.0 0 1 187.82 85.71
L 187.82 158.21
Q 187.82 159.00 187.03 159.00
Z"
/>
<path fill="#ffffff" d="
M 187.82 158.21
L 187.82 85.71
A 0.40 0.40 0.0 0 0 187.42 85.31
L 161.93 85.31
A 1.81 1.80 18.9 0 0 160.51 86.00
Q 127.35 128.40 95.47 169.18
Q 91.13 174.73 82.84 174.65
Q 72.58 174.56 60.03 174.72
Q 52.63 174.81 49.37 173.22
Q 44.32 170.75 42.32 165.57
Q 41.23 162.77 41.27 158.11
Q 41.55 120.87 41.25 87.27
Q 41.19 80.99 42.63 78.14
C 45.44 72.61 50.37 69.93 56.56 69.96
Q 71.60 70.05 84.18 70.00
C 89.66 69.98 93.63 72.73 96.91 77.34
Q 103.03 85.94 109.82 95.07
Q 110.23 95.62 110.28 96.30
C 110.38 97.79 110.60 99.36 109.70 100.67
Q 107.60 103.72 105.48 105.83
C 103.07 108.21 99.47 107.36 97.61 104.71
Q 90.51 94.60 83.63 85.62
A 0.80 0.79 71.0 0 0 83.00 85.31
L 57.30 85.31
Q 56.66 85.31 56.66 85.95
L 56.65 158.45
Q 56.65 159.00 57.21 159.00
L 82.59 159.00
A 2.37 2.35 -70.9 0 0 84.45 158.09
Q 117.03 116.46 149.08 75.49
C 152.10 71.63 156.39 69.89 161.37 69.94
Q 173.94 70.08 186.23 69.92
Q 191.90 69.85 195.17 71.35
C 199.97 73.56 203.21 78.41 203.20 83.74
Q 203.16 123.84 203.23 160.63
C 203.24 168.72 196.64 174.52 188.79 174.60
Q 173.94 174.73 160.49 174.57
Q 152.74 174.47 148.22 167.98
Q 142.22 159.39 136.44 151.42
C 133.65 147.56 136.43 144.17 139.49 140.67
C 141.80 138.01 145.78 137.86 147.89 140.81
Q 153.96 149.33 160.48 158.48
A 1.24 1.24 0.0 0 0 161.49 159.00
L 187.03 159.00
Q 187.82 159.00 187.82 158.21
Z"
/>
</svg>

After

Width:  |  Height:  |  Size: 5.1 KiB

BIN
public/svgs/argilla.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

BIN
public/svgs/infisical.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.0 KiB

BIN
public/svgs/langfuse.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.6 KiB

1
public/svgs/litellm.svg Normal file
View File

@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 36 36"><path fill="#939598" d="M0 34h36v2H0z"/><path fill="#D1D3D4" d="M3 35h33V6H21c-4 0-5 2-5 2l-4 6S0 19 0 24c0 4 6 6 6 6z"/><path fill="#231F20" d="m14 35 2-3h20v3z"/><path fill="#3B88C3" d="M0 23.999c0 4 6 6 6 6V17.125C3 19 0 21.499 0 23.999M6 30v-.001z"/><path fill="#269" d="m6 30-3 5h33v-5z"/><path fill="#3B88C3" d="m20 30 4-6h12v6z"/><path fill="#55ACEE" d="M26 8H16l-4 6h-.001 10.843c.477 0 1.108-.448 1.412-1l2.197-4c.303-.552.102-1-.451-1"/><path fill="#3B88C3" d="m25.902 10 .549-1c.303-.552.102-1-.451-1H16l-1.333 2z"/></svg>

After

Width:  |  Height:  |  Size: 593 B

BIN
public/svgs/prefect.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.5 KiB

BIN
public/svgs/qdrant.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

56
public/svgs/searxng.svg Normal file
View File

@@ -0,0 +1,56 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<svg
xmlns:dc="http://purl.org/dc/elements/1.1/"
xmlns:cc="http://creativecommons.org/ns#"
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
xmlns:svg="http://www.w3.org/2000/svg"
xmlns="http://www.w3.org/2000/svg"
id="svg8"
version="1.1"
viewBox="0 0 92 92"
height="92mm"
width="92mm">
<defs
id="defs2" />
<metadata
id="metadata5">
<rdf:RDF>
<cc:Work
rdf:about="">
<dc:format>image/svg+xml</dc:format>
<dc:type
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
<dc:title></dc:title>
</cc:Work>
</rdf:RDF>
</metadata>
<g
transform="translate(-40.921303,-17.416526)"
id="layer1">
<circle
r="0"
style="fill:none;stroke:#000000;stroke-width:12;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
cy="92"
cx="75"
id="path3713" />
<circle
r="30"
cy="53.902557"
cx="75.921303"
id="path834"
style="fill:none;fill-opacity:1;stroke:#3050ff;stroke-width:10;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<path
d="m 67.514849,37.91524 a 18,18 0 0 1 21.051475,3.312407 18,18 0 0 1 3.137312,21.078282"
id="path852"
style="fill:none;fill-opacity:1;stroke:#3050ff;stroke-width:5;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
<rect
transform="rotate(-46.234709)"
ry="1.8669105e-13"
y="122.08995"
x="3.7063529"
height="39.963303"
width="18.846331"
id="rect912"
style="opacity:1;fill:#3050ff;fill-opacity:1;stroke:none;stroke-width:8;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
</g>
</svg>

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

BIN
public/svgs/weaviate.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 18 KiB

View File

@@ -0,0 +1,39 @@
# documentation: https://docs.anythingllm.com/installation-docker/overview
# slogan: AnythingLLM is the easiest to use, all-in-one AI application that can do RAG, AI Agents, and much more with no code or infrastructure headaches.
# tags: lowcode, nocode, ai, llm, openai, anthropic, machine-learning, rag, agents, chatbot, api, team, bot
# logo: svgs/anythingllm.svg
version: "3"
volumes:
storage_dir: null
hot_dir: null
outputs_dir: null
services:
anything-llm:
image: mintplexlabs/anythingllm
environment:
- SERVICE_FQDN_ANYTHINGLLM_3001
- STORAGE_DIR=/app/server/storage
- DISABLE_TELEMETRY=true
- PASSWORDLOWERCASE=1
- PASSWORDMAXCHAR=250
- PASSWORDMINCHAR=6
- PASSWORDNUMERIC=1
- PASSWORDREQUIREMENTS=1
- PASSWORDSYMBOL=1
- PASSWORDUPPERCASE=1
- SIG_KEY=${SERVICE_PASSWORD_SIGKEY}
- SIG_SALT=${SERVICE_PASSWORD_SIGSALT}
- JWT_SECRET=${SERVICE_PASSWORD_JWTSECRET}
- AUTH_TOKEN=${SERVICE_PASSWORD_AUTHTOKEN}
- AUTH_TOKEN=${AUTH_TOKEN}
- SERVER_PORT=${SERVER_PORT:-3001}
cap_add:
- SYS_ADMIN
volumes:
- "storage_dir:/app/server/storage"
- "hot_dir:/app/collector/hotdir"
- "outputs_dir:/app/collector/outputs"
user: "${UID:-1000}:${GID:-1000}"

View File

@@ -0,0 +1,136 @@
# documentation: https://docs.argilla.io/latest/
# slogan: Argilla is a collaboration tool for AI engineers and domain experts who need to build high-quality datasets for their projects.
# tags: workflow, orchestration, data-pipeline, python, argilla, ai, elasticsearch, datasets, data, machine-learning, data-science, nlp
# logo: svgs/argilla.png
# port: 6900
version: "3"
services:
argilla:
image: "argilla/argilla-server:v2.2.0"
restart: always
environment:
- SERVICE_FQDN_ARGILLA_6900
- ARGILLA_HOME_PATH=/var/lib/argilla
- ARGILLA_ELASTICSEARCH=http://elasticsearch:9200
- ARGILLA_DATABASE_URL=postgresql+asyncpg://${SERVICE_USER_POSTGRES}:${SERVICE_PASSWORD_POSTGRES}@postgres:5432/${POSTGRES_DB}
- ARGILLA_REDIS_URL=redis://redis:6379/0
- ARGILLA_AUTH_SECRET_KEY="${SERVICE_PASSWORD_AUTHSECRET}"
- ARGILLA_ENABLE_TELEMETRY=0
- HF_HUB_DISABLE_TELEMETRY=1
- REINDEX_DATASETS=1
- DEFAULT_USER_ENABLED=true
- USERNAME=${ARGILLA_USERNAME:-argilla}
- PASSWORD="${SERVICE_PASSWORD_ARGILLA}"
- API_KEY="${SERVICE_PASSWORD_APIKEY}"
- DEFAULT_USER_PASSWORD="${SERVICE_PASSWORD_ARGILLA}"
- DEFAULT_USER_API_KEY="${SERVICE_PASSWORD_APIKEY}"
depends_on:
elasticsearch:
condition: service_healthy
redis:
condition: service_healthy
postgres:
condition: service_healthy
volumes:
- "argilla_data:/var/lib/argilla"
healthcheck:
test:
- CMD-SHELL
- 'python -c "import requests as r;r.get(\"http://localhost:6900/api/_status\").raise_for_status()"'
interval: 10s
timeout: 10s
retries: 5
worker:
image: "argilla/argilla-server:v2.2.0"
restart: always
environment:
- ARGILLA_HOME_PATH=/var/lib/argilla
- ARGILLA_ELASTICSEARCH=http://elasticsearch:9200
- ARGILLA_DATABASE_URL=postgresql+asyncpg://${SERVICE_USER_POSTGRES}:${SERVICE_PASSWORD_POSTGRES}@postgres:5432/${POSTGRES_DB}
- ARGILLA_REDIS_URL=redis://redis:6379/0
- ARGILLA_AUTH_SECRET_KEY="${SERVICE_PASSWORD_AUTHSECRET}"
- ARGILLA_ENABLE_TELEMETRY=0
- HF_HUB_DISABLE_TELEMETRY=1
- REINDEX_DATASETS=1
- DEFAULT_USER_ENABLED=true
- USERNAME=${ARGILLA_USERNAME:-argilla}
- PASSWORD="${SERVICE_PASSWORD_ARGILLA}"
- API_KEY="${SERVICE_PASSWORD_APIKEY}"
- DEFAULT_USER_PASSWORD="${SERVICE_PASSWORD_ARGILLA}"
- DEFAULT_USER_API_KEY="${SERVICE_PASSWORD_APIKEY}"
- BACKGROUND_NUM_WORKERS=${BACKGROUND_NUM_WORKERS:-1}
depends_on:
elasticsearch:
condition: service_healthy
redis:
condition: service_healthy
postgres:
condition: service_healthy
volumes:
- "argilla_data:/var/lib/argilla"
command: "sh -c 'python -m argilla_server worker --num-workers $${BACKGROUND_NUM_WORKERS}'"
healthcheck:
test:
- CMD-SHELL
- pwd
interval: 10s
timeout: 10s
retries: 5
postgres:
image: "postgres:14"
restart: always
environment:
- POSTGRES_USER=${SERVICE_USER_POSTGRES}
- POSTGRES_PASSWORD=${SERVICE_PASSWORD_POSTGRES}
- POSTGRES_DB=${POSTGRES_DB:-argilla}
volumes:
- "pg_data:/var/lib/postgresql/data"
healthcheck:
test:
- CMD-SHELL
- "pg_isready -h localhost -U $${POSTGRES_USER} -d $${POSTGRES_DB}"
interval: 5s
timeout: 5s
retries: 3
redis:
image: "redis:7"
restart: always
volumes:
- "redis_data:/data"
healthcheck:
test:
- CMD-SHELL
- "redis-cli -h localhost -p 6379 ping"
interval: 5s
timeout: 5s
retries: 3
elasticsearch:
image: "docker.elastic.co/elasticsearch/elasticsearch:8.12.2"
restart: always
environment:
- node.name=elasticsearch
- cluster.name=es-argilla-local
- discovery.type=single-node
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
- cluster.routing.allocation.disk.threshold_enabled=false
- xpack.security.enabled=false
ulimits:
memlock:
soft: -1
hard: -1
volumes:
- "elasticsearch_data:/usr/share/elasticsearch/data/"
healthcheck:
test:
- CMD-SHELL
- "curl --silent --fail http://elasticsearch:9200"
interval: 10s
timeout: 10s
retries: 5
volumes:
argilla_data: null
elastic_data: null
redis_data: null
pg_data: null

View File

@@ -0,0 +1,75 @@
# documentation: https://infisical.com/docs/documentation/getting-started/introduction
# slogan: Infisical is the open source secret management platform that developers use to centralize their application configuration and secrets like API keys and database credentials.
# tags: security, environment, secrets, infisical, database, configuration, secret, api, keys, auth, encryption
# logo: svgs/infisical.png
# port: 8080
version: "3"
services:
backend:
restart: always
depends_on:
redis:
condition: service_healthy
db-migration:
condition: service_completed_successfully
image: "infisical/infisical:latest-postgres"
environment:
- SERVICE_FQDN_BACKEND_8080
- SITE_URL=${SERVICE_FQDN_BACKEND_8080}
- NODE_ENV=production
- ENCRYPTION_KEY=${SERVICE_PASSWORD_ENCRYPTIONKEY}
- AUTH_SECRET=${SERVICE_REALBASE64_64_AUTHSECRET}
- DB_CONNECTION_URI=postgres://${SERVICE_USER_POSTGRES}:${SERVICE_PASSWORD_POSTGRES}@db:5432/${POSTGRES_DB}
- REDIS_URL=redis://redis:6379
healthcheck:
test:
- CMD-SHELL
- "wget --no-verbose --tries=1 --spider http://127.0.0.1:8080/api/status || exit 1"
redis:
image: "redis:7"
environment:
- ALLOW_EMPTY_PASSWORD=yes
restart: always
healthcheck:
test:
- CMD-SHELL
- "redis-cli -h localhost -p 6379 ping"
interval: 5s
timeout: 5s
retries: 3
volumes:
- redis_data:/data
db:
image: "postgres:14-alpine"
restart: always
volumes:
- pg_data:/var/lib/postgresql/data
environment:
- POSTGRES_USER=${SERVICE_USER_POSTGRES}
- POSTGRES_PASSWORD=${SERVICE_PASSWORD_POSTGRES}
- POSTGRES_DB=${POSTGRES_DB:-infisical}
healthcheck:
test:
- CMD-SHELL
- "pg_isready -h localhost -U $${POSTGRES_USER} -d $${POSTGRES_DB}"
interval: 5s
timeout: 10s
retries: 10
db-migration:
depends_on:
db:
condition: service_healthy
image: "infisical/infisical:latest-postgres"
command: "npm run migration:latest"
restart: on-failure
environment:
- POSTGRES_USER=${SERVICE_USER_POSTGRES}
- POSTGRES_PASSWORD=${SERVICE_PASSWORD_POSTGRES}
- POSTGRES_DB=${POSTGRES_DB:-infisical}
- DB_CONNECTION_URI=postgres://${SERVICE_USER_POSTGRES}:${SERVICE_PASSWORD_POSTGRES}@db:5432/${POSTGRES_DB:-infisical}
- REDIS_URL=redis://redis:6379
volumes:
pg_data:
redis_data:

View File

@@ -0,0 +1,54 @@
# documentation: https://langfuse.com/docs
# slogan: Langfuse is an open-source LLM engineering platform that helps teams collaboratively debug, analyze, and iterate on their LLM applications.
# tags: ai, qdrant, weaviate, langchain, openai, gpt, llm, lmops, langfuse, llmops, tracing, observation, metrics
# logo: svgs/langfuse.png
# port: 3000
version: "3"
volumes:
pg_data: null
services:
langfuse:
image: langfuse/langfuse:2
restart: always
environment:
- SERVICE_FQDN_LANGFUSE_3000
- DATABASE_URL=postgresql://${SERVICE_USER_POSTGRES}:${SERVICE_PASSWORD_POSTGRES}@postgres:5432/${POSTGRES_DB:-langfuse}
- DIRECT_URL=postgresql://${SERVICE_USER_POSTGRES}:${SERVICE_PASSWORD_POSTGRES}@postgres:5432/${POSTGRES_DB:-langfuse}
- SALT=$SERVICE_PASSWORD_SALT
- AUTH_DISABLE_SIGNUP=${AUTH_DISABLE_SIGNUP:-false}
- NEXTAUTH_URL=$SERVICE_FQDN_LANGFUSE_3000
- NEXTAUTH_SECRET=${SERVICE_BASE64_64_NEXTAUTHSECRET}
- TELEMETRY_ENABLED=${TELEMETRY_ENABLED:-false}
- LANGFUSE_ENABLE_EXPERIMENTAL_FEATURES=${LANGFUSE_ENABLE_EXPERIMENTAL_FEATURES:-false}
- HOSTNAME=0.0.0.0
healthcheck:
test:
- CMD
- wget
- "-q"
- "--spider"
- "http://127.0.0.1:3000/api/public/health"
interval: 5s
timeout: 5s
retries: 3
depends_on:
postgres:
condition: service_healthy
postgres:
image: "postgres:16-alpine"
environment:
- POSTGRES_DB=${POSTGRES_DB:-langfuse}
- POSTGRES_PASSWORD=$SERVICE_PASSWORD_POSTGRES
- POSTGRES_USER=$SERVICE_USER_POSTGRES
volumes:
- "pg_data:/var/lib/postgresql/data"
healthcheck:
test:
- CMD-SHELL
- "pg_isready -h localhost -U $${POSTGRES_USER} -d $${POSTGRES_DB}"
interval: 5s
timeout: 5s
retries: 10

View File

@@ -0,0 +1,174 @@
# documentation: https://docs.litellm.ai
# slogan: Call all LLM APIs using the OpenAI format. Use Bedrock, Azure, OpenAI, Cohere, Anthropic, Ollama, Sagemaker, HuggingFace, Replicate, Groq (100+ LLMs)
# tags: ai, qdrant, weaviate, langchain, openai, gpt, llm, lmops, anthropic, cohere, ollama, sagemaker, huggingface, replicate, groq
# logo: svgs/litellm.svg
# port: 4000
version: "3"
volumes:
pg_data: null
redis_data: null
services:
litellm:
image: "ghcr.io/berriai/litellm-database:main-stable"
restart: always
depends_on:
postgres:
condition: service_healthy
redis:
condition: service_healthy
environment:
- SERVICE_FQDN_LITELLM_4000
- LITELLM_LOG=ERROR
- LITELLM_MODE=PRODUCTION
- "LITELLM_MASTER_KEY=${SERVICE_PASSWORD_MASTERKEY}"
- "UI_USERNAME=${SERVICE_USER_UI}"
- "UI_PASSWORD=${SERVICE_PASSWORD_UI}"
- "DATABASE_URL=postgresql://${SERVICE_USER_POSTGRES}:${SERVICE_PASSWORD_POSTGRES}@postgres:5432/${POSTGRES_DB:-litellm}"
- REDIS_HOST=redis
- REDIS_PORT=6379
- "POSTGRES_USER=${SERVICE_USER_POSTGRES}"
- "POSTGRES_PASSWORD=${SERVICE_PASSWORD_POSTGRES}"
- "POSTGRES_DB=${POSTGRES_DB:-litellm}"
- "OPENAI_API_KEY=${OPENAI_API_KEY}"
- "OPENAI_API_BASE=${OPENAI_API_BASE}"
- "ANTHROPIC_API_KEY=${ANTHROPIC_API_KEY}"
- "ANTHROPIC_API_BASE=${ANTHROPIC_API_BASE}"
- "VOYAGE_API_KEY=${VOYAGE_API_KEY}"
- "VOYAGE_API_BASE=${VOYAGE_API_BASE}"
volumes:
- type: bind
source: ./litellm-config.yaml
target: /app/config.yaml
content: |
general_settings:
proxy_batch_write_at: 60
router_settings:
redis_host: os.environ/REDIS_HOST
redis_port: os.environ/REDIS_PORT
redis_password: os.environ/REDIS_PASSWORD
enable_pre_call_check: true
litellm_settings:
set_verbose: false
json_logs: true
log_raw_request_response: true
# turn_off_message_logging: false
# redact_user_api_key_info: false
service_callback: ["prometheus_system"]
drop_params: true
# max_budget: 100
# budget_duration: 30d
num_retries: 3
request_timeout: 600
telemetry: false
cache: true
cache_params:
type: redis
host: os.environ/REDIS_HOST
port: os.environ/REDIS_PORT
password: os.environ/REDIS_PASSWORD
namespace: "litellm_cache"
ttl: 600
success_callback:
# - "langfuse"
- "prometheus"
failure_callback:
# - "langfuse"
- "prometheus"
model_list:
# OpenAI
- model_name: gpt-4
litellm_params:
model: openai/gpt-4
api_key: os.environ/OPENAI_API_KEY
api_base: os.environ/OPENAI_API_BASE
- model_name: gpt-4o
litellm_params:
model: openai/gpt-4o
api_key: os.environ/OPENAI_API_KEY
api_base: os.environ/OPENAI_API_BASE
- model_name: gpt-4o-mini
litellm_params:
model: openai/gpt-4o-mini
api_key: os.environ/OPENAI_API_KEY
api_base: os.environ/OPENAI_API_BASE
# Anthropic
- model_name: claude-3-haiku
litellm_params:
model: claude-3-haiku-20240307
api_key: "os.environ/ANTHROPIC_API_KEY"
api_base: "os.environ/ANTHROPIC_API_BASE"
- model_name: claude-3.5-sonnet
litellm_params:
model: claude-3-5-sonnet-20240620
api_key: "os.environ/ANTHROPIC_API_KEY"
api_base: "os.environ/ANTHROPIC_API_BASE"
# VoyageAI
- model_name: voyage-law-2
model_info:
output_vector_size: 1024
litellm_params:
model: voyage/voyage-law-2
api_key: "os.environ/VOYAGE_API_KEY"
api_base: "os.environ/VOYAGE_API_BASE"
# rpm: 300
# tpm: 1000000
- model_name: voyage-multilingual-2
model_info:
mode: embedding
max_tokens: 32000
max_input_tokens: 32000
output_vector_size: 1024
litellm_params:
model: voyage/voyage-multilingual-2
api_key: "os.environ/VOYAGE_API_KEY"
api_base: "os.environ/VOYAGE_API_BASE"
input_cost_per_token: 0.00000012
output_cost_per_token: 0
# rpm: 300
# tpm: 1000000
healthcheck:
test:
- CMD
- python
- "-c"
- "import requests as r;r.get('http://127.0.0.1:4000/health/liveliness').raise_for_status()"
interval: 5s
timeout: 5s
retries: 3
command:
- "--config"
- /app/config.yaml
- "--port"
- "4000"
- "--num_workers"
- "8"
postgres:
image: "postgres:16-alpine"
environment:
- POSTGRES_DB=${POSTGRES_DB:-litellm}
- POSTGRES_PASSWORD=$SERVICE_PASSWORD_POSTGRES
- POSTGRES_USER=$SERVICE_USER_POSTGRES
volumes:
- "pg_data:/var/lib/postgresql/data"
healthcheck:
test:
- CMD-SHELL
- "pg_isready -h localhost -U $${POSTGRES_USER} -d $${POSTGRES_DB}"
interval: 5s
timeout: 5s
retries: 3
redis:
image: redis:7-alpine
command: redis-server --appendonly yes
volumes:
- redis_data:/data
healthcheck:
test: ["CMD", "redis-cli", "ping"]
interval: 5s
timeout: 5s
retries: 3

View File

@@ -0,0 +1,87 @@
# documentation: https://www.prefect.io/
# slogan: Prefect is an orchestration and observability platform that empowers developers to build and scale workflows quickly.
# tags: workflow, orchestration, data-pipeline, python, automation, data-processing, data-integration, etl
# logo: svgs/prefect.png
# port: 4200
version: "3"
volumes:
pg_data:
services:
prefect:
image: "prefecthq/prefect:3-latest"
restart: always
depends_on:
postgresql:
condition: service_healthy
environment:
- SERVICE_FQDN_PREFECT_4200
- PREFECT_API_DATABASE_CONNECTION_URL=postgresql+asyncpg://${SERVICE_USER_POSTGRES}:${SERVICE_PASSWORD_POSTGRES}@postgresql:5432/${POSTGRES_DB:-prefect}
- PREFECT_API_KEY=${SERVICE_PASSWORD_APIKEY}
- PREFECT_EXPERIMENTAL_WARN=true
- PREFECT_EXPERIMENTAL_ENABLE_SCHEDULE_CONCURRENCY=true
- PREFECT_RUNNER_SERVER_ENABLE=true
- PREFECT_DEFAULT_WORK_POOL_NAME=${DEFAULT_POOL_NAME:-default}
command:
- prefect
- server
- start
- "--host"
- 0.0.0.0
- "--port"
- "4200"
healthcheck:
test:
- CMD
- python
- "-c"
- "import requests as r;r.get('http://127.0.0.1:4200/api/health').raise_for_status()"
interval: 5s
timeout: 5s
retries: 3
postgresql:
image: "postgres:16-alpine"
restart: always
volumes:
- "pg_data:/var/lib/postgresql/data"
environment:
- POSTGRES_USER=$SERVICE_USER_POSTGRES
- POSTGRES_PASSWORD=$SERVICE_PASSWORD_POSTGRES
- POSTGRES_DB=${POSTGRES_DB:-prefect}
healthcheck:
test:
- CMD-SHELL
- "pg_isready -U $${POSTGRES_USER} -d $${POSTGRES_DB}"
interval: 5s
timeout: 5s
retries: 3
agent:
image: "prefecthq/prefect:3-python3.12"
restart: always
depends_on:
prefect:
condition: service_healthy
entrypoint:
- /opt/prefect/entrypoint.sh
- prefect
- worker
- start
- "--pool=$${DEFAULT_POOL_NAME}"
- "--with-healthcheck"
- "--name=$${DEFAULT_WORKER_NAME}"
- "--limit=$${DEFAULT_POOL_LIMIT}"
environment:
- PREFECT_API_URL=http://prefect:4200/api
- PREFECT_API_KEY=${SERVICE_PASSWORD_APIKEY}
- DEFAULT_POOL_NAME=${DEFAULT_POOL_NAME:-default}
- DEFAULT_POOL_LIMIT=${DEFAULT_POOL_LIMIT:-1}
- DEFAULT_WORKER_NAME=${DEFAULT_WORKER_NAME:-worker1}
healthcheck:
test:
- CMD-SHELL
- pwd
interval: 5s
timeout: 5s
retries: 3

View File

@@ -0,0 +1,27 @@
# documentation: https://qdrant.tech/documentation/
# slogan: Qdrant is a vector similarity search engine that provides a production-ready service with a convenient API to store, search, and manage points (i.e. vectors) with an additional payload.
# tags: ai, vector-database, semantic-search, machine-learning, bm25, embeddings, llm
# logo: svgs/qdrant.png
# port: 6333
version: "3"
volumes:
qdrant_storage: null
services:
qdrant:
image: "qdrant/qdrant:latest"
restart: always
environment:
- SERVICE_FQDN_QDRANT_6333
- QDRANT__SERVICE__API_KEY=${SERVICE_PASSWORD_QDRANTAPIKEY}
volumes:
- "qdrant_storage:/qdrant/storage"
healthcheck:
test:
- CMD-SHELL
- bash -c ':> /dev/tcp/127.0.0.1/6333' || exit 1
interval: 5s
timeout: 5s
retries: 3

View File

@@ -0,0 +1,78 @@
# documentation: https://docs.searxng.org
# slogan: SearXNG is a free internet metasearch engine which aggregates results from more than 70 search services.
# tags: search, google, engine, images, documents, rss, proxy, news, web, api
# logo: svgs/searxng.svg
# port: 8080
version: "3"
volumes:
redis_data: null
services:
searxng:
image: searxng/searxng
restart: always
depends_on:
redis:
condition: service_healthy
environment:
- SERVICE_FQDN_SEARXNG_8080
- INSTANCE_NAME=coolify
- BASE_URL=${SERVICE_FQDN_SEARXNG_8080}
- SEARXNG_URL=${SERVICE_FQDN_SEARXNG_8080}
- SEARXNG_BIND_ADDRESS=0.0.0.0
- SEARXNG_SECRET=${SERVICE_PASSWORD_SEARXNGSECRET}
- SEARXNG_REDIS_URL=redis://redis:6379/0
healthcheck:
test:
- CMD
- wget
- "-q"
- "--spider"
- "http://127.0.0.1:8080/healthz"
interval: 5s
timeout: 5s
retries: 3
volumes:
- type: bind
source: ./settings.yml
target: /etc/searxng/settings.yml
content: |
# see https://docs.searxng.org/admin/settings/settings.html#settings-use-default-settings
use_default_settings: true
server:
limiter: false
image_proxy: true
search:
formats:
- html
- csv
- json
- rss
ui:
static_use_hash: true
- type: bind
source: ./limiter.toml
target: /etc/searxng/limiter.toml
content: |
# This configuration file updates the default configuration file
# See https://github.com/searxng/searxng/blob/master/searx/botdetection/limiter.toml
[botdetection.ip_limit]
# activate link_token method in the ip_limit method
link_token = true
redis:
image: "redis:7"
restart: always
volumes:
- "redis_data:/data"
healthcheck:
test:
- CMD
- redis-cli
- ping
interval: 5s
timeout: 5s
retries: 3

View File

@@ -0,0 +1,24 @@
# documentation: https://github.com/Unstructured-IO/unstructured-api?tab=readme-ov-file#--general-pre-processing-pipeline-for-documents
# slogan: Unstructured provides a platform and tools to ingest and process unstructured documents for Retrieval Augmented Generation (RAG) and model fine-tuning.
# tags: workflow, orchestration, data-pipeline, python, data, machine-learning, data-science, nlp, unstructured, ocr, data-extraction
# logo: svgs/unstructured.png
# port: 8000
version: "3"
services:
unstructured:
image: "downloads.unstructured.io/unstructured-io/unstructured-api:latest"
environment:
- SERVICE_FQDN_UNSTRUCTURED_8000
- "UNSTRUCTURED_API_KEY=${SERVICE_PASSWORD_APIKEY}"
healthcheck:
test:
- CMD
- wget
- "-qO-"
- "--spider"
- "http://0.0.0.0:8000/healthcheck"
interval: 15s
timeout: 15s
retries: 3

View File

@@ -0,0 +1,50 @@
# documentation: https://weaviate.io/developers/weaviate
# slogan: Weaviate is an open-source vector database that stores both objects and vectors, allowing for combining vector search with structured filtering.
# tags: ai, vector-database, semantic-search, machine-learning, bm25, embeddings, llm
# logo: svgs/weaviate.png
# port: 8080
version: "3"
services:
weaviate:
image: "cr.weaviate.io/semitechnologies/weaviate:1.26.4"
restart: always
volumes:
- "weaviate_data:/var/lib/weaviate"
command:
- "--host"
- 0.0.0.0
- "--port"
- "8080"
- "--scheme"
- http
environment:
- SERVICE_FQDN_WEAVIATE_8080
- DISABLE_TELEMETRY=true
- QUERY_DEFAULTS_LIMIT=1000
- LOG_LEVEL=info
- GOMEMLIMIT=${GOMEMLIMIT:-1024MiB}
- GOMAXPROCS=${GOMAXPROCS:-2}
- AUTHENTICATION_ANONYMOUS_ACCESS_ENABLED=false
- AUTHORIZATION_ADMINLIST_USERS=${AUTHORIZATION_ADMINLIST_USERS:-admin@example.com}
- AUTHENTICATION_APIKEY_USERS=${AUTHENTICATION_APIKEY_USERS:-admin@example.com}
- AUTHENTICATION_APIKEY_ENABLED=true
- "AUTHENTICATION_APIKEY_ALLOWED_KEYS=${SERVICE_PASSWORD_APIKEYS}"
- PERSISTENCE_DATA_PATH=/var/lib/weaviate
- DEFAULT_VECTORIZER_MODULE=none
- ENABLE_MODULES=${ENABLE_MODULES:-text2vec-openai,generative-openai,qna-openai}
- CLUSTER_HOSTNAME=node1
healthcheck:
test:
- CMD
- wget
- "-q"
- "--spider"
- "http://localhost:8080/v1/.well-known/ready"
interval: 5s
timeout: 5s
retries: 3
volumes:
weaviate_data: null