AI nie ma własnego dostępu do Salesforce. Widzi tylko to, co AI Engine umieści w prompcie. Źródło danych to zapisane zapytanie, które uruchamia się za każdym razem, gdy użytkownik kliknie szablon, a jego wiersze trafiają do promptu. W ten sposób szablon Global, taki jak „Mój tygodniowy pipeline”, dostaje prawdziwe liczby, a szablon Record może zawierać dane, których nie obejmuje kontekst rekordu.
Zanim zaczniesz#
- Każdy obiekt odczytywany przez zapytanie musi być włączony w Agent Objects. Task, Event i User są zawsze dozwolone.
- Otwórz szablon w Ai Agent Admin Setup → Prompt Templates. Zobacz Utwórz szablony promptów.
Dodawanie źródła danych#
- Pod promptem kliknij + Add data source.
- Name (placeholder key): krótka nazwa, np.
pipeline_by_stage. Używaj małych liter, cyfr i podkreśleń, do 40 znaków, unikalna w obrębie szablonu. - Question (plain language): opisz dane, np. „moje otwarte szanse sprzedaży według etapu z łączną kwotą”.
- Kliknij ✨ Generate. AI Engine wpisze zapytanie w pole SOQL. Możesz też samodzielnie wpisać lub edytować zapytanie.
- Ustaw Row limit: od 1 do 200, domyślnie 50.
- Kliknij ▶ Preview i sprawdź wynik (zobacz niżej).
- Kliknij Insert {data:name}, aby dodać placeholder do promptu, a następnie przenieś go pod własny nagłówek w treści promptu.
- Kliknij ✓ Save na górze szablonu.
W szablonach Record pojawia się pole Sample record Id for Generate / Preview. Wklej Id prawdziwego rekordu, aby Generate widział przykład, a Preview mógł się na nim uruchomić.
Limity#
| Limit | Wartość |
|---|---|
| Źródła danych na szablon | Do 5 |
| Wiersze na źródło danych | Od 1 do 200 (Row limit), domyślnie 50 |
| Łączny rozmiar wszystkich źródeł danych w jednym prompcie | Domyślnie 40 000 znaków |
| Nazwa | Małe litery, cyfry i _, do 40 znaków |
| Pytanie | Do 255 znaków |
Obowiązującym limitem jest Row limit. Preview i Save przepisują LIMIT w zapytaniu na tę liczbę i dodają go, jeśli zapytanie go nie ma. Zapytania zwracające pojedynczy wiersz z sumą, takie jak COUNT() lub SUM(...) bez GROUP BY, działają bez limitu wierszy. Preview pokazuje efektywny limit.
Budżet znaków obejmuje łącznie wszystkie źródła danych jednego promptu. Źródła uruchamiają się w kolejności z listy. Gdy budżet się wyczerpie, pozostałe wiersze są obcinane, a prompt odnotowuje, ile wierszy pokazano. Najważniejsze źródło umieść jako pierwsze. Budżet jest przechowywany w polu Max Context Chars (Data Sources) aktywnego rekordu AI Engine Profile. Panel administratora go nie pokazuje, więc aby go zmienić, zaktualizuj to pole narzędziem do danych, takim jak Data Loader. Wartości poniżej 1 000 są ignorowane i obowiązuje domyślne 40 000.
Bindy: jeden szablon dla każdego użytkownika#
Nigdy nie wpisuj w zapytaniu stałego Id rekordu ani Id użytkownika. Zamiast tego używaj tych bindów:
| Bind | Znaczenie | Dostępny w |
|---|---|---|
:currentUserId |
Użytkownik, który klika szablon | Szablony Record i Global |
:recordId |
Rekord, na którym uruchamiany jest szablon | Tylko szablony Record |
Przykład: SELECT StageName, SUM(Amount) total FROM Opportunity WHERE OwnerId = :currentUserId AND IsClosed = false GROUP BY StageName. Każdy handlowiec, który uruchomi szablon, widzi swój własny pipeline. Jeśli w pytaniu napiszesz „my”, „mine” lub „this record”, Generate dostaje instrukcję użycia odpowiedniego bindu. Sprawdź wygenerowane zapytanie przed zapisaniem. W Preview :currentUserId to Twój własny użytkownik.
Używaj względnych literałów dat, takich jak TODAY, LAST_N_DAYS:30 czy NEXT_N_DAYS:14. Jeśli Generate wpisze stałą datę, zastąp ją, w przeciwnym razie szablon się zdezaktualizuje.
Co może zawierać zapytanie#
Zapytanie źródła danych musi być pojedynczym SELECT. Następujące elementy są odrzucane przy Preview, przy Save i ponownie przy uruchomieniu szablonu:
- obiekty, które nie są włączone w Agent Objects
- słowa kluczowe DML i średniki (pojedynczy średnik na końcu jest po prostu usuwany)
FOR UPDATE,FOR VIEWiFOR REFERENCE- każdy bind inny niż
:recordIdi:currentUserId, a także:recordIdw szablonie Global
WITH SECURITY_ENFORCED, WITH USER_MODE i WITH SYSTEM_MODE są automatycznie usuwane z zapytania. AI Engine sam ustawia tryb dostępu.
Podgląd#
▶ Preview uruchamia zapytanie tak samo, jak zostanie uruchomione dla użytkownika, z tymi samymi kontrolami, limitem wierszy i maskowaniem danych osobowych (PII), ale z Twoimi uprawnieniami. Pokazuje liczbę wierszy i kolumn, w przybliżeniu ile znaków dodaje do promptu, pierwsze 10 wierszy i efektywny limit wierszy. Preview wstawia też z powrotem do pola SOQL ostateczne zapytanie z zastosowanym limitem wierszy. To właśnie to zapytanie zostanie zapisane.
Jak dane trafiają do promptu#
- Każdy placeholder
{data:name}jest zastępowany wierszami tego źródła. - Jeśli szablon ma źródła danych, ale nie ma placeholdera
{data:...}, wszystkie źródła są dodawane na końcu promptu pod nagłówkiemCRM DATA:. To działa, ale własne nagłówki pomagają AI zrozumieć, czym jest każdy blok. - Placeholder, którego źródło nie istnieje, jest zastępowany informacją, że źródło nie jest skonfigurowane.
- Gdy prompt zawiera dane, AI Engine dodaje instrukcję, aby używać wyłącznie dostarczonych danych, informować o ich braku i nie wymyślać liczb.
- Każde źródło danych ma przełącznik Active. Nieaktywne źródła są zachowywane, ale pomijane. ✕ Remove usuwa źródło przy najbliższym zapisie szablonu.
Bezpieczeństwo#
Zapytania są uruchamiane z uprawnieniami użytkownika, który klika szablon, a nie administratora, który je napisał. Obowiązują reguły udostępniania i field-level security, a maskowanie PII działa tak jak w czacie. Handlowiec uruchamiający zapytanie obejmujące cały zespół dostaje tylko te rekordy, które może widzieć w Salesforce.
Jeśli zapytanie wybiera pole, którego bieżący użytkownik nie może odczytać, to źródło danych kończy się dla niego błędem. Prompt zawiera wtedy krótką informację, że źródło zawiodło, a pozostałe źródła nadal się uruchamiają. Ograniczaj pola źródeł danych do takich, które może odczytać każdy docelowy użytkownik.
Rozwiązywanie problemów#
- Generate informuje, że na pytanie nie da się odpowiedzieć jednym zapytaniem. Przeformułuj je jako pytanie o dane: które rekordy, które pola, jaki okres.
- „object is not enabled in Agent Objects”. Włącz obiekt albo zmień zapytanie.
- „this source needs a record (:recordId) but none was given” w Preview. Wpisz Sample record Id for Generate / Preview.
- Odpowiedź mówi, że danych brak. Uruchom Preview z realistycznym przykładowym rekordem i sprawdź limit wierszy oraz filtry dat.
- Kluczowe liczby wyglądają na zbyt niskie. Lista ograniczona do 50 wierszy, która zwraca 50 wierszy, sprawia, że AI podaje 50. Dodaj osobne źródło danych, które zwraca sumy za pomocą
COUNT()lubSUM().