Przejdź do głównej treści
Gdy masz już przestrzeń roboczą i klucz API (zobacz Wprowadzenie), prompty to następny krok. Ta strona jest kanoniczną referencją rejestru promptów OrcaRouter — czym jest, jak go używać i jak komponuje się z resztą bramy.

1. Czym jest rejestr promptów

Rejestr promptów to biblioteka wielokrotnego użytku wiadomości systemowych w zakresie przestrzeni roboczej. Zapisujesz prompt raz, wiążesz z nim dowolny klucz API (lub wysyłasz prompt_ref na żądanie), a brama wstrzykuje ten prompt jako wiadomość systemową przed przesłaniem żądania do modelu nadrzędnego. Edycja promptu aktualizuje każdy klucz z nim powiązany już przy następnym wywołaniu. Bez ponownego wdrożenia. Bez zmian w kodzie. Bez aktualizacji SDK. Powiązanie żyje w bramie, nie w aplikacji. To ta sama idea, którą zapoczątkowali Langfuse i LangSmith, ale z jedną różnicą: OrcaRouter jest warstwą dostarczania. Kod aplikacji woła /v1/chat/completions dokładnie jak wcześniej; brama rozwiązuje i wstrzykuje prompt. Nie ma nic do zainstalowania w aplikacji. Prompty są w zakresie przestrzeni roboczej — każdy członek widzi prompty swojej przestrzeni; nic nie przekracza granic najemcy.

2. Szybki start — powiąż swój pierwszy prompt w 5 krokach

1

Utwórz prompt

W konsoli przejdź do /console/prompts i kliknij New prompt. Nazwij go support-agent. Wklej wiadomość systemową:
“Jesteś zwięzłym agentem wsparcia dla Acme. Odpowiadaj w 2 zdaniach lub mniej.”
Zapisz — to tworzy wersję 1.
2

Powiąż klucz

Przejdź do /console/token, utwórz lub edytuj klucz API, wybierz support-agent z rozwijanej listy Prompt i production z listy Label.
3

Wyślij żądanie

Używając tego klucza, wywołaj OrcaRouter dokładnie jak wcześniej:
curl https://api.orcarouter.ai/v1/chat/completions \
  -H "Authorization: Bearer sk-orca-..." \
  -H "Content-Type: application/json" \
  -d '{
    "model": "openai/gpt-4o-mini",
    "messages": [
      {"role": "user", "content": "What are your business hours?"}
    ]
  }'
Brama dokleja zapisaną wiadomość systemową przed przesłaniem. Nagłówek odpowiedzi X-Orca-Prompt: support-agent@production:v1 potwierdza, który prompt został wstrzyknięty.
4

Edytuj prompt

Wróć do /console/prompts, edytuj support-agent — zmień wiadomość systemową. Zapisz — wersja 2 jest tworzona automatycznie; production wciąż wskazuje na v1.
5

Promuj

Kliknij Labels w wierszu promptu, przenieś production na v2, potwierdź. Już następne żądanie przez twój klucz dostanie wiadomość systemową v2. Bez zmian w aplikacji.
To główna wartość.

3. Pojęcia: prompty, wersje, etykiety

PojęcieDefinicjaZmienność
PromptNazwana pozycja w zakresie przestrzeni roboczej. Identyfikator: name (regex ^[a-zA-Z0-9._-]{1,128}$).Soft-delete (kosz 30 dni + czyszczenie).
WersjaNiezmienna migawka zawartości promptu. Tworzona automatycznie przy każdym zapisie. Identyfikator: monotoniczny int.Niezmienna — nigdy nie edytowana, nigdy nie ponownie używana.
EtykietaPrzesuwalny wskaźnik na wersję (np. production → v7).Przesuwana atomowo przez Promote; log audytu rejestruje każdy ruch.

Zarezerwowane etykiety

  • production jest automatycznie przypinana do v1 przy pierwszej wersji każdego nowego promptu. Jej przeniesienie to przełączenie ruchu produkcyjnego — tylko Owner w RBAC.
  • latest jest automatycznie utrzymywana przez bramę i zawsze wskazuje na najnowszą wersję. Nie możesz przesunąć latest ręcznie.
Możesz później dodać niestandardowe etykiety (np. staging, canary, eu-prod) przez dialog Labels i wiązać z nimi klucze. Dopóki etykieta nie jest przypięta do wersji, klucz powiązany z name@<ta-etykieta> fail-otwarcie bez wstrzyknięcia.

