Ukázka: Jak s pomocí AI a n8n automaticky vytvářet události v CRM

Ahoj, dneska jsem řešil úkol, kde jsem potřeboval vzít všechny e-maily, které se týkají mě jako Asana Partnera a potřeboval jsem je sesumarizovat, vytáhnout z nich akční kroky (jestli jsem něco neprošvihl) a odkazy na důležité soubory.

Procházet e-maily se mi nechtělo (bylo jich asi 40), zabralo by to spoustu času – nakonec se jako nejrychlejší řešení ukázalo nacpat to celé do modelu Gemini od Google (vejde se tam nejvíc textu) a fungovalo to.

Ale proto nepíšu – napadlo mě přitom, že bych konečně mohl vytvořit nějaký systém, který by zaznamenával v mém Airtable CRM důležité události ve vztahu ke klientům – kdy poslali poptávku, otázku, kdy jim něco nefungovalo apod. A je to překvapivě jednoduché (ač samozřejmě očekávám, že to nebude úplně dokonalé).

Tady je video:

A tady je prompt:

Analyzuj následující e-mail (text) a vytvoř JSON shrnutí s těmito klíčovými informacemi (vždy v českém jazyce):

{
  "event": {
    "date": "Datum přijetí e-mailu ve formátu ISO",
    "sender": {
      "name": "Jméno a příjmení odesílatele",
      "email": "E-mailová adresa odesílatele"
    },
    "category": "Jedna z následujících kategorií: 'interestInNewService', 'question', 'problemSolving', 'other'",
    "summary": "Detailní shrnutí hlavní podstaty zprávy, včetně všech klíčových otázek nebo požadavků klienta",
    "isUrgent": boolean,
    "keyPoints": [
      "Seznam klíčových bodů nebo požadavků"
    ],
    "actionItems": [
      "Seznam navrhovaných následných akcí nebo úkolů"
    ]
  }
}

Pokyny pro zpracování:
1. Datum extrahuj z hlavičky e-mailu nebo textu (datum vždy existuje). Ulož datum v ISO formátu.
2. Jméno a e-mail odesílatele extrahuj z hlavičky "From" nebo podpisu.
3. Kategorii zvol na základě obsahu e-mailu podle následujících kritérií:
   - interestInNewService: Zájem o novou službu
   - question: Obecné otázky týkající se digitálních nástrojů nebo spolupráce
   - problemSolving: Otázky nebo problémy související s automatizacemi nebo dodanými řešeními
   - other: Vše ostatní
4. V shrnutí zahrň všechny důležité informace bez ohledu na délku. Zaměř se na hlavní myšlenky, požadavky a otázky klienta.
5. Urči, zda je požadavek urgentní na základě jazyka a kontextu e-mailu (např. zmínky o deadlinech, použití slov jako "urgentní", "okamžitě" apod.)
6. Do keyPoints zahrň seznam konkrétních, actionable požadavků nebo otázek.
7. Do actionItems navrhni konkrétní kroky, které by měly být podniknuty v reakci na e-mail.

Při analýze vezmi v úvahu celé vlákno e-mailu, pokud je k dispozici, ale zaměř se především na nejnovější zprávu.

Výstup poskytni pouze ve formátu JSON bez dalších komentářů nebo vysvětlení.

{{ $json.from }}
{{ $json.date }} 
{{ $json.subject }}
{{ $json.text }}  

PS.: A tady je prompt, se kterým jsem tento prompt vygeneroval :slight_smile:

Chci vytvořit nejlepší propmt pro gpt. Cílem promptu je vzít příchozí e-mail a zpracovat jeho shrnutí tak, abych si ho mohl uložit do databáze a měl jsem tak přehled o tom, jaké požadavky chtěl můj klient řešit. Požadavky mají následující parametry:
	1.	Datum – termín, kdy e-mail přišel,
	2.	Odesílatel – jméno, příjmení a e-mail člověk, který e-mail odeslal.
	3.	Kategorie požadavku (seznam kategorií dávám níže). – potřebuji, aby byla každá zpráva kategorizována.
	4.	Shrnutí hlavní podstaty zprávy – je potřeba zahrnout klíčové otázky nebo požadavky, které klient má a které chce, abychom splnili.
Seznam kategorií požadavků:
Zájem o novou službu
Otázka – obecně zaměřené otázky týkající se digitálních nástrojů nebo spolupráce
Řešení problému – otázky nebo problémy související s automatizacemi nebo řešeními, které jsme klientovi dodali.
Jiné – vše ostatní
Jaké další informace by ti pomohly vymyslet nejlepší prompt? Klidně se zamysli, krok za krokem.
2 Likes

Pěkné. Já bych v podobném případě postup více krokoval. Aby řešil v každém promptu vždy jen jednu věc. Zajistí to větší stabilitu výsledků. JSON bych pravděpodobně vytvořil spíš algoritmicky a jazykový model pak spustil nad konkrétními hodnotami v JSON. Zvlášť bych ho nechal kategorizovat, zvlášť vytvořil shrnutí… Ale je fakt, že tohle jsem řešil na starších modelech, jde to tak rychle dopředu, že to už možná dneska ani není potřeba. To by bylo na nějaké delší testování.

Já jsem testoval víc variant, včetně krokování a moc v tom nebyl rozdíl (překvapivě).

Nechal bych tam krokování (a hlavně output parser, který řeší jistější výstup v JSONu) nebýt toho, že se mi pořád vracel výstup v angličtině – a pak jsem při rozboru toho requestu zjistil, že **integrace **
n8n na langchain v některých situacích doplňuje prompty – a tyhle části zadání byly anglicky neměl jsem možnost je kontrolovat.

Uvidím, jak to bude fungovat v praxi, tohle byl jen rychlý proof of concept.