From 18ae29ba99d61b8275776c9d975ddb39092c9144 Mon Sep 17 00:00:00 2001 From: Alex Renoki Date: Wed, 31 Jul 2024 07:11:08 +0300 Subject: [PATCH 01/18] Added langfuse --- public/svgs/langfuse.png | Bin 0 -> 9788 bytes templates/compose/langfuse.yaml | 46 ++++++++++++++++++++++++++++++++ 2 files changed, 46 insertions(+) create mode 100644 public/svgs/langfuse.png create mode 100644 templates/compose/langfuse.yaml diff --git a/public/svgs/langfuse.png b/public/svgs/langfuse.png new file mode 100644 index 0000000000000000000000000000000000000000..8dec0fe4ae1dd9c91ea9e8e0d6ed89227fef4143 GIT binary patch literal 9788 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 KDb*-ghx{KZU0w?S literal 0 HcmV?d00001 diff --git a/templates/compose/langfuse.yaml b/templates/compose/langfuse.yaml new file mode 100644 index 000000000..1512b0f07 --- /dev/null +++ b/templates/compose/langfuse.yaml @@ -0,0 +1,46 @@ +# 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 +# logo: svgs/langfuse.png +# port: 3000 + +version: "3" + +services: + langfuse: + image: langfuse/langfuse + restart: always + environment: + - DATABASE_URL=postgresql://${SERVICE_USER_POSTGRES}:${SERVICE_PASSWORD_POSTGRES}@postgres:5432/${POSTGRES_DB:-langfuse} + - NEXTAUTH_URL=$SERVICE_FQDN_LANGFUSE_3000 + - NEXTAUTH_SECRET=$NEXTAUTH_SECRET + - SALT=$SERVICE_PASSWORD_SALT + - AUTH_DISABLE_SIGNUP=${AUTH_DISABLE_SIGNUP:-false} + - TELEMETRY_ENABLED=${TELEMETRY_ENABLED:-false} + - LANGFUSE_ENABLE_EXPERIMENTAL_FEATURES=${LANGFUSE_ENABLE_EXPERIMENTAL_FEATURES:-false} + entrypoint: + - node + - web/server.js + healthcheck: + test: ["CMD", "curl", "-f", "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 From ce926afdaad018d2b575e86dc5d4e7fd06ed768f Mon Sep 17 00:00:00 2001 From: Alex Renoki Date: Sat, 17 Aug 2024 06:16:38 +0300 Subject: [PATCH 02/18] Bump to v2 --- templates/compose/langfuse.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/templates/compose/langfuse.yaml b/templates/compose/langfuse.yaml index 1512b0f07..400e6ec75 100644 --- a/templates/compose/langfuse.yaml +++ b/templates/compose/langfuse.yaml @@ -8,7 +8,7 @@ version: "3" services: langfuse: - image: langfuse/langfuse + image: langfuse/langfuse:2 restart: always environment: - DATABASE_URL=postgresql://${SERVICE_USER_POSTGRES}:${SERVICE_PASSWORD_POSTGRES}@postgres:5432/${POSTGRES_DB:-langfuse} From 71bb1f5e17c6b4947adb5c0c9f9403fbaa1cc030 Mon Sep 17 00:00:00 2001 From: Alex Renoki Date: Sat, 17 Aug 2024 06:20:42 +0300 Subject: [PATCH 03/18] Added litellm --- public/svgs/litellm.svg | 1 + templates/compose/litellm.yaml | 177 +++++++++++++++++++++++++++++++++ 2 files changed, 178 insertions(+) create mode 100644 public/svgs/litellm.svg create mode 100644 templates/compose/litellm.yaml diff --git a/public/svgs/litellm.svg b/public/svgs/litellm.svg new file mode 100644 index 000000000..01830c3f6 --- /dev/null +++ b/public/svgs/litellm.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/templates/compose/litellm.yaml b/templates/compose/litellm.yaml new file mode 100644 index 000000000..b16e08fbe --- /dev/null +++ b/templates/compose/litellm.yaml @@ -0,0 +1,177 @@ +# 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 + +volumes: + pg-data: null + redis-data: null + +services: + litellm: + image: "ghcr.io/berriai/litellm-database:main-latest" + restart: always + depends_on: + postgres: + condition: service_healthy + redis: + condition: service_healthy + environment: + - LITELLM_LOG=ERROR + - LITELLM_MODE=PRODUCTION + - "LITELLM_MASTER_KEY=${SERVICE_PASSWORD_32_LITELLM_MASTER_KEY}" + - "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: + - "./litellm-config.yaml:/app/config.yaml" + - type: bind + source: ./docker/app/config.yaml + target: /app/config.yaml + content: | + general_settings: + proxy_batch_write_at: 60 + + router_settings: + routing_strategy: usage-based-routing-v2 + 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 + 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-3.5-turbo + litellm_params: + model: openai/gpt-3.5-turbo + api_key: os.environ/OPENAI_API_KEY + api_base: os.environ/OPENAI_API_BASE + - 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 From 5f613df4e0d2c346a31934c14b132fe46dd62638 Mon Sep 17 00:00:00 2001 From: Alex Renoki Date: Wed, 31 Jul 2024 07:11:08 +0300 Subject: [PATCH 04/18] Added langfuse --- public/svgs/langfuse.png | Bin 0 -> 9788 bytes templates/compose/langfuse.yaml | 46 ++++++++++++++++++++++++++++++++ 2 files changed, 46 insertions(+) create mode 100644 public/svgs/langfuse.png create mode 100644 templates/compose/langfuse.yaml diff --git a/public/svgs/langfuse.png b/public/svgs/langfuse.png new file mode 100644 index 0000000000000000000000000000000000000000..8dec0fe4ae1dd9c91ea9e8e0d6ed89227fef4143 GIT binary patch literal 9788 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 KDb*-ghx{KZU0w?S literal 0 HcmV?d00001 diff --git a/templates/compose/langfuse.yaml b/templates/compose/langfuse.yaml new file mode 100644 index 000000000..1512b0f07 --- /dev/null +++ b/templates/compose/langfuse.yaml @@ -0,0 +1,46 @@ +# 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 +# logo: svgs/langfuse.png +# port: 3000 + +version: "3" + +services: + langfuse: + image: langfuse/langfuse + restart: always + environment: + - DATABASE_URL=postgresql://${SERVICE_USER_POSTGRES}:${SERVICE_PASSWORD_POSTGRES}@postgres:5432/${POSTGRES_DB:-langfuse} + - NEXTAUTH_URL=$SERVICE_FQDN_LANGFUSE_3000 + - NEXTAUTH_SECRET=$NEXTAUTH_SECRET + - SALT=$SERVICE_PASSWORD_SALT + - AUTH_DISABLE_SIGNUP=${AUTH_DISABLE_SIGNUP:-false} + - TELEMETRY_ENABLED=${TELEMETRY_ENABLED:-false} + - LANGFUSE_ENABLE_EXPERIMENTAL_FEATURES=${LANGFUSE_ENABLE_EXPERIMENTAL_FEATURES:-false} + entrypoint: + - node + - web/server.js + healthcheck: + test: ["CMD", "curl", "-f", "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 From 49bcd7b8e6ae88946d2597eb2505c98c7eb220e0 Mon Sep 17 00:00:00 2001 From: Alex Renoki Date: Sat, 17 Aug 2024 06:16:38 +0300 Subject: [PATCH 05/18] Bump to v2 --- templates/compose/langfuse.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/templates/compose/langfuse.yaml b/templates/compose/langfuse.yaml index 1512b0f07..400e6ec75 100644 --- a/templates/compose/langfuse.yaml +++ b/templates/compose/langfuse.yaml @@ -8,7 +8,7 @@ version: "3" services: langfuse: - image: langfuse/langfuse + image: langfuse/langfuse:2 restart: always environment: - DATABASE_URL=postgresql://${SERVICE_USER_POSTGRES}:${SERVICE_PASSWORD_POSTGRES}@postgres:5432/${POSTGRES_DB:-langfuse} From d4ace016335892cf7d778df5a5d7a125947e23ba Mon Sep 17 00:00:00 2001 From: Alex Renoki Date: Sat, 17 Aug 2024 06:20:42 +0300 Subject: [PATCH 06/18] Added litellm --- public/svgs/litellm.svg | 1 + templates/compose/litellm.yaml | 177 +++++++++++++++++++++++++++++++++ 2 files changed, 178 insertions(+) create mode 100644 public/svgs/litellm.svg create mode 100644 templates/compose/litellm.yaml diff --git a/public/svgs/litellm.svg b/public/svgs/litellm.svg new file mode 100644 index 000000000..01830c3f6 --- /dev/null +++ b/public/svgs/litellm.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/templates/compose/litellm.yaml b/templates/compose/litellm.yaml new file mode 100644 index 000000000..b16e08fbe --- /dev/null +++ b/templates/compose/litellm.yaml @@ -0,0 +1,177 @@ +# 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 + +volumes: + pg-data: null + redis-data: null + +services: + litellm: + image: "ghcr.io/berriai/litellm-database:main-latest" + restart: always + depends_on: + postgres: + condition: service_healthy + redis: + condition: service_healthy + environment: + - LITELLM_LOG=ERROR + - LITELLM_MODE=PRODUCTION + - "LITELLM_MASTER_KEY=${SERVICE_PASSWORD_32_LITELLM_MASTER_KEY}" + - "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: + - "./litellm-config.yaml:/app/config.yaml" + - type: bind + source: ./docker/app/config.yaml + target: /app/config.yaml + content: | + general_settings: + proxy_batch_write_at: 60 + + router_settings: + routing_strategy: usage-based-routing-v2 + 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 + 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-3.5-turbo + litellm_params: + model: openai/gpt-3.5-turbo + api_key: os.environ/OPENAI_API_KEY + api_base: os.environ/OPENAI_API_BASE + - 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 From a8f230b5eb82d9a3e68bdda4a4609ccfa65a70b1 Mon Sep 17 00:00:00 2001 From: Alex Renoki Date: Fri, 4 Oct 2024 06:36:25 +0300 Subject: [PATCH 07/18] Added qdrant --- public/svgs/qdrant.png | Bin 0 -> 11663 bytes templates/compose/qdrant.yaml | 27 +++++++++++++++++++++++++++ 2 files changed, 27 insertions(+) create mode 100644 public/svgs/qdrant.png create mode 100644 templates/compose/qdrant.yaml diff --git a/public/svgs/qdrant.png b/public/svgs/qdrant.png new file mode 100644 index 0000000000000000000000000000000000000000..ecb2a56d55fbaf6ccdc3640a3d8d3d6587dd701a GIT binary patch literal 11663 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 QMQa!Z8D;4*Nt2NO1;l09w*UYD literal 0 HcmV?d00001 diff --git a/templates/compose/qdrant.yaml b/templates/compose/qdrant.yaml new file mode 100644 index 000000000..2ec040624 --- /dev/null +++ b/templates/compose/qdrant.yaml @@ -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 From 9014062b484d6752e41f6b7115b031d87a65db3d Mon Sep 17 00:00:00 2001 From: Alex Renoki Date: Fri, 4 Oct 2024 06:43:59 +0300 Subject: [PATCH 08/18] Added weaviate --- public/svgs/weaviate.png | Bin 0 -> 18639 bytes templates/compose/weaviate.yaml | 50 ++++++++++++++++++++++++++++++++ 2 files changed, 50 insertions(+) create mode 100644 public/svgs/weaviate.png create mode 100644 templates/compose/weaviate.yaml diff --git a/public/svgs/weaviate.png b/public/svgs/weaviate.png new file mode 100644 index 0000000000000000000000000000000000000000..1342942532b18dae473b395591fedc8e42ec391d GIT binary patch literal 18639 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 literal 0 HcmV?d00001 diff --git a/templates/compose/weaviate.yaml b/templates/compose/weaviate.yaml new file mode 100644 index 000000000..54c767ff7 --- /dev/null +++ b/templates/compose/weaviate.yaml @@ -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 From 97ee34f1a1ac49302624df2ba90f4c568f1df3af Mon Sep 17 00:00:00 2001 From: Alex Renoki Date: Fri, 4 Oct 2024 06:53:14 +0300 Subject: [PATCH 09/18] Added searxng --- public/svgs/searxng.svg | 56 ++++++++++++++++++++++++ templates/compose/searxng.yaml | 78 ++++++++++++++++++++++++++++++++++ 2 files changed, 134 insertions(+) create mode 100644 public/svgs/searxng.svg create mode 100644 templates/compose/searxng.yaml diff --git a/public/svgs/searxng.svg b/public/svgs/searxng.svg new file mode 100644 index 000000000..b94fe3728 --- /dev/null +++ b/public/svgs/searxng.svg @@ -0,0 +1,56 @@ + + + + + + + image/svg+xml + + + + + + + + + + + + diff --git a/templates/compose/searxng.yaml b/templates/compose/searxng.yaml new file mode 100644 index 000000000..30d5e923b --- /dev/null +++ b/templates/compose/searxng.yaml @@ -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 From f4d650b03f7bfbaa691e59cb014badb67bafaa7a Mon Sep 17 00:00:00 2001 From: Alex Renoki Date: Fri, 4 Oct 2024 07:09:58 +0300 Subject: [PATCH 10/18] Fixed litellm --- templates/compose/litellm.yaml | 45 ++++++++++++++++------------------ 1 file changed, 21 insertions(+), 24 deletions(-) diff --git a/templates/compose/litellm.yaml b/templates/compose/litellm.yaml index b16e08fbe..e1c873033 100644 --- a/templates/compose/litellm.yaml +++ b/templates/compose/litellm.yaml @@ -4,13 +4,15 @@ # logo: svgs/litellm.svg # port: 4000 +version: "3" + volumes: - pg-data: null - redis-data: null + pg_data: null + redis_data: null services: litellm: - image: "ghcr.io/berriai/litellm-database:main-latest" + image: "ghcr.io/berriai/litellm-database:main-stable" restart: always depends_on: postgres: @@ -18,9 +20,10 @@ services: redis: condition: service_healthy environment: + - SERVICE_FQDN_LITELLM_4000 - LITELLM_LOG=ERROR - LITELLM_MODE=PRODUCTION - - "LITELLM_MASTER_KEY=${SERVICE_PASSWORD_32_LITELLM_MASTER_KEY}" + - "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}" @@ -36,16 +39,14 @@ services: - "VOYAGE_API_KEY=${VOYAGE_API_KEY}" - "VOYAGE_API_BASE=${VOYAGE_API_BASE}" volumes: - - "./litellm-config.yaml:/app/config.yaml" - type: bind - source: ./docker/app/config.yaml + source: ./litellm-config.yaml target: /app/config.yaml content: | general_settings: proxy_batch_write_at: 60 router_settings: - routing_strategy: usage-based-routing-v2 redis_host: os.environ/REDIS_HOST redis_port: os.environ/REDIS_PORT redis_password: os.environ/REDIS_PASSWORD @@ -57,6 +58,7 @@ services: 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 @@ -71,19 +73,14 @@ services: password: os.environ/REDIS_PASSWORD namespace: "litellm_cache" ttl: 600 - # success_callback: - # - "langfuse" - # - "prometheus" - # failure_callback: - # - "langfuse" - # - "prometheus" + success_callback: + # - "langfuse" + - "prometheus" + failure_callback: + # - "langfuse" + - "prometheus" model_list: # OpenAI - - model_name: gpt-3.5-turbo - litellm_params: - model: openai/gpt-3.5-turbo - api_key: os.environ/OPENAI_API_KEY - api_base: os.environ/OPENAI_API_BASE - model_name: gpt-4 litellm_params: model: openai/gpt-4 @@ -118,8 +115,8 @@ services: model: voyage/voyage-law-2 api_key: "os.environ/VOYAGE_API_KEY" api_base: "os.environ/VOYAGE_API_BASE" - rpm: 300 - tpm: 1000000 + # rpm: 300 + # tpm: 1000000 - model_name: voyage-multilingual-2 model_info: mode: embedding @@ -132,8 +129,8 @@ services: api_base: "os.environ/VOYAGE_API_BASE" input_cost_per_token: 0.00000012 output_cost_per_token: 0 - rpm: 300 - tpm: 1000000 + # rpm: 300 + # tpm: 1000000 healthcheck: test: - CMD @@ -157,7 +154,7 @@ services: - POSTGRES_PASSWORD=$SERVICE_PASSWORD_POSTGRES - POSTGRES_USER=$SERVICE_USER_POSTGRES volumes: - - "pg-data:/var/lib/postgresql/data" + - "pg_data:/var/lib/postgresql/data" healthcheck: test: - CMD-SHELL @@ -169,7 +166,7 @@ services: image: redis:7-alpine command: redis-server --appendonly yes volumes: - - redis-data:/data + - redis_data:/data healthcheck: test: ["CMD", "redis-cli", "ping"] interval: 5s From 78a34dbef11c211cbad1989576a5874c184f4a58 Mon Sep 17 00:00:00 2001 From: Alex Renoki Date: Fri, 4 Oct 2024 07:21:20 +0300 Subject: [PATCH 11/18] Fixed langfuse --- templates/compose/langfuse.yaml | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/templates/compose/langfuse.yaml b/templates/compose/langfuse.yaml index 400e6ec75..81b74eae1 100644 --- a/templates/compose/langfuse.yaml +++ b/templates/compose/langfuse.yaml @@ -1,26 +1,28 @@ # 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 +# 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} - - NEXTAUTH_URL=$SERVICE_FQDN_LANGFUSE_3000 - - NEXTAUTH_SECRET=$NEXTAUTH_SECRET + - 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=$NEXTAUTH_SECRET - TELEMETRY_ENABLED=${TELEMETRY_ENABLED:-false} - LANGFUSE_ENABLE_EXPERIMENTAL_FEATURES=${LANGFUSE_ENABLE_EXPERIMENTAL_FEATURES:-false} - entrypoint: - - node - - web/server.js healthcheck: test: ["CMD", "curl", "-f", "http://127.0.0.1:3000/api/public/health"] interval: 5s @@ -36,7 +38,7 @@ services: - POSTGRES_PASSWORD=$SERVICE_PASSWORD_POSTGRES - POSTGRES_USER=$SERVICE_USER_POSTGRES volumes: - - "pg-data:/var/lib/postgresql/data" + - "pg_data:/var/lib/postgresql/data" healthcheck: test: - CMD-SHELL From 9f5257bf8a074a9354db70b61ea2797041d76539 Mon Sep 17 00:00:00 2001 From: Alex Renoki Date: Fri, 4 Oct 2024 08:48:49 +0300 Subject: [PATCH 12/18] Added infisical --- public/svgs/infisical.png | Bin 0 -> 4112 bytes templates/compose/infisical.yaml | 75 +++++++++++++++++++++++++++++++ 2 files changed, 75 insertions(+) create mode 100644 public/svgs/infisical.png create mode 100644 templates/compose/infisical.yaml diff --git a/public/svgs/infisical.png b/public/svgs/infisical.png new file mode 100644 index 0000000000000000000000000000000000000000..48eddae78d18b7deedde284f2d0da56211148eea GIT binary patch literal 4112 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 literal 0 HcmV?d00001 diff --git a/templates/compose/infisical.yaml b/templates/compose/infisical.yaml new file mode 100644 index 000000000..e9a9ac7bb --- /dev/null +++ b/templates/compose/infisical.yaml @@ -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_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: From 31193a9f667fda7abfe9b45436b8de8cf8d54e5e Mon Sep 17 00:00:00 2001 From: Alex Renoki Date: Fri, 4 Oct 2024 08:49:02 +0300 Subject: [PATCH 13/18] Fixed postgres healthchecks --- templates/compose/langfuse.yaml | 2 +- templates/compose/litellm.yaml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/templates/compose/langfuse.yaml b/templates/compose/langfuse.yaml index 81b74eae1..84c1c9335 100644 --- a/templates/compose/langfuse.yaml +++ b/templates/compose/langfuse.yaml @@ -42,7 +42,7 @@ services: healthcheck: test: - CMD-SHELL - - "pg_isready -h localhost -U ${POSTGRES_USER} -d ${POSTGRES_DB}" + - "pg_isready -h localhost -U $${POSTGRES_USER} -d $${POSTGRES_DB}" interval: 5s timeout: 5s retries: 10 diff --git a/templates/compose/litellm.yaml b/templates/compose/litellm.yaml index e1c873033..bf9063165 100644 --- a/templates/compose/litellm.yaml +++ b/templates/compose/litellm.yaml @@ -158,7 +158,7 @@ services: healthcheck: test: - CMD-SHELL - - "pg_isready -h localhost -U ${POSTGRES_USER} -d ${POSTGRES_DB}" + - "pg_isready -h localhost -U $${POSTGRES_USER} -d $${POSTGRES_DB}" interval: 5s timeout: 5s retries: 3 From 21c6510e9d5a2d715635fce0583e1283fdd1bd32 Mon Sep 17 00:00:00 2001 From: Alex Renoki Date: Fri, 4 Oct 2024 11:26:45 +0300 Subject: [PATCH 14/18] Improved healthchecks and generations --- templates/compose/infisical.yaml | 2 +- templates/compose/langfuse.yaml | 10 ++++++++-- 2 files changed, 9 insertions(+), 3 deletions(-) diff --git a/templates/compose/infisical.yaml b/templates/compose/infisical.yaml index e9a9ac7bb..a1d4e9e8e 100644 --- a/templates/compose/infisical.yaml +++ b/templates/compose/infisical.yaml @@ -20,7 +20,7 @@ services: - SITE_URL=${SERVICE_FQDN_BACKEND_8080} - NODE_ENV=production - ENCRYPTION_KEY=${SERVICE_PASSWORD_ENCRYPTIONKEY} - - AUTH_SECRET=${SERVICE_REALBASE64_AUTHSECRET} + - 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: diff --git a/templates/compose/langfuse.yaml b/templates/compose/langfuse.yaml index 84c1c9335..56753cf49 100644 --- a/templates/compose/langfuse.yaml +++ b/templates/compose/langfuse.yaml @@ -20,11 +20,17 @@ services: - SALT=$SERVICE_PASSWORD_SALT - AUTH_DISABLE_SIGNUP=${AUTH_DISABLE_SIGNUP:-false} - NEXTAUTH_URL=$SERVICE_FQDN_LANGFUSE_3000 - - NEXTAUTH_SECRET=$NEXTAUTH_SECRET + - 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", "curl", "-f", "http://127.0.0.1:3000/api/public/health"] + test: + - CMD + - wget + - "-q" + - "--spider" + - "http://127.0.0.1:3000/api/public/health" interval: 5s timeout: 5s retries: 3 From f2ccc4059daa22e773cdb6c72e134a4766c5d197 Mon Sep 17 00:00:00 2001 From: Alex Renoki Date: Fri, 4 Oct 2024 11:33:01 +0300 Subject: [PATCH 15/18] Added prefect --- public/svgs/prefect.png | Bin 0 -> 3630 bytes templates/compose/prefect.yaml | 87 +++++++++++++++++++++++++++++++++ 2 files changed, 87 insertions(+) create mode 100644 public/svgs/prefect.png create mode 100644 templates/compose/prefect.yaml diff --git a/public/svgs/prefect.png b/public/svgs/prefect.png new file mode 100644 index 0000000000000000000000000000000000000000..2f87ec0d741fc1c01d4379d3ec256adde68ca851 GIT binary patch literal 3630 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 literal 0 HcmV?d00001 diff --git a/templates/compose/prefect.yaml b/templates/compose/prefect.yaml new file mode 100644 index 000000000..8d6c13271 --- /dev/null +++ b/templates/compose/prefect.yaml @@ -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 From 9435be7cce0ff65a4096e375f22476726b37d905 Mon Sep 17 00:00:00 2001 From: Alex Renoki Date: Fri, 4 Oct 2024 11:49:04 +0300 Subject: [PATCH 16/18] Added Argilla --- public/svgs/argilla.png | Bin 0 -> 18955 bytes templates/compose/argilla.yaml | 136 +++++++++++++++++++++++++++++++++ 2 files changed, 136 insertions(+) create mode 100644 public/svgs/argilla.png create mode 100644 templates/compose/argilla.yaml diff --git a/public/svgs/argilla.png b/public/svgs/argilla.png new file mode 100644 index 0000000000000000000000000000000000000000..3ead3278569d6a2cbaae3fcb92c24ced0bbfbd5a GIT binary patch literal 18955 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

    `85N8228mHX^Xswh6 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 Date: Fri, 4 Oct 2024 11:54:32 +0300 Subject: [PATCH 17/18] Added unstructured --- public/svgs/unstructured.png | Bin 0 -> 14909 bytes templates/compose/unstructured.yaml | 24 ++++++++++++++++++++++++ 2 files changed, 24 insertions(+) create mode 100644 public/svgs/unstructured.png create mode 100644 templates/compose/unstructured.yaml diff --git a/public/svgs/unstructured.png b/public/svgs/unstructured.png new file mode 100644 index 0000000000000000000000000000000000000000..a6ec855b65cf71ec86b4d156d9b7acdee1c9b60d GIT binary patch literal 14909 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 GzyA-M@+AZS literal 0 HcmV?d00001 diff --git a/templates/compose/unstructured.yaml b/templates/compose/unstructured.yaml new file mode 100644 index 000000000..1b8ea07f7 --- /dev/null +++ b/templates/compose/unstructured.yaml @@ -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 From f0f685b78aeb7aecf78301faa38cb5812d3043a9 Mon Sep 17 00:00:00 2001 From: Alex Renoki Date: Fri, 4 Oct 2024 12:29:08 +0300 Subject: [PATCH 18/18] Added anythingllm --- public/svgs/anythingllm.svg | 166 +++++++++++++++++++++++++++++ templates/compose/anythingllm.yaml | 39 +++++++ 2 files changed, 205 insertions(+) create mode 100644 public/svgs/anythingllm.svg create mode 100644 templates/compose/anythingllm.yaml diff --git a/public/svgs/anythingllm.svg b/public/svgs/anythingllm.svg new file mode 100644 index 000000000..1c25f8711 --- /dev/null +++ b/public/svgs/anythingllm.svg @@ -0,0 +1,166 @@ + + + + + + + diff --git a/templates/compose/anythingllm.yaml b/templates/compose/anythingllm.yaml new file mode 100644 index 000000000..952fe5ce5 --- /dev/null +++ b/templates/compose/anythingllm.yaml @@ -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}"