2023-09-10 AI PitchPatterns Conversation Flow

 

Implementēt risinājumu iekš GitHub: https://github.com/asya-ai/pitchpatterns-conversation-flow

Jauna datubāze priekš cached data:

 

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:

image-20230911111727863

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

 

image-20230911112638551

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ā)

Locksmith services how can I help you?
I have a problem here with the door
I am calling to cancel
No
I need my door to get fixed
I need a qoute for the service
Ok this will be 99.99
Sorry cannot fix this type of door
Yes
No
This is car door
Ok this will be 99.99
No
Too Expensive
No
Can I offer discount?
What is your budget
No
Yes
Yes

 

Multi tags input JS image-20230911112425608

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_segmenets
flow_segmenet_id: PK
conversation_id: int
segment_id: int
agent_id: int
client_id: int
prev_flow_segmenet_id: int
next_flow_segmenet_id: int | NULL
text: TEXT | NULL
is_client_speaking: bool
dominant_emotion: str
emb_1: vector(256)
emb_2: vector(256)
emb_3: vector(256)
flow_conversations
flow_conversation_id: PK
client_id: int
is_yes: BOOL
flow_graph
flow_graph_id: PK
flow_graph_uuid: string | for web
client_id: int
client_str: str
flow_graph_filters
flow_graph_id: int
agent_id: int | NULL
agent_str: str | NULL
project_id: int | NULL
project_str: str | NULL
tag_id: int | NULL
tag_str: str | NULL
flow_graph_nodes
flow_graph_node_id: PK
parent_graph_node_id: int
graph_node_text: str
graph_node_emb_1: vector
graph_node_emb_2: vector
graph_node_emb_3: vector
is_client_speaking: bool
dominant_emotion: str
is_end_result: bool
is_yes_result: bool | NULL
flow_graph_nodes_flow_segments
flow_graph_nodes_flow_segment_id: PK
flow_graph_node_id: int
flow_segmenet_id: int

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:

  1. 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)

  2. Visām conversation flow daļām obligāti jābūt maksimāli daudz relācijām uz orģinālo DB projectx

  3. Katra koka nodes veidosies no median embedding tovākā prototipiskā pateiktā teikuma vai frāzes

  4. Nākotnē jāņem vērā, ka pie katra koka virsotnes glabāsim arī emocijas, intention, topics utt!

  5. Garas pauzes nākotnē arī varētu ielikt kā nodes

Sistēmas arhitektūra

flask_app frontend
DB pp_conv_flow
worker_aggregator
DB pitchpatterns