Dokumentacja — AI Workflow Builder
Szybki start
- Zaloguj się na tools.fotoferia.pl
- Kliknij Otwórz aplikację lub przejdź do
/app/ - + Nowy workflow — dostaniesz szablon Start → Prompt → LLM → Output
- Kliknij węzeł → edytuj właściwości w panelu po prawej
- Wpisz tekst wejściowy → ▶ Uruchom
Typy węzłów
| Węzeł | Opis |
|---|---|
| start | Wejście użytkownika. Klucz zmiennej np. user_text |
| prompt | Szablon z {{zmienna}} — podstawia dane z poprzednich węzłów |
| llm | Wywołanie Claude lub OpenAI. Ustaw provider i model |
| transform | Obróbka tekstu: trim, uppercase, json_parse |
| condition | if/else — wyjścia true i false |
| http | Żądanie GET/POST do dowolnego URL |
| Wysyłka e-mail (SMTP z .env) | |
| slack | Wiadomość na kanał Slack (incoming webhook) |
| sql | Zapytanie SELECT (readonly) do SQLite |
| file | Odczyt pliku tekstowego z serwera |
| loop | Pętla — wyjścia continue i done, max iteracji |
| rag | Wyszukiwanie fragmentów w dokumencie (upload w /app/) |
| google_sheets | Odczyt (API lub public CSV) i dopisywanie wierszy |
| discord | Wiadomość na kanał Discord (incoming webhook) |
| ftp | FTP/SFTP: list, download, upload |
| telegram | Wiadomość przez bota Telegram |
| github | Komentarz lub issue w repozytorium |
| airtable | Lista lub tworzenie rekordów Airtable |
| notion | Dopisanie bloku lub zapytanie bazy Notion |
| rss | Pobranie wpisów z kanału RSS |
| teams | Wiadomość MS Teams (incoming webhook) |
| delay | Opóźnienie przed kolejnym węzłem (max 60 s) |
| output | Wynik końcowy workflow |
Integracje — zmienne środowiskowe
| Zmienna | Węzeł |
|---|---|
GOOGLE_SERVICE_ACCOUNT_JSON |
google_sheets (zapis + odczyt API) |
TELEGRAM_BOT_TOKEN |
telegram |
GITHUB_TOKEN |
github |
AIRTABLE_API_KEY |
airtable |
NOTION_API_KEY |
notion |
FTP_USER / FTP_PASS |
ftp (domyślne dane logowania) |
Webhook URL (Discord, Teams, Slack) ustawiasz w panelu właściwości węzła.
Zmienne w promptach
Użyj {{nazwa}} w szablonie promptu. Zmienne pochodzą z:
- węzła Start (np.
user_text) - outputu poprzedniego węzła w łańcuchu
Przykład szablonu:
Napisz 5 tagów SEO po polsku dla: {{user_text}}
Warunki (if/else)
- Dodaj węzeł condition
- Połącz wejście z poprzednim węzłem
- Z wyjścia true (góra) i false (dół) poprowadź osobne gałęzie
- Operatory:
not_empty,empty,contains,equals,regex,gt,lt
Webhook (uruchomienie z zewnątrz)
W edytorze → panel Webhook → skopiuj URL.
Tryb async (domyślny) — workflow trafia do kolejki:
curl -X POST "https://tools.fotoferia.pl/api/hooks/WORKFLOW_ID/SECRET" \
-u LOGIN:HASLO \
-H "Content-Type: application/json" \
-d '{"user_text": "tekst z zewnątrz"}'
Tryb sync — natychmiastowy wynik workflow w odpowiedzi (?sync=1 lub nagłówek X-Webhook-Sync: 1):
curl -X POST "https://tools.fotoferia.pl/api/hooks/WORKFLOW_ID/SECRET?sync=1" \
-u LOGIN:HASLO \
-H "Content-Type: application/json" \
-d '{"user_text": "tekst"}'
Podpis HMAC (opcjonalnie): nagłówek X-Webhook-Signature: sha256=<hex> — HMAC-SHA256 body z webhook secret.
Harmonogram (cron)
W panelu Harmonogram wpisz wyrażenie cron:
| Wyrażenie | Znaczenie |
|---|---|
0 8 * * * |
Codziennie o 8:00 |
*/30 * * * * |
Co 30 minut |
0 9 * * 1 |
Poniedziałek 9:00 |
Uruchomienie w tle
Zaznacz W tle przed kliknięciem Uruchom. Workflow idzie do kolejki — przydatne przy długich łańcuchach LLM.
Import / Export
- Eksport — pobierz workflow jako JSON (backup, kopiowanie)
- Import — wczytaj JSON z listy workflow
Skróty w edytorze
| Skrót | Akcja |
|---|---|
| Ctrl+Z | Cofnij |
| Ctrl+Y | Ponów |
| Ctrl+S | Zapisz |
Modele LLM
| Provider | Model | Zastosowanie |
|---|---|---|
| anthropic | claude-haiku-4-5 | Szybko, tanio |
| anthropic | claude-sonnet-4-5 | Lepsza jakość |
| openai | gpt-4o-mini | Tanio, Vision-ready |
Streaming LLM
Podczas uruchomienia (bez „W tle”) tokeny z węzła LLM pojawiają się na żywo w panelu Streaming LLM po prawej stronie edytora.
Szablony workflow
Na liście /app/ → sekcja Szablony workflow → kliknij Użyj szablonu.
Wersjonowanie
Każdy Zapisz tworzy wersję w historii. W edytorze → panel Wersje → Przywróć.
RAG (dokumenty)
/app/→ sekcja Dokumenty RAG → wklej tekst → Dodaj dokument- Skopiuj ID dokumentu
- W edytorze: węzeł rag → wklej
documentId - Połącz: Start → RAG → Prompt (
Na podstawie: {{context}}) → LLM → Output
Pętle (loop)
- Dodaj węzeł loop (max iteracji np. 3)
- Wyjście continue → ciało pętli → z powrotem do loop
- Wyjście done → dalsza część workflow
Limity tokenów (billing)
Panel /app/ pokazuje zużycie tokenów. Domyślny limit: 500 000/mies. (konfiguracja w .env: DEFAULT_TOKEN_LIMIT).
Pomoc
API health: GET /api/health
Logi: pm2 logs ai-workflow-api