Dlaczego taka forma

Podział między niezmienne wersje a przesuwalne etykiety to prymityw deploy-bez-kodu. Kod aplikacji odnosi się do etykiety (pośrednio, przez powiązanie klucza, lub jawnie przez prompt_ref). Promowanie przesuwa etykietę — aplikacja widzi nową zawartość przy następnym wywołaniu bez żadnej zmiany kodu. Wycofanie to po prostu promowanie starszej wersji na etykietę.

4. Wzorce produkcyjne: promowanie, wycofanie, etapowe wydanie

Promowanie

Otwórz Labels w wierszu promptu, wybierz docelową wersję, kliknij Promote. Przesunięcie etykiety jest atomowe i audytowane (log audytu pokazuje, kto przeniósł którą etykietę z której wersji do której i kiedy). Każdy klucz powiązany z name@<label> pobiera nową wersję przy następnym żądaniu.
Tylko Owner. Promowanie jest zmianą ruchu produkcyjnego i jest ograniczone do Ownerów przestrzeni roboczej (POST /api/prompt/:id/label). Developerzy i Viewerzy widzą listę etykiet i historię audytu, ale nie widzą przycisku Promote; dialog pokazuje wskazówkę inline “ask an Owner”, aby ograniczenie było widoczne, a nie ciche.

Wycofanie

Restore na starszej wersji w panelu History. Restore kopiuje zawartość tej wersji do przodu jako nową wersję (historia nigdy nie jest mutowana) i przesuwa na nią latest. Aby ruch faktycznie się wycofał, Promote odpowiednią etykietę na przywróconą wersję.

Wydanie etapowe

Powiąż klucze canary z name@staging, klucze prod z name@production. Promuj staging na nową wersję, obserwuj w Insights, następnie promuj production, gdy jesteś zadowolony. Bez edycji kluczy, bez wdrożenia, bez aktualizacji SDK.

Podział ruchu A/B

Dialog Label ma przełącznik Split traffic. Włącz go, aby skierować pojedynczą etykietę na wiele wersji z dystrybucją ważoną (np. v7: 60%, v8: 40%). Bucketing jest deterministyczny per (workspace, token, request-id), więc pojedyncza konwersacja pozostaje w tym samym buckecie między ponowieniami.

5. Szablonowanie: podstawienie {{var}}

