Prompty to szablony instrukcji dla AI: treść AI buttonów, systemowe prompty agentów i chatu.
Każdy prompt ma code (identyfikator, np. workinfo_new) i content (treść z placeholderami Liquid).
Prompt zapisany w bazie nadpisuje plik systemowy o tym samym code - dzięki temu użytkownik
może dostosować standardowy prompt pod siebie, nie ruszając kodu aplikacji.
Autoryzacja: Authorization: Bearer TOKEN
Content-Type: application/json; charset=utf-8
API Endpoints
| Metoda | Ścieżka | Opis |
|---|---|---|
| GET | /noe/prompts.json |
Lista promptów z bazy (bez systemowych z plików) |
| GET | /noe/prompts/:id.json |
Pojedynczy prompt (id to UUID) |
| POST | /noe/prompts.json |
Utworzenie prompta |
| PATCH | /noe/prompts/:id.json |
Aktualizacja prompta |
| DELETE | /noe/prompts/:id.json |
Usunięcie prompta (wraca systemowy z pliku, jeśli istnieje) |
| GET | /noe/prompts/:id.md |
Surowa treść prompta (bez renderowania Liquid) |
| GET | /noe/prompt/:code.md |
Treść po kaskadzie, z podstawionymi TOKEN i https://app.intum.pl
|
| GET | /noe/prompts/system/:code.md |
Treść systemowa z pliku, z pominięciem bazy |
GET /noe/prompts.json zwraca gołą tablicę, nie obiekt z kluczem prompts.
Pola prompta
| Pole | Typ | Wymagane | Opis |
|---|---|---|---|
name |
string | tak | Nazwa widoczna na liście i w nagłówku modala AI |
code |
string | tak | Identyfikator, np. workinfo_new. Unikalny w ramach (konto, scope, scope_id) |
content |
text | tak | Treść prompta, Liquid (zob. niżej) |
kind |
string | tak |
"chat" (rozmowa) albo "agent" (zadanie wykonawcze). Domyślnie "chat"
|
scope |
string | nie |
"user", "team", "department", "account". Domyślnie "account"
|
scope_id |
bigint | nie | ID użytkownika / zespołu / działu. Dla scope: "account" zostaw puste |
ai_placeholder |
string | nie | Podpowiedź w polu tekstowym modala AI. Ląduje w fields.ai_placeholder
|
Zasady:
- pole
tokennie jest zwracane przez API (nadawane automatycznie przy tworzeniu) -
scope_iduzupełnia się samo dlascope: "user"(bieżący użytkownik), gdy go nie podasz - żeby przesłonić prompt systemowy, utwórz rekord z tym samym
code, jaki ma plik wapp/src/noe/prompts/- kaskada wybierze wersję z bazy
Kaskada rozwiązywania prompta
GET /noe/prompt/:code.md szuka treści w kolejności:
-
scope: "user"+scope_id= bieżący użytkownik -
scope: "team"+ zespół użytkownika -
scope: "department"+ dział użytkownika scope: "account"- plik
app/src/noe/prompts/:code.agent.mdalbo:code.md
Pierwszy znaleziony wygrywa. Dodatkowo, jeśli istnieje prompt o kodzie :code_extra,
jego treść zostaje dopisana na końcu jako “Dodatkowe instrukcje” - to sposób na
uzupełnienie systemowego prompta bez kopiowania go w całości.
Liquid w treści
| Zmienna | Skąd | Opis |
|---|---|---|
TOKEN |
automatycznie | Token API bieżącego użytkownika |
https://app.intum.pl |
automatycznie | URL konta, np. https://firma.intum.com
|
{{date}} |
automatycznie | Data z parametru date, domyślnie dziś |
| dowolna inna |
env w AI buttonie |
Np. {{prompt_id}}, {{client_id}}
|
Filtr prompt_url buduje link do innego prompta:
Instrukcje API: https://app.intum.pl/noe/prompt/workinfo_api.md
Filtr api_block wstawia komplet nagłówków dla agenta - zamiast wypisywać je ręcznie
w każdym prompcie, wystarczy jedna linia na końcu treści:
Instrukcje API: https://app.intum.pl/noe/prompt/workinfo_api.md
Zasady API: https://app.intum.pl/noe/prompt/common_api.md
Host: https://app.intum.pl
Authorization: Bearer TOKEN
rozwija się do:
Instrukcje API: https://firma.intum.com/noe/prompt/workinfo_api.md
Zasady API: https://firma.intum.com/noe/prompt/common_api.md
Host: https://firma.intum.com
Authorization: Bearer <token uzytkownika>
Kilka instrukcji naraz podajesz po przecinku
(Instrukcje API: https://app.intum.pl/noe/prompt/kb_knowledge_base_api.md
Instrukcje API: https://app.intum.pl/noe/prompt/kb_entry_api.md
Zasady API: https://app.intum.pl/noe/prompt/common_api.md
Host: https://app.intum.pl
Authorization: Bearer TOKEN), a gdy prompt nie ma osobnej
instrukcji API - Zasady API: https://app.intum.pl/noe/prompt/common_api.md
Host: https://app.intum.pl
Authorization: Bearer TOKEN (zostana same zasady, host i token).
Warunek na obecność zmiennej (kontekst listy vs pojedynczego rekordu):
{% if prompt_id != blank %}Pracuję nad promptem {{prompt_id}}.
{% else %}Pracuję nad listą promptów.
{% endif %}
Plik systemowy może zaczynać się blokiem --- z name: Nazwa (i opcjonalnie placeholder:),
który staje się nazwą prompta i nie trafia do treści wysyłanej do modelu.
Format requestu
POST - własna wersja systemowego prompta
POST /noe/prompts.json
Authorization: Bearer TOKEN
Content-Type: application/json; charset=utf-8
{
"prompt": {
"name": "Wypełnij timesheet",
"code": "workinfo_new",
"kind": "agent",
"scope": "user",
"content": "Wypełnij mój timesheet za {{date}}.\n\nAuthorization: Bearer TOKEN\nHost: https://app.intum.pl"
}
}
Odpowiedź: 201 Created z pełnym obiektem prompta (id to UUID).
PATCH - zmiana samej treści
{ "prompt": { "content": "Nowa treść..." } }
Odpowiedź: 200 OK. Nie musisz wysyłać pozostałych pól.
Błąd walidacji (422 Unprocessable Content)
{ "code": ["zostało już zajęte"] }
Najczęstsza przyczyna: prompt o tym code już istnieje w tym samym scope/scope_id.
Zamiast tworzyć nowy, pobierz istniejący (GET /noe/prompts.json?code=workinfo_new) i zrób PATCH.
Wyszukiwanie i filtrowanie
| Parametr | Opis |
|---|---|
q |
Szuka w name i code
|
code, kind, scope
|
Filtr po dokładnej wartości |
order_by |
id, created_at, updated_at, name, code (sufiks _desc odwraca) |
GET /noe/prompts.json?scope=user&kind=agent&order_by=updated_at_desc
Zasady pracy
-
Nie usuwaj cudzych promptów - przed DELETE sprawdź
scope/scope_idicreated_by_id -
Zachowaj placeholdery przy edycji treści: wycięcie
TOKENalbohttps://app.intum.plz prompta agentowego zepsuje AI button (agent straci dostęp do API) -
Nie wstawiaj prawdziwego tokena do
content- zawszeTOKEN, bo treść prompta jest widoczna dla innych użytkowników konta -
Zmieniasz systemowy prompt? Nie edytuj pliku - utwórz rekord z tym samym
codeiscope: "user", żeby zmiana dotyczyła tylko Ciebie - Treść pisz w Markdown, zwięźle - to instrukcja dla modelu, nie dokumentacja