Dokumentacja — AI Workflow Builder

Szybki start

  1. Zaloguj się na tools.fotoferia.pl
  2. Kliknij Otwórz aplikację lub przejdź do /app/
  3. + Nowy workflow — dostaniesz szablon Start → Prompt → LLM → Output
  4. Kliknij węzeł → edytuj właściwości w panelu po prawej
  5. 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
email 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:

Przykład szablonu:

Napisz 5 tagów SEO po polsku dla: {{user_text}}

Warunki (if/else)

  1. Dodaj węzeł condition
  2. Połącz wejście z poprzednim węzłem
  3. Z wyjścia true (góra) i false (dół) poprowadź osobne gałęzie
  4. 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


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 WersjePrzywróć.


RAG (dokumenty)

  1. /app/ → sekcja Dokumenty RAG → wklej tekst → Dodaj dokument
  2. Skopiuj ID dokumentu
  3. W edytorze: węzeł rag → wklej documentId
  4. Połącz: Start → RAG → Prompt (Na podstawie: {{context}}) → LLM → Output

Pętle (loop)

  1. Dodaj węzeł loop (max iteracji np. 3)
  2. Wyjście continue → ciało pętli → z powrotem do loop
  3. 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