Zawartość promptu obsługuje placeholdery {{var}} w stylu Mustache. Wartości od wywołującego pochodzą z prompt_ref.variables (zobacz §6). Reguły:
  • Podstawienie jednoprzebiegowe. Wartości zmiennych są emitowane jako tekst literalny. NIE są ponownie ewaluowane jako szablon — to zapobiega prompt injection, gdy wartość dostarczona przez wywołującego próbuje wstrzyknąć kolejne dyrektywy {{...}}.
  • Nieznane placeholdery pozostają dosłownie. Jeśli placeholder {{foo}} nie ma pasującej zmiennej, literalne {{foo}} jest emitowane (a ostrzeżenie logowane). Żądania nigdy nie zawodzą z powodu brakującej zmiennej.
  • Dostęp przez kropkę. {{user.name}} przechodzi zagnieżdżone obiekty, gdy wywołujący przekazuje zagnieżdżoną mapę.
  • Sekcje. {{#flag}}...{{/flag}} pokazuje blok tylko gdy flag jest truthy. Odwrócone sekcje ({{^flag}}...) pokazują blok, gdy flag jest brakujący/falsy.
  • Limit rozmiaru wyrenderowanego tekstu: 256 KiB. Jeśli końcowy wyrenderowany tekst przekracza ten próg, cała iniekcja jest pomijana (odpowiedź nie zawiera nagłówka X-Orca-Prompt) a żądanie jest przekazywane bez zmian — ochrona przed wzmocnieniem przez eksplozję zmiennych.
Zewnętrzni dostawcy respektują swoją natywną składnię:
  • Prompty Langfuse używają tej samej składni Mustache {{var}}.
  • Prompty LangSmith deklarują template_format: f-string | mustache w manifeście. Brama respektuje tę deklarację.

6. Nadpisanie na żądanie: prompt_ref

Nadpisz lub wybierz prompt na żądanie bez zmiany powiązania klucza. Dodaj pole prompt_ref najwyższego poziomu do ciała żądania:
{
  "model": "openai/gpt-4o-mini",
  "messages": [
    {"role": "user", "content": "Who is on call tonight?"}
  ],
  "prompt_ref": {
    "name": "support-agent",
    "label": "staging",
    "variables": {
      "product_name": "Orca"
    }
  }
}
Pierwszeństwo (najwyższe wygrywa): prompt_ref żądania > powiązanie klucza (natywne PromptId/PromptLabel lub PromptProviderId) > kanałowy SystemPrompt > brak. prompt_ref jest konsumowany przez bramę i usuwany przed przekazaniem w górę — restrykcyjni dostawcy nigdy nie widzą nieznanego pola. Kształt:
type PromptRef = {
  provider?: string;   // omit for native; or the provider's configured name for external
  name: string;        // required
  label?: string;      // mutually exclusive with `version`
  version?: string;    // pin to a specific version
  variables?: { [key: string]: string };  // mustache substitution
};
Przypadki użycia: testowanie A/B różnych wersji promptu dla tego samego klucza; canary rollout ze strony wywołującego; interpolacja zmiennych na żądanie.

7. Prompty w kształcie czatu (system + few-shot)

Większość promptów to pojedynczy łańcuch system. Ale czasami chcesz, aby brama wstrzyknęła bogatszy szablon — wiadomość systemową plus sekwencję few-shot tur user/assistant. Rejestr wspiera to jako kind: 'chat'. Modal Create prompt w konsoli udostępnia przełącznik Text / Chat. Gdy wybierzesz Chat, edytor zawartości staje się listą wierszy {role, content} (system, user, assistant) — dodaj tyle, ile potrzebujesz. Przy zapisie wiersze są persystowane jako messages_json. Po utworzeniu kind jest niezmienny. Zachowanie przy wstrzyknięciu:
  • Brak wiadomości systemowej w żądaniu ⇒ brama dokleja wiadomość systemową szablonu, a tury few-shot szablonu pojawiają się przed wiadomościami wywołującego.
  • Wiadomość systemowa w żądaniu ⇒ wstrzyknięcie zgodne z domyślnym zachowaniem adaptera formatu. Dla żądań w kształcie OpenAI wiadomość systemowa szablonu jest doklejana na początek; dla żądań w kształcie Claude system szablonu trafia do natywnego parametru system.
Dla zewnętrznych chat-promptów (Langfuse, LangSmith) brama spłaszcza szablon do tego samego kształtu.

8. Relacja z resztą bramy

PowierzchniaJak komponuje się z Prompts?
ModelsPrompty są agnostyczne wobec modelu. Ten sam prompt jedzie po GPT-5, Claude, Gemini. Routing wybiera model nadrzędny na podstawie model żądania i grupy klucza — Prompts nigdy tego nie nadpisuje.
RoutingRouting biegnie pierwszy; resolver promptów później. Więc rozwiązany prompt jedzie tym kanałem, który wybrał router, w tym przez łańcuch fallback.
GuardrailsGuardrails to niezależna bramka inspekcjonująca i redagująca treść. Prompty wstrzykują wiadomość systemową; nie omijają polityki. Żądanie może nieść oba — guardrails zawsze biegną.
API KeysKlucz wiąże się z promptem na etykiecie (np. support-agent@production). Powiązanie żyje na kluczu w bramie, więc promowanie nowej wersji przesuwa wszystkie klucze na tej etykiecie naraz.
InsightsKażde żądanie stempluje prompt_id, prompt_version, prompt_label na wierszu logu. Insights tnie po prompcie — użycie, wskaźnik błędów, latencja, koszt.
Router pozostaje jedynym autorytetem modelu. Nawet zewnętrzne prompty deklarujące config (Langfuse config.model, LangSmith model_config) — brama ignoruje te pola. Prompty wstrzykują tylko tekst; wybór modelu to zadanie routera.

9. Źródła zewnętrzne: Langfuse, LangSmith, Generic HTTP

Federacja: podłącz zewnętrzne źródło promptów raz, potem wiąż klucze lub wysyłaj prompt_ref przeciwko nazwom tam hostowanym. Natywne i zewnętrzne prompty wiążą się i serwują identycznie — różni się tylko backend resolvera. Wspierane źródła:
  • LangfuseGET {base}/api/public/v2/prompts/{name}?label=..., Basic auth z pary public:secret. Prompty tekstowe i chatowe.
  • LangSmithGET {base}/commits/{owner}/{name}/{tag|hash|latest}, nagłówek x-api-key. Brama parsuje zserializowany manifest, aby wyciągnąć messages/text i deklarację template_format. Osadzone pola model_config / model_provider są usuwane (defense in depth: rejestr serwuje tylko tekst).
  • Generic HTTP — konfigurowany przez operatora konektor dla dowolnego rejestru promptów, który wystawia jedno wywołanie HTTP na pobranie. Zobacz poniżej konfigurowalne pola.
Podłącz źródło w Integrations → Prompt sources (konfiguracja tylko-Owner; sekrety przechowywane zaszyfrowane, maskowane przy odczycie). Przepływ Test & Save dry-rozwiązuje znany prompt przed zapisem i odrzuca URL-e blokowane SSRF (loopback, prywatne, link-local, zakresy metadata).

Pola konektora Generic HTTP

Źródło Generic HTTP to adapter “opisz jedno wywołanie HTTP i jeden kształt odpowiedzi”. Używany do self-hosted magazynów promptów ORAZ dla platform stron trzecich, które nie potrzebują własnej integracji backendu (PromptLayer, proste niestandardowe API itp.). Pola są celowo małe — przepływy wieloetapowe lub protokoły specyficzne dla dostawcy są poza zakresem.
PoleDomyślnieCo robi
URL templaterequiredPełny URL żądania z placeholderami {name} / {label} / {version}. Placeholdery w ścieżce używają PathEscape; placeholdery w query string używają QueryEscape, więc &/= w nazwie promptu nie mogą wstrzyknąć dodatkowych parametrów query.
HTTP methodGETGET lub POST. Wybierz POST, gdy platforma wymaga ciała żądania.
Auth header nameAuthorizationNagłówek HTTP, w którym wysyłany jest sekret. Ustaw X-API-KEY (lub podobne) dla dostawców używających niestandardowego nagłówka.
Auth scheme prefixBearer (ze spacją końcową)Łańcuch dołączany przed sekretem w wartości nagłówka. Ustaw pusty, jeśli platforma oczekuje surowego klucza API, lub Token / inny niestandardowy prefiks.
Body templateemptyTylko POST. Surowe ciało żądania z dwiema rodzinami placeholderów. Verbatim: {name} / {label} / {version} podstawiają wartość literalną (użyj dla form-encoded, XML lub szablonów — escaping na tobie). JSON-safe: {name_json} / {label_json} / {version_json} podstawiają w pełni zacytowany literał string JSON (np. "hello") — użyj ich WEWNĄTRZ ciał JSON, aby nazwa promptu od żądania zawierająca " / \ / znaki kontrolne nie mogła wstrzyknąć pól siostrzanych w górę.
Response JSON pathemptyOpcjonalna kropkowa ścieżka w JSON odpowiedzi, gdzie żyje payload promptu (np. data.0.template.messages). Pusty = auto-detekcja kształtów najwyższego poziomu text / prompt / messages.
Przykład — podłączenie PromptLayer ręcznie:
URL template:        https://api.promptlayer.com/rest/get-prompt-template?prompt_name={name}&label={label}&version={version}
HTTP method:         GET
Auth header name:    X-API-KEY
Auth scheme prefix:  (empty)
Body template:       (empty)
Response JSON path:  prompt_template.messages
Secret:              <your PromptLayer API key>

Odporność

  • Cache TTL (domyślnie 60s), więc edycje promptów propagują się w ciągu minuty.
  • Stale-while-revalidate — wartość zacache’owana jest serwowana, podczas gdy następne odświeżenie biegnie w tle.
  • Stale-on-error — jeśli źródło zewnętrzne zwraca 5xx lub upływa timeout, brama serwuje ostatnią znaną dobrą odpowiedź. Ruch użytkownika nigdy nie ginie twardo przez awarię dostawcy.

10. Obserwowalność

Każde żądanie z wstrzykniętym promptem pozostawia cztery okruchy.

Nagłówek odpowiedzi

X-Orca-Prompt: support-agent@production:v7 (native)
Format:
  • Natywny: name@label:vN (native) (lub name@label (native), gdy int wersji jest nieznany).
  • Zewnętrzny: name@label:<provider-version-tag> (langfuse) itd.
  • Pominięta etykieta ⇒ brak segmentu @label.

Kolumny logu

Log.PromptId, Log.PromptVersion, Log.PromptLabel — typowane kolumny, indeksowane dla zapytań Insights.

Drilldown w Insights

W /console/insights wiersz filtra ma fasetę Prompt — wybierz prompt, a każda zakładka (latencja, błędy, koszt) filtruje do tego prompt_id. To zamknięcie pętli dla “edytowałem prompt — co zmieniło się w ruchu?”.

Audyt

Każde przesunięcie etykiety i wycofanie są zapisywane w Promote history promptu z user id aktora, znacznikiem czasu, from-version i to-version. Widoczne dla każdego członka; mutacja ograniczona przez rolę Owner.

11. Referencja API

Wszystkie trasy są w zakresie przestrzeni roboczej przez nagłówek X-Workspace-Id. RBAC jest egzekwowany konsekwentnie: odczyty otwarte dla każdego członka; zapisy to Developer+; zmiany ruchu produkcyjnego (przesunięcia etykiet, wycofania, konfiguracja dostawcy, webhooki) są tylko-Owner.

Prompty

Metoda i ścieżkaRolaCel
GET /api/prompt/MemberLista promptów (paginowana, wspiera ?tag=).
GET /api/prompt/?in_trash=trueOwnerLista miękko usuniętych promptów (tylko-Owner — klasa odzyskiwania).
GET /api/prompt/searchMemberWyszukiwanie po słowach kluczowych + tagach (rate-limited).
GET /api/prompt/tagsMemberTypeahead tagów dla przestrzeni roboczej.
GET /api/prompt/:idMemberSzczegóły pojedynczego promptu.
GET /api/prompt/:id/versionsMemberHistoria wersji (najnowsze pierwsze).
GET /api/prompt/:id/labelsMemberAktualna mapa etykieta → wersja.
GET /api/prompt/:id/tagsMemberZestaw tagów dla jednego promptu.
GET /api/prompt/:id/label_historyMemberLog audytu promocji.
GET /api/prompt/:id/analyticsMemberDane wykresu użycia per prompt.
GET /api/prompt/analytics/topMemberNajczęściej używane prompty w całej przestrzeni roboczej.
POST /api/prompt/Developer+Utwórz prompt (text lub chat).
PUT /api/prompt/Developer+Zaktualizuj prompt (tworzy nową wersję).
POST /api/prompt/:id/tagsDeveloper+Zastąp zestaw tagów.
POST /api/prompt/:id/runDeveloper+Playground “Try it” (rate-limited 30/min/workspace).
DELETE /api/prompt/:idDeveloper+Miękkie usunięcie do kosza (domyślnie); ?purge=true to twarde usunięcie tylko-Owner.
POST /api/prompt/:id/restoreOwnerPrzywróć z kosza.
POST /api/prompt/:id/rollbackOwnerPrzywróć starszą wersję jako nową wersję.
POST /api/prompt/:id/labelOwnerPrzesuń etykietę na wersję (atomowo, audytowane; przyjmuje też payload split dla A/B).

Dostawcy promptów (federacja)

Metoda i ścieżkaRolaCel
GET /api/prompt_provider/MemberLista podłączonych źródeł (maskowane sekrety).
POST /api/prompt_provider/OwnerPodłącz źródło.
PUT /api/prompt_provider/OwnerZaktualizuj źródło.
DELETE /api/prompt_provider/:idOwnerOdłącz.
POST /api/prompt_provider/testOwnerDry-rozwiąż przed zapisem.
GET /api/prompt_provider/:id/promptsMemberLista promptów dostępnych w źródle zewnętrznym.
POST /api/prompt_provider/:id/prompts/importDeveloper+Importuje zewnętrzny prompt do lokalnego rejestru.

Webhooki promptów

Metoda i ścieżkaRolaCel
GET /api/prompt_webhook/MemberLista webhooków.
POST /api/prompt_webhook/OwnerDodaj webhook (sekret zwracany raz).
PUT /api/prompt_webhook/:idOwnerEdytuj.
DELETE /api/prompt_webhook/:idOwnerUsuń.
POST /api/prompt_webhook/:id/testOwnerWyślij przykładowe zdarzenie.

Dostarczanie zdarzeń webhooka

Każde dostarczenie wysyła POST z kopertą JSON na skonfigurowany URL:
{
  "event": "label.promoted",
  "workspace_id": "ws_...",
  "occurred_at": "2025-01-15T08:30:00Z",
  "data": { "...": "event-specific fields" }
}
Typy zdarzeń: prompt.created, prompt.updated, prompt.deleted, label.promoted, version.rolled_back. Nagłówki dołączane do każdego dostarczenia:
  • X-Orca-Webhook-Id — id Twojego webhooka (użyj do deduplikacji).
  • X-Orca-Event — identyczny z polem event koperty.
  • X-Orca-Signature — w formacie sha256=<hex>, gdzie <hex> to HMAC-SHA256 surowego ciała żądania, z kluczem równym webhook secret. Porównuj w stałym czasie.

Dodatek do payloadu żądania

type ChatCompletionsRequest = {
  // ... all existing OpenAI-compatible fields ...
  prompt_ref?: PromptRef;  // gateway-only; stripped before upstream
};

12. FAQ

Zachowanie jest bajt-identyczne z przestrzenią roboczą, która nigdy nie włączyła tej funkcji. Jeśli klucz nie jest powiązany, brak prompt_ref, i nie ustawiono kanałowego defaulta — brama nie robi żadnych modyfikacji. Odpowiedź nie niesie nagłówka X-Orca-Prompt. Kolumny logu są NULL.To gwarancja braku regresji: resolver jest zweryfikowanym no-opem, gdy nic nie jest powiązane.
SystemPromptOverride to istniejący kanałowy domyślny system-prompt. Powiązany prompt z rejestru nadpisuje kanałowy default — udokumentowane i celowe. Gdy nic nie zostanie rozwiązane, kanałowy default wciąż działa dokładnie jak wcześniej.Gdy żądanie wywołującego już zawiera wiadomość systemową, zachowanie jest decydowane przez adapter formatu: żądania w kształcie OpenAI otrzymują wiadomość systemową szablonu doklejoną na początek; żądania w kształcie Claude umieszczają system szablonu w natywnym parametrze system.
Nie w v1. Każdy klucz może prompt_ref dowolny prompt w swojej własnej przestrzeni roboczej. Pasuje to do modelu kluczy w zakresie przestrzeni roboczej z Langfuse i LangSmith. Dostęp cross-workspace jest odrzucany na poziomie resolvera (sprawdzany ponownie w ścieżce relay; nigdy nie ufany ze stałego powiązania).Per-key allowlisty promptów to możliwy przyszły dodatek.
Tak. Wstrzyknięte tokeny system-promptu liczą się do użycia / kwoty / rozliczenia dokładnie jak każda inna wiadomość systemowa. Zbyt długie prompty przekraczające okno kontekstu modelu zwracają normalny błąd nadrzędny — brama nie pre-skracza.
Nie. Pola config.model / model_config zewnętrznych dostawców są ignorowane. Wybór modelu pozostaje jedynym autorytetem routera — Prompts wstrzykują tylko tekst.
Resolver traktuje brakujące / usunięte / nieautoryzowane prompty jako fail-safe skip — żądanie jest przekazywane niezmienione bez błędu dla wywołującego. Modaly Edit i Promote pokazują odznakę “Used by N keys”, więc widzisz promień rażenia przed usunięciem lub promowaniem.
Natywne przesunięcia etykiet są ~natychmiastowe (brama synchronizuje z DB w interwale ograniczonym sekundami, plus zapis do lokalnej mapy na ścieżce zapisu kontrolera). Zewnętrzne przesunięcia etykiet pojawiają się w skonfigurowanym TTL cache (domyślnie 60s). Oba są udokumentowanymi oczekiwaniami, nie wadami.
Tak. Modal Create prompt udostępnia przełącznik Text / Chat; tryb chat pokazuje strukturalny edytor {role, content}. Po utworzeniu promptu jego kind jest niezmienny (stworzysz nowy prompt, aby zmienić kształt).
  • Nagłówek odpowiedzi X-Orca-Prompt na odpowiedzi do użytkownika.
  • Kolumny Log.PromptId / PromptVersion / PromptLabel na wierszu logu żądania.
  • Faseta filtra Prompt w Insights — wybierz prompt; każda zakładka Insights filtruje do tego prompt_id.
Edytuj webhook przez PUT /api/prompt_webhook/:id i podaj nową wartość secret. Nowy sekret jest pokazywany raz w odpowiedzi — skopiuj go wtedy; potem sekret jest maskowany. (Nie ma dedykowanego endpointu rotacji; rotacja to zwykła edycja.)