Implementēt risinājumu iekš GitHub: https://github.com/asya-ai/pitchpatterns-conversation-flow
Jauna datubāze priekš cached data:
x1h: 54.91.118.112
2d: pp_conv_flow
3u: pp_conv_flow
4p: (Evalds nosūtīs)
Nepieciešams implementēt Flask based risinājumu ar kuru var analizēt PitchPatterns sarunu plūdumu. Rezultātam jāizskatās šādi (grafus zīmēt ar mermaidjs bibliotēku, tur primitīvā veidā var konstruēt grafus)
Piemērs rezultātam, atverot lapu:
Pēc tam atkarībā no lietotāja - mūsu klientu manager/admin lietotāji var piekļūt saviem datiem, asya admin lietotāji var piekļūt visiem datiem. Jāvar ar dropdown pārslēgties starp organizācijām
Būtu labi, ka ģenerētās atskaites tiktu saglabātas, lai varam debuggot un vēlreiz atvērt (DB flow_graph) bet arī lai flask parādās URL linku saraksts
Piemērs grafam (mermaidjs valodā)
xxxxxxxxxx
1411%%{ init: { 'flowchart': { 'curve': 'basis' } } }%%
2graph TD
3
41_1(Locksmith services how can I help you?)
51_2(I have a problem here with the door)
61_3(I am calling to cancel)
71_3 --> c1_3(No)
8
91_1 --> 2_1(I need my door to get fixed)
101_1 --> 2_2(I need a qoute for the service)
11
122_1 --> 3_1(Ok this will be 99.99)
132_1 --> 3_2(Sorry cannot fix this type of door)
14
153_1 --> yes_1(Yes)
163_2 --> no_1(No)
17
181_2 --> b_2_1(This is car door)
191_2 --> b_2_2(Ok this will be 99.99)
20
21b_2_1 --> b_no_1(No)
22b_2_2 --> b_3_1(Too Expensive)
23b_2_2 --> b_no_2(No)
24
25b_3_1 --> b_4_1(Can I offer discount?)
26b_3_1 --> b_4_2(What is your budget)
27b_3_1 --> b_no_3(No)
28
29b_4_1 --> b_5_1(Yes)
30b_4_2 --> b_5_2(Yes)
31
32classDef classClient fill:lightyellow;
33classDef classAgent fill:lightblue;
34classDef classYes fill:lime;
35classDef classNo fill:pink;
36class 1_2,1_3,2_1,2_2,b_2_1,b_3_1 classClient;
37class 1_1,3_1,3_2,b_2_2,b_4_1,b_4_2 classAgent;
38class yes_1,b_5_1,b_5_2 classYes;
39class no_1,b_no_1,b_no_2,c1_3,b_no_3 classNo;
40
⚠️ Debugging nolūkos, lūdzu piekodēt, ka uzklikšķinot uz jebkuras nodes parādītos visi iekļautie flow_segments teksti, lai var pābraudīt vai sistēma pareizi strādā
Multi tags input JS
https://projects.verou.me/awesomplete/
Export to PDF funkcija https://github.com/mermaid-js/mermaid/issues/496
Agent, Client nodes iekrāsot katru savā krāsā. Grafs tiek sastādīts no iepriekš sagatavotiem cached data jaunā datu bāzē.
Sākotnēji nefokusēties uz vietnes interaktivitāti, bet vēlāk būs nepieciešams uztaisīt pan-zoom and click events ar javascript https://mermaid.js.org/config/usage.html
Jāizveido jauna datubāze no kuras tālāk var ērti ģenerēt šāda veida grafiku visu nepārprocesējot:
flow_conversations, flow_segmenets => akumulē worker_aggregator
flow_graph, flow_graph_nodes, flow_graph_filters, flow_graph_nodes_flow_segments => ieraksta flask_app frontend
next_flow_segmenet_id = NULL nozīmē pēdējais segments sarunā YES saruna ir tāda, kurai conversation_id iekš tags_in_conversations satur YES
Lai paātrinātu darbību vēlams daļu PP tabulu datus pārkopēt agregējot db_pp_conv_flow
Saglabāt uzreiz vairākus embedding formātus, lai var testēt dažādas clustering metodes un tos kombinēt savā starpā
flow_graph un flow_graph_nodes ir gatavie rezultāti, lai pēc tam varam debuggot
flow_graph_filters satur pa vienam filtra elementam no UI (nemēģināt vienā ierakstā salikt visus filtra elementus)
Vektoru meklēšanai izmantot arī PostgreSQL Database extensions, lai ātrāk strādātu, bet pirmajā versijā var izmantot default PostgreSQL https://github.com/pgvector/pgvector
Kritēriji kā dala sarunu koku:
Katra nākamā sarunu koka līmenis veidojas no secīgiem sarunu segmentiem, kuri ir ne īsāki kā definēts segmenta garums, iespējams, 10sek (īsos secīgos segmentus izlaižam)
Visām conversation flow daļām obligāti jābūt maksimāli daudz relācijām uz orģinālo DB projectx
Katra koka nodes veidosies no median embedding tovākā prototipiskā pateiktā teikuma vai frāzes
Nākotnē jāņem vērā, ka pie katra koka virsotnes glabāsim arī emocijas, intention, topics utt!
Garas pauzes nākotnē arī varētu ielikt kā nodes
worker_aggregator - no PP galvenās DB projectx
periodiski savāc datus un sarēķina embeddings, strukturizē, lai ātri varētu iegūt atskaites. Latviešu sarunu gadījumā būs jāveic LV->EN tulkošana
flask_app frontend, autentificē lietotājus balsototies uz PP datubāzi un ģenerēr kokus no pp_conv_flow DB (tags, projects, agents nāk no PP datu bāzes priekš UI atlasīšanas)
Nākotnē jāparedz, ka atskaites varētu ģenerēt arī fonā un sūtīt uz epastu vai rādīt pāšā PP sistēmā
Nākotnē izmantosim HDBSCAN, lai clusterizētu tēmas ar nezināmu N skaitu katrā līmenī, bet šobrīd lūdzu izmantot:
Definēts K cluster count katrā slānī:
Pirmajā: 5
Otrais, Trešais slānis: 3
Ceturtais piektais slānis: 2
Kopā lietojam maksimums 5 slāņus (graph_layer_count)
Klasterizāciju veicam tikai ar sklearn SpectralClustering algoritmu (uzmanību, nepieciešams pārmeklēt tā parametrus, liela ietekme rezultātam)
Lai pārbaudītu rezultātus lūdzu lietojoet vizualizācijas katrā layer (sub tree) tensorboard vai weights and biases emebddings projector . Vizuāla clasterizācijas pārbaude ir obligāti jāveic, jo no tekstiem mēs nevarēsim debuggot
Ja cluster ietver vairāk kā pusi pēdējo node conversation flow, tad to klasificējam kā terminal state: yes, no