Przejdź do treści
Intum
Aktualizacja: Wyświetleń: 2630 3 min czytania

Prompty AI - API

Autoryzacja: Authorization: Bearer TOKEN
Content-Type: application/json; charset=utf-8

Endpoints

Metoda Ścieżka Opis
GET /noe/prompts.json Lista promptów z bazy (bez systemowych z plików)
GET /noe/prompts/:id.json Szczegóły prompta (id to UUID)
POST /noe/prompts.json Tworzenie prompta
PATCH /noe/prompts/:id.json Aktualizacja prompta
DELETE /noe/prompts/:id.json Usunięcie prompta (wraca wersja systemowa, jeśli istnieje)
GET /noe/prompts/:id.md Surowa treść, bez renderowania Liquid
GET /noe/prompt/:code.md Treść po kaskadzie, z podstawionymi {{api_token}} i {{host}}
GET /noe/prompts/system/:code.md Treść systemowa z pliku

GET /noe/prompts.json zwraca gołą tablicę, nie obiekt z kluczem prompts.

Pola

Pole Typ Wymagane Opis
name string tak Nazwa prompta
code string tak Kod, unikalny w ramach (konto, scope, scope_id)
kind string tak chat albo agent
content text tak Treść prompta (Markdown + Liquid)
scope string nie user, team, department, account (domyślnie account)
scope_id integer nie ID użytkownika, zespołu lub departamentu
ai_placeholder string nie Podpowiedź w polu modala AI, zapisywana w fields.ai_placeholder

Pole token nie jest zwracane przez API.

Kaskadowe wyszukiwanie

Endpoint /noe/prompt/:code.md szuka prompta w kolejności:

  1. Użytkownik (scope: user, scope_id = id użytkownika)
  2. Zespół (scope: team)
  3. Departament (scope: department)
  4. Konto (scope: account)
  5. Plik systemowy (app/src/noe/prompts/:code.agent.md lub :code.md)

Jeśli istnieje dodatkowo prompt o kodzie :code_extra, jego treść zostaje dopisana na końcu jako “Dodatkowe instrukcje”. To sposób na uzupełnienie prompta systemowego bez kopiowania go w całości.

POST - tworzenie prompta

POST /noe/prompts.json

{
  "prompt": {
    "name": "Redaktor treści",
    "code": "content_editor",
    "kind": "agent",
    "scope": "account",
    "content": "Jesteś doświadczonym redaktorem. Poprawiaj styl i gramatykę."
  }
}

Odpowiedź: 201 Created z pełnym obiektem prompta.

PATCH - zmiana samej treści

{ "prompt": { "content": "Nowa treść..." } }

Pozostałych pól nie trzeba wysyłać. Odpowiedź: 200 OK.

Błąd 422 z {"code": ["zostało już zajęte"]} oznacza, że prompt o tym kodzie już istnieje w tym samym zakresie. Zamiast tworzyć nowy, pobierz istniejący przez GET /noe/prompts.json?code=... i zrób PATCH.

Wyszukiwanie

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 kolejność)

Zmienne Liquid

  • {{api_token}} - token API bieżącego użytkownika
  • {{host}} - adres konta, np. https://firma.intum.com
  • {{date}} - data z parametru date, domyślnie dzisiejsza
  • {{ "code" \| prompt_url }} - link do innego prompta
  • zmienne kontekstowe przekazywane przez przycisk AI, np. {{desk_id}}, {{prompt_id}}

Warunek na obecność zmiennej: {% if prompt_id != blank %}...{% else %}...{% endif %}

Pierwsza linia pliku systemowego może zawierać nagłówek NAME: Nazwa - staje się nazwą prompta i nie trafia do treści wysyłanej do modelu.

Zasady

  • Nie wstawiaj prawdziwego tokena do content - zawsze {{api_token}}, bo treść prompta widzą inni użytkownicy konta
  • Przy edycji zachowaj {{api_token}} i {{host}} - bez nich prompt agentowy traci dostęp do API
  • Przed DELETE sprawdź scope, scope_id i created_by_id, żeby nie skasować cudzego prompta