mirror of
https://github.com/kossakovsky/n8n-install.git
synced 2026-04-26 17:56:10 +00:00
Add CLAUDE.md for project documentation and remove obsolete workflow files
- Created CLAUDE.md to provide comprehensive guidance on the n8n-install project, including architecture, key files, common commands, and service addition workflow. - Deleted outdated workflow files: Local_RAG_AI_Agent_n8n_Workflow.json, Create_Google_Doc.json, Get_Postgres_Tables.json, Post_Message_to_Slack.json, and Summarize_Slack_Conversation.json to streamline the repository and remove unused resources. - Updated final report script to reflect changes in user messaging.
This commit is contained in:
197
CLAUDE.md
Normal file
197
CLAUDE.md
Normal file
@@ -0,0 +1,197 @@
|
||||
# CLAUDE.md
|
||||
|
||||
This file provides guidance to Claude Code (claude.ai/code) when working with code in this repository.
|
||||
|
||||
## Project Overview
|
||||
|
||||
This is **n8n-install**, a Docker Compose-based installer that provides a comprehensive self-hosted environment for n8n workflow automation and numerous AI/automation services. The installer includes an interactive wizard, automated secret generation, and integrated HTTPS via Caddy.
|
||||
|
||||
### Core Architecture
|
||||
|
||||
- **Profile-based service management**: Services are activated via Docker Compose profiles (e.g., `n8n`, `flowise`, `monitoring`). Profiles are stored in the `.env` file's `COMPOSE_PROFILES` variable.
|
||||
- **No exposed ports**: Services do NOT publish ports directly. All external HTTPS access is routed through Caddy reverse proxy on ports 80/443.
|
||||
- **Shared secrets**: Core services (Postgres, Redis/Valkey, Caddy) are always included. Other services are optional and selected during installation.
|
||||
- **Queue-based n8n**: n8n runs in `queue` mode with Redis, Postgres, and dynamically scaled workers (`N8N_WORKER_COUNT`).
|
||||
|
||||
### Key Files
|
||||
|
||||
- `docker-compose.yml`: Service definitions with profiles
|
||||
- `Caddyfile`: Reverse proxy configuration with automatic HTTPS
|
||||
- `.env`: Generated secrets and configuration (from `.env.example`)
|
||||
- `scripts/install.sh`: Main installation orchestrator
|
||||
- `scripts/04_wizard.sh`: Interactive service selection using whiptail
|
||||
- `scripts/03_generate_secrets.sh`: Secret generation and bcrypt hashing
|
||||
- `scripts/07_final_report.sh`: Post-install credential summary
|
||||
|
||||
## Common Development Commands
|
||||
|
||||
### Installation and Updates
|
||||
|
||||
```bash
|
||||
# Full installation (run from project root)
|
||||
sudo bash ./scripts/install.sh
|
||||
|
||||
# Update to latest versions and pull new images
|
||||
sudo bash ./scripts/update.sh
|
||||
|
||||
# Re-run service selection wizard (for adding/removing services)
|
||||
sudo bash ./scripts/04_wizard.sh
|
||||
```
|
||||
|
||||
### Docker Compose Operations
|
||||
|
||||
```bash
|
||||
# Start all enabled profile services
|
||||
docker compose -p localai up -d
|
||||
|
||||
# View logs for a specific service
|
||||
docker compose -p localai logs -f --tail=200 <service-name> | cat
|
||||
|
||||
# Recreate a single service (e.g., after config changes)
|
||||
docker compose -p localai up -d --no-deps --force-recreate <service-name>
|
||||
|
||||
# Stop all services
|
||||
docker compose -p localai down
|
||||
|
||||
# Remove unused Docker resources
|
||||
sudo bash ./scripts/docker_cleanup.sh
|
||||
```
|
||||
|
||||
### Development and Testing
|
||||
|
||||
```bash
|
||||
# Regenerate secrets after modifying .env.example
|
||||
bash ./scripts/03_generate_secrets.sh
|
||||
|
||||
# Check current active profiles
|
||||
grep COMPOSE_PROFILES .env
|
||||
|
||||
# View Caddy logs for reverse proxy issues
|
||||
docker compose -p localai logs -f caddy
|
||||
|
||||
# Test n8n worker scaling
|
||||
# Edit N8N_WORKER_COUNT in .env, then:
|
||||
docker compose -p localai up -d --scale n8n-worker=<count>
|
||||
```
|
||||
|
||||
## Adding a New Service
|
||||
|
||||
Follow this workflow when adding a new optional service (refer to `.cursor/rules/add-new-service.mdc` for complete details):
|
||||
|
||||
1. **docker-compose.yml**: Add service with `profiles: ["myservice"]`, `restart: unless-stopped`. Do NOT expose ports.
|
||||
2. **Caddyfile**: Add reverse proxy block using `{$MYSERVICE_HOSTNAME}`. Consider if basic auth is needed.
|
||||
3. **.env.example**: Add `MYSERVICE_HOSTNAME=myservice.yourdomain.com` and credentials if using basic auth.
|
||||
4. **scripts/03_generate_secrets.sh**: Generate passwords and bcrypt hashes. Add to `VARS_TO_GENERATE` map.
|
||||
5. **scripts/04_wizard.sh**: Add service to `base_services_data` array for wizard selection.
|
||||
6. **scripts/07_final_report.sh**: Add service URL and credentials output using `is_profile_active "myservice"`.
|
||||
7. **README.md**: Add one-line description under "What's Included".
|
||||
|
||||
**Always ask users if the new service requires Caddy basic auth protection.**
|
||||
|
||||
## Important Service Details
|
||||
|
||||
### n8n Configuration
|
||||
|
||||
- n8n runs in `EXECUTIONS_MODE=queue` with Redis as the queue backend
|
||||
- Custom JavaScript libraries are pre-installed: `cheerio`, `axios`, `moment`, `lodash` (see `NODE_FUNCTION_ALLOW_EXTERNAL`)
|
||||
- Workflows can access the host filesystem via `/data/shared` (mapped to `./shared`)
|
||||
- Worker count is controlled by `N8N_WORKER_COUNT` env var (defaults to 1)
|
||||
|
||||
### Caddy Reverse Proxy
|
||||
|
||||
- Automatically obtains Let's Encrypt certificates when `LETSENCRYPT_EMAIL` is set
|
||||
- Hostnames are passed via environment variables (e.g., `N8N_HOSTNAME`, `FLOWISE_HOSTNAME`)
|
||||
- Basic auth uses bcrypt hashes generated by `scripts/03_generate_secrets.sh` via Caddy's hash command
|
||||
- Never add `ports:` to services in docker-compose.yml; let Caddy handle all external access
|
||||
|
||||
### Secret Generation
|
||||
|
||||
The `scripts/03_generate_secrets.sh` script:
|
||||
- Generates random passwords, JWT secrets, API keys, and encryption keys
|
||||
- Creates bcrypt password hashes using Caddy's `hash-password` command
|
||||
- Preserves existing user-provided values in `.env`
|
||||
- Supports different secret types via `VARS_TO_GENERATE` map: `password:32`, `jwt`, `api_key`, etc.
|
||||
|
||||
### Service Profiles
|
||||
|
||||
Common profiles:
|
||||
- `n8n`: n8n workflow automation (includes main app, worker, and import services)
|
||||
- `flowise`: Flowise AI agent builder
|
||||
- `monitoring`: Prometheus, Grafana, cAdvisor, node-exporter
|
||||
- `langfuse`: Langfuse observability (includes ClickHouse, MinIO, worker, web)
|
||||
- `cpu`, `gpu-nvidia`, `gpu-amd`: Ollama hardware profiles (mutually exclusive)
|
||||
- `cloudflare-tunnel`: Cloudflare Tunnel for zero-trust access
|
||||
|
||||
## Architecture Patterns
|
||||
|
||||
### Healthchecks
|
||||
|
||||
Services should define healthchecks for proper dependency management:
|
||||
```yaml
|
||||
healthcheck:
|
||||
test: ["CMD-SHELL", "wget -qO- http://localhost:8080/health || exit 1"]
|
||||
interval: 30s
|
||||
timeout: 10s
|
||||
retries: 5
|
||||
```
|
||||
|
||||
### Service Dependencies
|
||||
|
||||
Use `depends_on` with conditions:
|
||||
```yaml
|
||||
depends_on:
|
||||
postgres:
|
||||
condition: service_healthy
|
||||
redis:
|
||||
condition: service_healthy
|
||||
```
|
||||
|
||||
### Environment Variable Patterns
|
||||
|
||||
- All secrets/passwords end with `_PASSWORD` or `_KEY`
|
||||
- All hostnames end with `_HOSTNAME`
|
||||
- Password hashes end with `_PASSWORD_HASH`
|
||||
- Use `${VAR:-default}` for optional vars with defaults
|
||||
|
||||
### Profile Activation Logic
|
||||
|
||||
In bash scripts, check if a profile is active:
|
||||
```bash
|
||||
if is_profile_active "myservice"; then
|
||||
# Service-specific logic
|
||||
fi
|
||||
```
|
||||
|
||||
## Common Issues and Solutions
|
||||
|
||||
### Service won't start after adding
|
||||
1. Ensure profile is added to `COMPOSE_PROFILES` in `.env`
|
||||
2. Check logs: `docker compose -p localai logs <service>`
|
||||
3. Verify no port conflicts (no services should publish ports)
|
||||
4. Ensure healthcheck is properly defined if service has dependencies
|
||||
|
||||
### Caddy certificate issues
|
||||
- DNS must be configured before installation (wildcard A record: `*.yourdomain.com`)
|
||||
- Check Caddy logs for certificate acquisition errors
|
||||
- Verify `LETSENCRYPT_EMAIL` is set in `.env`
|
||||
|
||||
### Password hash generation fails
|
||||
- Ensure Caddy container is running: `docker compose -p localai up -d caddy`
|
||||
- Script uses: `docker exec caddy caddy hash-password --plaintext "$password"`
|
||||
|
||||
## File Locations
|
||||
|
||||
- Shared files accessible by n8n: `./shared` (mounted as `/data/shared` in n8n)
|
||||
- n8n storage: Docker volume `n8n_storage`
|
||||
- Service-specific volumes: Defined in `volumes:` section at top of `docker-compose.yml`
|
||||
- Installation logs: stdout during script execution
|
||||
- Service logs: `docker compose -p localai logs <service>`
|
||||
|
||||
## Testing Changes
|
||||
|
||||
When modifying installer scripts:
|
||||
1. Test on a clean Ubuntu 24.04 LTS system (minimum 4GB RAM / 2 CPU)
|
||||
2. Verify all profile combinations work
|
||||
3. Check that `.env` is properly generated
|
||||
4. Confirm final report displays correct URLs and credentials
|
||||
5. Test update script preserves custom configurations
|
||||
@@ -1,740 +0,0 @@
|
||||
{
|
||||
"name": "Local RAG AI Agent",
|
||||
"nodes": [
|
||||
{
|
||||
"parameters": {},
|
||||
"id": "99b30fd7-b36c-44ba-9daa-408585aaaee9",
|
||||
"name": "Postgres Chat Memory",
|
||||
"type": "@n8n/n8n-nodes-langchain.memoryPostgresChat",
|
||||
"typeVersion": 1.1,
|
||||
"position": [
|
||||
1040,
|
||||
560
|
||||
],
|
||||
"credentials": {
|
||||
"postgres": {
|
||||
"id": "iN7fO2CgatVwq73z",
|
||||
"name": "Postgres account"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"parameters": {
|
||||
"model": "llama3.1:latest",
|
||||
"options": {}
|
||||
},
|
||||
"id": "c7632a7c-2661-492e-bd6f-aab994818998",
|
||||
"name": "Ollama Chat Model",
|
||||
"type": "@n8n/n8n-nodes-langchain.lmChatOllama",
|
||||
"typeVersion": 1,
|
||||
"position": [
|
||||
920,
|
||||
560
|
||||
],
|
||||
"credentials": {
|
||||
"ollamaApi": {
|
||||
"id": "eOwAotC7AUgJlvHM",
|
||||
"name": "Ollama account"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"parameters": {
|
||||
"model": "llama3.1:latest",
|
||||
"options": {}
|
||||
},
|
||||
"id": "73d773a4-5c72-4af3-a52d-144f0e417823",
|
||||
"name": "Ollama Model",
|
||||
"type": "@n8n/n8n-nodes-langchain.lmOllama",
|
||||
"typeVersion": 1,
|
||||
"position": [
|
||||
1960,
|
||||
500
|
||||
],
|
||||
"credentials": {
|
||||
"ollamaApi": {
|
||||
"id": "eOwAotC7AUgJlvHM",
|
||||
"name": "Ollama account"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"parameters": {
|
||||
"name": "documents",
|
||||
"topK": 3
|
||||
},
|
||||
"id": "3f882fa7-c8ed-4531-b236-a34c16c55838",
|
||||
"name": "Vector Store Tool",
|
||||
"type": "@n8n/n8n-nodes-langchain.toolVectorStore",
|
||||
"typeVersion": 1,
|
||||
"position": [
|
||||
1740,
|
||||
340
|
||||
]
|
||||
},
|
||||
{
|
||||
"parameters": {
|
||||
"model": "nomic-embed-text:latest"
|
||||
},
|
||||
"id": "3a8e3fa0-3997-4bce-985c-975fb5ad4013",
|
||||
"name": "Embeddings Ollama",
|
||||
"type": "@n8n/n8n-nodes-langchain.embeddingsOllama",
|
||||
"typeVersion": 1,
|
||||
"position": [
|
||||
1840,
|
||||
600
|
||||
],
|
||||
"credentials": {
|
||||
"ollamaApi": {
|
||||
"id": "eOwAotC7AUgJlvHM",
|
||||
"name": "Ollama account"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"parameters": {
|
||||
"pollTimes": {
|
||||
"item": [
|
||||
{
|
||||
"mode": "everyMinute"
|
||||
}
|
||||
]
|
||||
},
|
||||
"triggerOn": "specificFolder",
|
||||
"folderToWatch": {
|
||||
"__rl": true,
|
||||
"value": "1914m3M7kRzkd5RJqAfzRY9EBcJrKemZC",
|
||||
"mode": "list",
|
||||
"cachedResultName": "Meeting Notes",
|
||||
"cachedResultUrl": "https://drive.google.com/drive/folders/1914m3M7kRzkd5RJqAfzRY9EBcJrKemZC"
|
||||
},
|
||||
"event": "fileCreated",
|
||||
"options": {}
|
||||
},
|
||||
"id": "41fb71dd-236a-48bc-9761-5841d52ca1b3",
|
||||
"name": "File Created",
|
||||
"type": "n8n-nodes-base.googleDriveTrigger",
|
||||
"typeVersion": 1,
|
||||
"position": [
|
||||
600,
|
||||
880
|
||||
],
|
||||
"credentials": {
|
||||
"googleDriveOAuth2Api": {
|
||||
"id": "vzcL2pD7uQzqDpdK",
|
||||
"name": "Google Drive account"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"parameters": {
|
||||
"pollTimes": {
|
||||
"item": [
|
||||
{
|
||||
"mode": "everyMinute"
|
||||
}
|
||||
]
|
||||
},
|
||||
"triggerOn": "specificFolder",
|
||||
"folderToWatch": {
|
||||
"__rl": true,
|
||||
"value": "1914m3M7kRzkd5RJqAfzRY9EBcJrKemZC",
|
||||
"mode": "list",
|
||||
"cachedResultName": "Meeting Notes",
|
||||
"cachedResultUrl": "https://drive.google.com/drive/folders/1914m3M7kRzkd5RJqAfzRY9EBcJrKemZC"
|
||||
},
|
||||
"event": "fileUpdated",
|
||||
"options": {}
|
||||
},
|
||||
"id": "7b904686-89ae-4722-9ce5-a9da1b13b1a1",
|
||||
"name": "File Updated",
|
||||
"type": "n8n-nodes-base.googleDriveTrigger",
|
||||
"typeVersion": 1,
|
||||
"position": [
|
||||
600,
|
||||
1100
|
||||
],
|
||||
"credentials": {
|
||||
"googleDriveOAuth2Api": {
|
||||
"id": "vzcL2pD7uQzqDpdK",
|
||||
"name": "Google Drive account"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"parameters": {
|
||||
"assignments": {
|
||||
"assignments": [
|
||||
{
|
||||
"id": "10646eae-ae46-4327-a4dc-9987c2d76173",
|
||||
"name": "file_id",
|
||||
"value": "={{ $json.id }}",
|
||||
"type": "string"
|
||||
},
|
||||
{
|
||||
"id": "dd0aa081-79e7-4714-8a67-1e898285554c",
|
||||
"name": "folder_id",
|
||||
"value": "={{ $json.parents[0] }}",
|
||||
"type": "string"
|
||||
}
|
||||
]
|
||||
},
|
||||
"options": {}
|
||||
},
|
||||
"id": "87f8bbb0-92c5-4b25-be63-7a9d91fc46f8",
|
||||
"name": "Set File ID",
|
||||
"type": "n8n-nodes-base.set",
|
||||
"typeVersion": 3.4,
|
||||
"position": [
|
||||
860,
|
||||
880
|
||||
]
|
||||
},
|
||||
{
|
||||
"parameters": {
|
||||
"operation": "download",
|
||||
"fileId": {
|
||||
"__rl": true,
|
||||
"value": "={{ $('Set File ID').item.json.file_id }}",
|
||||
"mode": "id"
|
||||
},
|
||||
"options": {
|
||||
"googleFileConversion": {
|
||||
"conversion": {
|
||||
"docsToFormat": "text/plain"
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
"id": "9f1e08fb-4ef3-4c4d-9473-5a7a1608b8e3",
|
||||
"name": "Download File",
|
||||
"type": "n8n-nodes-base.googleDrive",
|
||||
"typeVersion": 3,
|
||||
"position": [
|
||||
1300,
|
||||
880
|
||||
],
|
||||
"executeOnce": true,
|
||||
"credentials": {
|
||||
"googleDriveOAuth2Api": {
|
||||
"id": "vzcL2pD7uQzqDpdK",
|
||||
"name": "Google Drive account"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"parameters": {
|
||||
"operation": "text",
|
||||
"options": {}
|
||||
},
|
||||
"id": "7efee822-68ad-4fe2-a616-ba19fd127684",
|
||||
"name": "Extract Document Text",
|
||||
"type": "n8n-nodes-base.extractFromFile",
|
||||
"typeVersion": 1,
|
||||
"position": [
|
||||
1540,
|
||||
880
|
||||
],
|
||||
"alwaysOutputData": true
|
||||
},
|
||||
{
|
||||
"parameters": {
|
||||
"options": {
|
||||
"metadata": {
|
||||
"metadataValues": [
|
||||
{
|
||||
"name": "file_id",
|
||||
"value": "={{ $('Set File ID').item.json.file_id }}"
|
||||
},
|
||||
{
|
||||
"name": "folder_id",
|
||||
"value": "={{ $('Set File ID').item.json.folder_id }}"
|
||||
}
|
||||
]
|
||||
}
|
||||
}
|
||||
},
|
||||
"id": "da4c8b29-4944-43c4-9df3-e380366c594a",
|
||||
"name": "Default Data Loader",
|
||||
"type": "@n8n/n8n-nodes-langchain.documentDefaultDataLoader",
|
||||
"typeVersion": 1,
|
||||
"position": [
|
||||
1860,
|
||||
1100
|
||||
]
|
||||
},
|
||||
{
|
||||
"parameters": {
|
||||
"chunkSize": 100,
|
||||
"options": {}
|
||||
},
|
||||
"id": "d11c39b9-3fa7-4d5d-838f-da0d258c67c5",
|
||||
"name": "Recursive Character Text Splitter",
|
||||
"type": "@n8n/n8n-nodes-langchain.textSplitterRecursiveCharacterTextSplitter",
|
||||
"typeVersion": 1,
|
||||
"position": [
|
||||
1860,
|
||||
1320
|
||||
]
|
||||
},
|
||||
{
|
||||
"parameters": {
|
||||
"model": "nomic-embed-text:latest"
|
||||
},
|
||||
"id": "8a04559c-dfe8-479f-8998-a2e9bc994a0a",
|
||||
"name": "Embeddings Ollama1",
|
||||
"type": "@n8n/n8n-nodes-langchain.embeddingsOllama",
|
||||
"typeVersion": 1,
|
||||
"position": [
|
||||
1700,
|
||||
1100
|
||||
],
|
||||
"credentials": {
|
||||
"ollamaApi": {
|
||||
"id": "eOwAotC7AUgJlvHM",
|
||||
"name": "Ollama account"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"parameters": {
|
||||
"content": "## Local RAG AI Agent with Chat Interface",
|
||||
"height": 527.3027193303974,
|
||||
"width": 969.0343804425795
|
||||
},
|
||||
"id": "a18773ae-1eb3-46b8-91cf-4184c66cf14f",
|
||||
"name": "Sticky Note2",
|
||||
"type": "n8n-nodes-base.stickyNote",
|
||||
"typeVersion": 1,
|
||||
"position": [
|
||||
560,
|
||||
220
|
||||
]
|
||||
},
|
||||
{
|
||||
"parameters": {
|
||||
"content": "## Agent Tools for Local RAG",
|
||||
"height": 528.85546469693,
|
||||
"width": 583.4552380860637,
|
||||
"color": 4
|
||||
},
|
||||
"id": "fa010a11-3dda-4bd5-b261-463a3a6b88d9",
|
||||
"name": "Sticky Note",
|
||||
"type": "n8n-nodes-base.stickyNote",
|
||||
"typeVersion": 1,
|
||||
"position": [
|
||||
1540,
|
||||
220
|
||||
]
|
||||
},
|
||||
{
|
||||
"parameters": {
|
||||
"content": "## Workflow to Create Local Knowledgebase from Google Drive Folder",
|
||||
"height": 705.2695614889159,
|
||||
"width": 1568.9362829025763,
|
||||
"color": 5
|
||||
},
|
||||
"id": "f29e6cc7-015e-47cb-a4fd-fecd6ffb0d24",
|
||||
"name": "Sticky Note1",
|
||||
"type": "n8n-nodes-base.stickyNote",
|
||||
"typeVersion": 1,
|
||||
"position": [
|
||||
560,
|
||||
760
|
||||
]
|
||||
},
|
||||
{
|
||||
"parameters": {
|
||||
"options": {}
|
||||
},
|
||||
"id": "5da52326-dfbd-4350-919c-843461f58913",
|
||||
"name": "When chat message received",
|
||||
"type": "@n8n/n8n-nodes-langchain.chatTrigger",
|
||||
"typeVersion": 1.1,
|
||||
"position": [
|
||||
620,
|
||||
340
|
||||
],
|
||||
"webhookId": "4b3b1838-d6b3-447e-9d79-d0931eddb9f8"
|
||||
},
|
||||
{
|
||||
"parameters": {
|
||||
"qdrantCollection": {
|
||||
"__rl": true,
|
||||
"value": "documents",
|
||||
"mode": "list",
|
||||
"cachedResultName": "documents"
|
||||
},
|
||||
"options": {}
|
||||
},
|
||||
"id": "355370e0-2174-4e5b-830b-dd0f123b2e40",
|
||||
"name": "Qdrant Vector Store",
|
||||
"type": "@n8n/n8n-nodes-langchain.vectorStoreQdrant",
|
||||
"typeVersion": 1,
|
||||
"position": [
|
||||
1560,
|
||||
480
|
||||
],
|
||||
"credentials": {
|
||||
"qdrantApi": {
|
||||
"id": "VOnegFP8eijBkbNO",
|
||||
"name": "QdrantApi account"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"parameters": {
|
||||
"code": {
|
||||
"execute": {
|
||||
"code": "const { QdrantVectorStore } = require(\"@langchain/qdrant\");\nconst { OllamaEmbeddings } = require(\"@langchain/community/embeddings/ollama\");\n\nconst embeddings = new OllamaEmbeddings({\n model: \"nomic-embed-text\",\n baseUrl: \"http://ollama:11434\"\n});\n\nconst vectorStore = await QdrantVectorStore.fromExistingCollection(\n embeddings,\n {\n url: \"http://qdrant:6333\",\n collectionName: \"documents\",\n }\n);\n\nconst fileIdToDelete = this.getInputData()[0].json.file_id;\n\nconst filter = {\n must: [\n {\n key: \"metadata.file_id\",\n match: {\n value: fileIdToDelete,\n },\n },\n ],\n }\n\n// const results = await vectorStore.similaritySearch(\"this\", 10, filter);\n// const idsToDelete = results.map((doc) => doc.id);\n\n// NOT IMPLEMENTED!\n// await vectorStore.delete({ ids: idsToDelete });\n\nvectorStore.client.delete(\"documents\", {\n filter\n});\n\nreturn [ {json: { file_id: fileIdToDelete } } ];\n"
|
||||
}
|
||||
},
|
||||
"inputs": {
|
||||
"input": [
|
||||
{
|
||||
"type": "main",
|
||||
"required": true
|
||||
}
|
||||
]
|
||||
},
|
||||
"outputs": {
|
||||
"output": [
|
||||
{
|
||||
"type": "main"
|
||||
}
|
||||
]
|
||||
}
|
||||
},
|
||||
"id": "b93bd001-0c4d-42fe-939a-eb441f354917",
|
||||
"name": "Clear Old Vectors",
|
||||
"type": "@n8n/n8n-nodes-langchain.code",
|
||||
"typeVersion": 1,
|
||||
"position": [
|
||||
1080,
|
||||
880
|
||||
],
|
||||
"alwaysOutputData": false
|
||||
},
|
||||
{
|
||||
"parameters": {
|
||||
"mode": "insert",
|
||||
"qdrantCollection": {
|
||||
"__rl": true,
|
||||
"value": "documents",
|
||||
"mode": "list",
|
||||
"cachedResultName": "documents"
|
||||
},
|
||||
"options": {}
|
||||
},
|
||||
"id": "97ec4618-c0ea-445b-9406-5d41784d7836",
|
||||
"name": "Qdrant Vector Store Insert",
|
||||
"type": "@n8n/n8n-nodes-langchain.vectorStoreQdrant",
|
||||
"typeVersion": 1,
|
||||
"position": [
|
||||
1760,
|
||||
880
|
||||
],
|
||||
"credentials": {
|
||||
"qdrantApi": {
|
||||
"id": "VOnegFP8eijBkbNO",
|
||||
"name": "QdrantApi account"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"parameters": {
|
||||
"options": {}
|
||||
},
|
||||
"id": "e537544a-37d5-4b00-b5ff-bc71f041f4bb",
|
||||
"name": "Respond to Webhook",
|
||||
"type": "n8n-nodes-base.respondToWebhook",
|
||||
"typeVersion": 1.1,
|
||||
"position": [
|
||||
1340,
|
||||
340
|
||||
]
|
||||
},
|
||||
{
|
||||
"parameters": {
|
||||
"httpMethod": "POST",
|
||||
"path": "invoke_n8n_agent",
|
||||
"responseMode": "responseNode",
|
||||
"options": {}
|
||||
},
|
||||
"id": "2b8cd01f-30a8-4aab-b0dd-56d2b658f059",
|
||||
"name": "Webhook",
|
||||
"type": "n8n-nodes-base.webhook",
|
||||
"typeVersion": 2,
|
||||
"position": [
|
||||
620,
|
||||
520
|
||||
],
|
||||
"webhookId": "4a839da9-b8a2-45f8-bcaf-c484f9a5912d"
|
||||
},
|
||||
{
|
||||
"parameters": {
|
||||
"options": {}
|
||||
},
|
||||
"id": "c9dfe906-178b-4375-8bda-f9290f35f222",
|
||||
"name": "AI Agent",
|
||||
"type": "@n8n/n8n-nodes-langchain.agent",
|
||||
"typeVersion": 1.6,
|
||||
"position": [
|
||||
1000,
|
||||
340
|
||||
]
|
||||
},
|
||||
{
|
||||
"parameters": {
|
||||
"assignments": {
|
||||
"assignments": [
|
||||
{
|
||||
"id": "75ebfdef-c8e2-4c3e-b716-1479d0cc2a73",
|
||||
"name": "chatInput",
|
||||
"value": "={{ $json?.chatInput || $json.body.chatInput }}",
|
||||
"type": "string"
|
||||
},
|
||||
{
|
||||
"id": "59b7a20f-0626-4861-93e2-015d430c266e",
|
||||
"name": "sessionId",
|
||||
"value": "={{ $json?.sessionId || $json.body.sessionId}}",
|
||||
"type": "string"
|
||||
}
|
||||
]
|
||||
},
|
||||
"options": {}
|
||||
},
|
||||
"id": "8f974a15-aa2f-4525-8278-ad58ad296076",
|
||||
"name": "Edit Fields",
|
||||
"type": "n8n-nodes-base.set",
|
||||
"typeVersion": 3.4,
|
||||
"position": [
|
||||
820,
|
||||
340
|
||||
]
|
||||
}
|
||||
],
|
||||
"pinData": {},
|
||||
"connections": {
|
||||
"Postgres Chat Memory": {
|
||||
"ai_memory": [
|
||||
[
|
||||
{
|
||||
"node": "AI Agent",
|
||||
"type": "ai_memory",
|
||||
"index": 0
|
||||
}
|
||||
]
|
||||
]
|
||||
},
|
||||
"Ollama Chat Model": {
|
||||
"ai_languageModel": [
|
||||
[
|
||||
{
|
||||
"node": "AI Agent",
|
||||
"type": "ai_languageModel",
|
||||
"index": 0
|
||||
}
|
||||
]
|
||||
]
|
||||
},
|
||||
"Ollama Model": {
|
||||
"ai_languageModel": [
|
||||
[
|
||||
{
|
||||
"node": "Vector Store Tool",
|
||||
"type": "ai_languageModel",
|
||||
"index": 0
|
||||
}
|
||||
]
|
||||
]
|
||||
},
|
||||
"Embeddings Ollama": {
|
||||
"ai_embedding": [
|
||||
[
|
||||
{
|
||||
"node": "Qdrant Vector Store",
|
||||
"type": "ai_embedding",
|
||||
"index": 0
|
||||
}
|
||||
]
|
||||
]
|
||||
},
|
||||
"File Created": {
|
||||
"main": [
|
||||
[
|
||||
{
|
||||
"node": "Set File ID",
|
||||
"type": "main",
|
||||
"index": 0
|
||||
}
|
||||
]
|
||||
]
|
||||
},
|
||||
"File Updated": {
|
||||
"main": [
|
||||
[
|
||||
{
|
||||
"node": "Set File ID",
|
||||
"type": "main",
|
||||
"index": 0
|
||||
}
|
||||
]
|
||||
]
|
||||
},
|
||||
"Set File ID": {
|
||||
"main": [
|
||||
[
|
||||
{
|
||||
"node": "Clear Old Vectors",
|
||||
"type": "main",
|
||||
"index": 0
|
||||
}
|
||||
]
|
||||
]
|
||||
},
|
||||
"Download File": {
|
||||
"main": [
|
||||
[
|
||||
{
|
||||
"node": "Extract Document Text",
|
||||
"type": "main",
|
||||
"index": 0
|
||||
}
|
||||
]
|
||||
]
|
||||
},
|
||||
"Extract Document Text": {
|
||||
"main": [
|
||||
[
|
||||
{
|
||||
"node": "Qdrant Vector Store Insert",
|
||||
"type": "main",
|
||||
"index": 0
|
||||
}
|
||||
]
|
||||
]
|
||||
},
|
||||
"Default Data Loader": {
|
||||
"ai_document": [
|
||||
[
|
||||
{
|
||||
"node": "Qdrant Vector Store Insert",
|
||||
"type": "ai_document",
|
||||
"index": 0
|
||||
}
|
||||
]
|
||||
]
|
||||
},
|
||||
"Recursive Character Text Splitter": {
|
||||
"ai_textSplitter": [
|
||||
[
|
||||
{
|
||||
"node": "Default Data Loader",
|
||||
"type": "ai_textSplitter",
|
||||
"index": 0
|
||||
}
|
||||
]
|
||||
]
|
||||
},
|
||||
"Embeddings Ollama1": {
|
||||
"ai_embedding": [
|
||||
[
|
||||
{
|
||||
"node": "Qdrant Vector Store Insert",
|
||||
"type": "ai_embedding",
|
||||
"index": 0
|
||||
}
|
||||
]
|
||||
]
|
||||
},
|
||||
"When chat message received": {
|
||||
"main": [
|
||||
[
|
||||
{
|
||||
"node": "Edit Fields",
|
||||
"type": "main",
|
||||
"index": 0
|
||||
}
|
||||
]
|
||||
]
|
||||
},
|
||||
"Qdrant Vector Store": {
|
||||
"ai_vectorStore": [
|
||||
[
|
||||
{
|
||||
"node": "Vector Store Tool",
|
||||
"type": "ai_vectorStore",
|
||||
"index": 0
|
||||
}
|
||||
]
|
||||
]
|
||||
},
|
||||
"Clear Old Vectors": {
|
||||
"main": [
|
||||
[
|
||||
{
|
||||
"node": "Download File",
|
||||
"type": "main",
|
||||
"index": 0
|
||||
}
|
||||
]
|
||||
]
|
||||
},
|
||||
"Webhook": {
|
||||
"main": [
|
||||
[
|
||||
{
|
||||
"node": "Edit Fields",
|
||||
"type": "main",
|
||||
"index": 0
|
||||
}
|
||||
]
|
||||
]
|
||||
},
|
||||
"AI Agent": {
|
||||
"main": [
|
||||
[
|
||||
{
|
||||
"node": "Respond to Webhook",
|
||||
"type": "main",
|
||||
"index": 0
|
||||
}
|
||||
]
|
||||
]
|
||||
},
|
||||
"Edit Fields": {
|
||||
"main": [
|
||||
[
|
||||
{
|
||||
"node": "AI Agent",
|
||||
"type": "main",
|
||||
"index": 0
|
||||
}
|
||||
]
|
||||
]
|
||||
},
|
||||
"Vector Store Tool": {
|
||||
"ai_tool": [
|
||||
[
|
||||
{
|
||||
"node": "AI Agent",
|
||||
"type": "ai_tool",
|
||||
"index": 0
|
||||
}
|
||||
]
|
||||
]
|
||||
}
|
||||
},
|
||||
"active": true,
|
||||
"settings": {
|
||||
"executionOrder": "v1"
|
||||
},
|
||||
"versionId": "19f9691c-4682-4704-81f2-33fdec9d0be2",
|
||||
"meta": {
|
||||
"templateCredsSetupCompleted": true,
|
||||
"instanceId": "f722e3e1e81e942a38faa434ad0aee8699371bbff9f883b9d5c59a7c726605af"
|
||||
},
|
||||
"id": "vTN9y2dLXqTiDfPT",
|
||||
"tags": []
|
||||
}
|
||||
@@ -1,114 +0,0 @@
|
||||
{
|
||||
"name": "Create Google Doc",
|
||||
"nodes": [
|
||||
{
|
||||
"parameters": {
|
||||
"operation": "createFromText",
|
||||
"content": "={{ $json.body.document_text }}",
|
||||
"name": "={{ $json.body.document_title }}",
|
||||
"driveId": {
|
||||
"__rl": true,
|
||||
"mode": "list",
|
||||
"value": "My Drive"
|
||||
},
|
||||
"folderId": {
|
||||
"__rl": true,
|
||||
"value": "1914m3M7kRzkd5RJqAfzRY9EBcJrKemZC",
|
||||
"mode": "list",
|
||||
"cachedResultName": "Meeting Notes",
|
||||
"cachedResultUrl": "https://drive.google.com/drive/folders/1914m3M7kRzkd5RJqAfzRY9EBcJrKemZC"
|
||||
},
|
||||
"options": {
|
||||
"convertToGoogleDocument": true
|
||||
}
|
||||
},
|
||||
"id": "abb2ee3f-7dd0-4d6e-96f0-6cc91eb64a5e",
|
||||
"name": "Google Drive",
|
||||
"type": "n8n-nodes-base.googleDrive",
|
||||
"typeVersion": 3,
|
||||
"position": [
|
||||
1040,
|
||||
360
|
||||
],
|
||||
"credentials": {
|
||||
"googleDriveOAuth2Api": {
|
||||
"id": "cfNochbuJikPwwl2",
|
||||
"name": "Google Drive account"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"parameters": {
|
||||
"options": {}
|
||||
},
|
||||
"id": "9904e7b7-c9f6-49b5-ab72-6b199c6e2f46",
|
||||
"name": "Respond to Webhook",
|
||||
"type": "n8n-nodes-base.respondToWebhook",
|
||||
"typeVersion": 1.1,
|
||||
"position": [
|
||||
1260,
|
||||
360
|
||||
]
|
||||
},
|
||||
{
|
||||
"parameters": {
|
||||
"httpMethod": "POST",
|
||||
"path": "d8db9fa3-04fe-43c8-9acf-e1912463477f",
|
||||
"authentication": "headerAuth",
|
||||
"responseMode": "responseNode",
|
||||
"options": {}
|
||||
},
|
||||
"id": "7e761bed-99f6-4a8a-959b-d1b3542b6071",
|
||||
"name": "Webhook",
|
||||
"type": "n8n-nodes-base.webhook",
|
||||
"typeVersion": 2,
|
||||
"position": [
|
||||
820,
|
||||
360
|
||||
],
|
||||
"webhookId": "d8db9fa3-04fe-43c8-9acf-e1912463477f",
|
||||
"credentials": {
|
||||
"httpHeaderAuth": {
|
||||
"id": "PGr0hc0kn43Di1sz",
|
||||
"name": "testauth"
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"pinData": {},
|
||||
"connections": {
|
||||
"Google Drive": {
|
||||
"main": [
|
||||
[
|
||||
{
|
||||
"node": "Respond to Webhook",
|
||||
"type": "main",
|
||||
"index": 0
|
||||
}
|
||||
]
|
||||
]
|
||||
},
|
||||
"Webhook": {
|
||||
"main": [
|
||||
[
|
||||
{
|
||||
"node": "Google Drive",
|
||||
"type": "main",
|
||||
"index": 0
|
||||
}
|
||||
]
|
||||
]
|
||||
}
|
||||
},
|
||||
"active": true,
|
||||
"settings": {
|
||||
"executionOrder": "v1"
|
||||
},
|
||||
"versionId": "c1f66b1c-c7dc-48ba-9197-6a0e3ac3e8f4",
|
||||
"meta": {
|
||||
"templateCredsSetupCompleted": true,
|
||||
"instanceId": "620f0d7e3114cb344761d7d45a21ef2a32096f91d8696e7057756042e1999e2c"
|
||||
},
|
||||
"id": "LYrReDbpmqK3eX2P",
|
||||
"tags": []
|
||||
}
|
||||
@@ -1,130 +0,0 @@
|
||||
{
|
||||
"name": "Get Postgres Tables",
|
||||
"nodes": [
|
||||
{
|
||||
"parameters": {
|
||||
"options": {}
|
||||
},
|
||||
"id": "74a8e48c-c13f-450c-835e-1702d87f894c",
|
||||
"name": "Respond to Webhook",
|
||||
"type": "n8n-nodes-base.respondToWebhook",
|
||||
"typeVersion": 1.1,
|
||||
"position": [
|
||||
880,
|
||||
60
|
||||
]
|
||||
},
|
||||
{
|
||||
"parameters": {
|
||||
"operation": "executeQuery",
|
||||
"query": "SELECT table_name \nFROM information_schema.tables\nWHERE table_schema = 'public'\n AND table_type = 'BASE TABLE'\nORDER BY table_name;",
|
||||
"options": {}
|
||||
},
|
||||
"id": "2cd15801-ea79-4a53-b1be-c0470429966a",
|
||||
"name": "Postgres",
|
||||
"type": "n8n-nodes-base.postgres",
|
||||
"typeVersion": 2.5,
|
||||
"position": [
|
||||
400,
|
||||
60
|
||||
],
|
||||
"credentials": {
|
||||
"postgres": {
|
||||
"id": "AXJoQJaFRsoL9Qk8",
|
||||
"name": "Postgres account"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"parameters": {
|
||||
"fieldsToSummarize": {
|
||||
"values": [
|
||||
{
|
||||
"aggregation": "concatenate",
|
||||
"field": "table_name"
|
||||
}
|
||||
]
|
||||
},
|
||||
"options": {}
|
||||
},
|
||||
"id": "8b66e814-e553-451c-818a-fc93699b341c",
|
||||
"name": "Summarize",
|
||||
"type": "n8n-nodes-base.summarize",
|
||||
"typeVersion": 1,
|
||||
"position": [
|
||||
640,
|
||||
60
|
||||
]
|
||||
},
|
||||
{
|
||||
"parameters": {
|
||||
"path": "d8db9fa3-04fe-43c8-9acf-e1912463477f",
|
||||
"authentication": "headerAuth",
|
||||
"responseMode": "responseNode",
|
||||
"options": {}
|
||||
},
|
||||
"id": "3eb54a82-034c-4f3f-aa99-3b6aeb744ce2",
|
||||
"name": "Webhook",
|
||||
"type": "n8n-nodes-base.webhook",
|
||||
"typeVersion": 2,
|
||||
"position": [
|
||||
180,
|
||||
60
|
||||
],
|
||||
"webhookId": "d8db9fa3-04fe-43c8-9acf-e1912463477f",
|
||||
"credentials": {
|
||||
"httpHeaderAuth": {
|
||||
"id": "upxO7NGaOTeIP4XU",
|
||||
"name": "testauth"
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"pinData": {},
|
||||
"connections": {
|
||||
"Postgres": {
|
||||
"main": [
|
||||
[
|
||||
{
|
||||
"node": "Summarize",
|
||||
"type": "main",
|
||||
"index": 0
|
||||
}
|
||||
]
|
||||
]
|
||||
},
|
||||
"Summarize": {
|
||||
"main": [
|
||||
[
|
||||
{
|
||||
"node": "Respond to Webhook",
|
||||
"type": "main",
|
||||
"index": 0
|
||||
}
|
||||
]
|
||||
]
|
||||
},
|
||||
"Webhook": {
|
||||
"main": [
|
||||
[
|
||||
{
|
||||
"node": "Postgres",
|
||||
"type": "main",
|
||||
"index": 0
|
||||
}
|
||||
]
|
||||
]
|
||||
}
|
||||
},
|
||||
"active": true,
|
||||
"settings": {
|
||||
"executionOrder": "v1"
|
||||
},
|
||||
"versionId": "bd8d96b6-53e1-4cb9-8ee7-0c8be9b86dc9",
|
||||
"meta": {
|
||||
"templateCredsSetupCompleted": true,
|
||||
"instanceId": "73cb7a3e883df514bb47e8d1b34526d30e2abb8f56cd99f10d5948a1e11b25aa"
|
||||
},
|
||||
"id": "t15NIcuhUMXOE8DM",
|
||||
"tags": []
|
||||
}
|
||||
@@ -1,108 +0,0 @@
|
||||
{
|
||||
"name": "Post Message to Slack",
|
||||
"nodes": [
|
||||
{
|
||||
"parameters": {
|
||||
"authentication": "oAuth2",
|
||||
"select": "channel",
|
||||
"channelId": {
|
||||
"__rl": true,
|
||||
"value": "C083QQBQTAM",
|
||||
"mode": "list",
|
||||
"cachedResultName": "flowise-n8n"
|
||||
},
|
||||
"text": "={{ $json.body.message }}",
|
||||
"otherOptions": {
|
||||
"includeLinkToWorkflow": false
|
||||
}
|
||||
},
|
||||
"id": "4882859e-bf35-475b-9fd2-a068ac4fc602",
|
||||
"name": "Slack",
|
||||
"type": "n8n-nodes-base.slack",
|
||||
"typeVersion": 2.2,
|
||||
"position": [
|
||||
1040,
|
||||
360
|
||||
],
|
||||
"credentials": {
|
||||
"slackOAuth2Api": {
|
||||
"id": "XtpcBxLD5axuhMm8",
|
||||
"name": "Slack account"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"parameters": {
|
||||
"options": {}
|
||||
},
|
||||
"id": "a9e7aa8a-04ba-4dc6-8a14-f2c435df4ad8",
|
||||
"name": "Respond to Webhook",
|
||||
"type": "n8n-nodes-base.respondToWebhook",
|
||||
"typeVersion": 1.1,
|
||||
"position": [
|
||||
1260,
|
||||
360
|
||||
]
|
||||
},
|
||||
{
|
||||
"parameters": {
|
||||
"httpMethod": "POST",
|
||||
"path": "f17f77e5-51dc-4589-8b51-4c8adc23c3c0",
|
||||
"authentication": "headerAuth",
|
||||
"responseMode": "responseNode",
|
||||
"options": {}
|
||||
},
|
||||
"id": "db4d3557-e423-43e9-8f0c-b4309f304567",
|
||||
"name": "Webhook",
|
||||
"type": "n8n-nodes-base.webhook",
|
||||
"typeVersion": 2,
|
||||
"position": [
|
||||
820,
|
||||
360
|
||||
],
|
||||
"webhookId": "f17f77e5-51dc-4589-8b51-4c8adc23c3c0",
|
||||
"credentials": {
|
||||
"httpHeaderAuth": {
|
||||
"id": "PGr0hc0kn43Di1sz",
|
||||
"name": "testauth"
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"pinData": {},
|
||||
"connections": {
|
||||
"Slack": {
|
||||
"main": [
|
||||
[
|
||||
{
|
||||
"node": "Respond to Webhook",
|
||||
"type": "main",
|
||||
"index": 0
|
||||
}
|
||||
]
|
||||
]
|
||||
},
|
||||
"Webhook": {
|
||||
"main": [
|
||||
[
|
||||
{
|
||||
"node": "Slack",
|
||||
"type": "main",
|
||||
"index": 0
|
||||
}
|
||||
]
|
||||
]
|
||||
}
|
||||
},
|
||||
"active": true,
|
||||
"settings": {
|
||||
"executionOrder": "v1"
|
||||
},
|
||||
"versionId": "74bd88b9-5eb7-4a1a-8bc3-be2636a3639c",
|
||||
"meta": {
|
||||
"templateCredsSetupCompleted": true,
|
||||
"instanceId": "620f0d7e3114cb344761d7d45a21ef2a32096f91d8696e7057756042e1999e2c"
|
||||
},
|
||||
"id": "dBTFcNDVqjuQ619T",
|
||||
"tags": []
|
||||
}
|
||||
@@ -1,193 +0,0 @@
|
||||
{
|
||||
"name": "Summarize Slack Conversation",
|
||||
"nodes": [
|
||||
{
|
||||
"parameters": {
|
||||
"authentication": "oAuth2",
|
||||
"resource": "channel",
|
||||
"operation": "history",
|
||||
"channelId": {
|
||||
"__rl": true,
|
||||
"value": "C083QQBQTAM",
|
||||
"mode": "list",
|
||||
"cachedResultName": "flowise-n8n"
|
||||
},
|
||||
"limit": 10,
|
||||
"filters": {}
|
||||
},
|
||||
"id": "d572a7b3-311e-4864-a604-11d679ecc855",
|
||||
"name": "Slack",
|
||||
"type": "n8n-nodes-base.slack",
|
||||
"typeVersion": 2.2,
|
||||
"position": [
|
||||
1040,
|
||||
360
|
||||
],
|
||||
"credentials": {
|
||||
"slackOAuth2Api": {
|
||||
"id": "XtpcBxLD5axuhMm8",
|
||||
"name": "Slack account"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"parameters": {
|
||||
"options": {}
|
||||
},
|
||||
"id": "c30ce367-cb19-4ef9-b8e7-0e03982960f6",
|
||||
"name": "Respond to Webhook",
|
||||
"type": "n8n-nodes-base.respondToWebhook",
|
||||
"typeVersion": 1.1,
|
||||
"position": [
|
||||
1840,
|
||||
360
|
||||
]
|
||||
},
|
||||
{
|
||||
"parameters": {
|
||||
"fieldsToAggregate": {
|
||||
"fieldToAggregate": [
|
||||
{
|
||||
"fieldToAggregate": "text"
|
||||
}
|
||||
]
|
||||
},
|
||||
"options": {}
|
||||
},
|
||||
"id": "fdb91643-0f0f-4ad5-b333-2294029f0ae7",
|
||||
"name": "Aggregate",
|
||||
"type": "n8n-nodes-base.aggregate",
|
||||
"typeVersion": 1,
|
||||
"position": [
|
||||
1260,
|
||||
360
|
||||
]
|
||||
},
|
||||
{
|
||||
"parameters": {
|
||||
"model": "gpt-4o-mini",
|
||||
"options": {}
|
||||
},
|
||||
"id": "bf2c887e-bb34-44fc-89ea-fad409db0317",
|
||||
"name": "OpenAI Chat Model",
|
||||
"type": "@n8n/n8n-nodes-langchain.lmChatOpenAi",
|
||||
"typeVersion": 1,
|
||||
"position": [
|
||||
1480,
|
||||
580
|
||||
],
|
||||
"credentials": {
|
||||
"openAiApi": {
|
||||
"id": "JJjD91oisPv9cs01",
|
||||
"name": "OpenAi account"
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"parameters": {
|
||||
"promptType": "define",
|
||||
"text": "=Summarize the following conversation, outputting just the summary and nothing else - no preabmle or explanation. \n\nKeep in mind the latest message is the first in the list: \n\n{{ $json.text }}"
|
||||
},
|
||||
"id": "90984360-3628-494d-a077-08ec69fd88e5",
|
||||
"name": "Basic LLM Chain",
|
||||
"type": "@n8n/n8n-nodes-langchain.chainLlm",
|
||||
"typeVersion": 1.4,
|
||||
"position": [
|
||||
1480,
|
||||
360
|
||||
]
|
||||
},
|
||||
{
|
||||
"parameters": {
|
||||
"path": "66a5755c-5030-4a6b-9b5e-2e09a21456d6",
|
||||
"authentication": "headerAuth",
|
||||
"responseMode": "responseNode",
|
||||
"options": {}
|
||||
},
|
||||
"id": "930860ba-d339-4668-a13c-4e2277308161",
|
||||
"name": "Webhook",
|
||||
"type": "n8n-nodes-base.webhook",
|
||||
"typeVersion": 2,
|
||||
"position": [
|
||||
820,
|
||||
360
|
||||
],
|
||||
"webhookId": "66a5755c-5030-4a6b-9b5e-2e09a21456d6",
|
||||
"credentials": {
|
||||
"httpHeaderAuth": {
|
||||
"id": "PGr0hc0kn43Di1sz",
|
||||
"name": "testauth"
|
||||
}
|
||||
}
|
||||
}
|
||||
],
|
||||
"pinData": {},
|
||||
"connections": {
|
||||
"Slack": {
|
||||
"main": [
|
||||
[
|
||||
{
|
||||
"node": "Aggregate",
|
||||
"type": "main",
|
||||
"index": 0
|
||||
}
|
||||
]
|
||||
]
|
||||
},
|
||||
"Aggregate": {
|
||||
"main": [
|
||||
[
|
||||
{
|
||||
"node": "Basic LLM Chain",
|
||||
"type": "main",
|
||||
"index": 0
|
||||
}
|
||||
]
|
||||
]
|
||||
},
|
||||
"OpenAI Chat Model": {
|
||||
"ai_languageModel": [
|
||||
[
|
||||
{
|
||||
"node": "Basic LLM Chain",
|
||||
"type": "ai_languageModel",
|
||||
"index": 0
|
||||
}
|
||||
]
|
||||
]
|
||||
},
|
||||
"Basic LLM Chain": {
|
||||
"main": [
|
||||
[
|
||||
{
|
||||
"node": "Respond to Webhook",
|
||||
"type": "main",
|
||||
"index": 0
|
||||
}
|
||||
]
|
||||
]
|
||||
},
|
||||
"Webhook": {
|
||||
"main": [
|
||||
[
|
||||
{
|
||||
"node": "Slack",
|
||||
"type": "main",
|
||||
"index": 0
|
||||
}
|
||||
]
|
||||
]
|
||||
}
|
||||
},
|
||||
"active": true,
|
||||
"settings": {
|
||||
"executionOrder": "v1"
|
||||
},
|
||||
"versionId": "039f8fd7-6a15-4070-81ae-1f2851183c86",
|
||||
"meta": {
|
||||
"templateCredsSetupCompleted": true,
|
||||
"instanceId": "620f0d7e3114cb344761d7d45a21ef2a32096f91d8696e7057756042e1999e2c"
|
||||
},
|
||||
"id": "vchuPxsgQU32o0v1",
|
||||
"tags": []
|
||||
}
|
||||
@@ -412,5 +412,5 @@ echo "3. Configure services as needed (e.g., first-run setup for n8n)."
|
||||
echo
|
||||
echo "======================================================================"
|
||||
echo
|
||||
log_info "Thank you for using this installer setup!"
|
||||
log_info "Thank you for using this repository!"
|
||||
echo
|
||||
|
||||
Reference in New Issue
Block a user