- Implementation of specialist execution api, including SSE protocol

- eveai_chat becomes deprecated and should be replaced with SSE
- Adaptation of STANDARD_RAG specialist
- Base class definition allowing to realise specialists with crewai framework
- Implementation of SPIN_SPECIALIST
- Implementation of test app for testing specialists (test_specialist_client). Also serves as an example for future SSE-based client
- Improvements to startup scripts to better handle and scale multiple connections
- Small improvements to the interaction forms and views
- Caching implementation improved and augmented with additional caches
This commit is contained in:
Josako
2025-02-20 05:50:16 +01:00
parent d106520d22
commit 25213f2004
79 changed files with 2791 additions and 347 deletions

View File

@@ -27,6 +27,7 @@ expected_output: >
- Addresses the lead by name
- Acknowledges their role and company
- Highlights how {company} can meet their specific needs or interests
{customer_expected_output}
metadata:
author: "Josako"
date_added: "2025-01-08"

View File

@@ -1,13 +1,22 @@
version: "1.0.0"
name: "Identification Gathering"
task_description: >
Detect and pass on identification information in the ongoing conversation, from within the following information:
{question}
Add to or refine the following already gathered identification information (between triple $)
$$${Identification}$$$
You are asked to gather lead information in a conversation with a new prospect. This is information about the person
participating in the conversation, and information on the company he or she is working for. Try to be as precise as
possible.
Take into account information already gathered in the history (between triple backquotes) and add information found in
the latest reply.
history:
```{history}```
latest reply:
{query}
{custom_description}
expected_output: >
Identification information such as name, email, phone number, company, role, company website, ...
- Personal Identification information such as name, email, phone number, job title, and any additional information that
may prove to be interesting in the current or future conversations.
- Company information such as company name, industry, size, company website, ...
{custom_expected_output}
metadata:
author: "Josako"

View File

@@ -1,12 +1,21 @@
version: "1.0.0"
name: "Define Identification Questions"
task_description: >
Ask questions to complete or confirm the identification information gathered.
Current Identification Information:
$$${Identification}$$$
Gather the identification information gathered by your team mates , take into account the history (in between triple
backquotes) of the conversation, and the latest reply of the user.
Define questions to be asked to complete the personal and company information for the end user in the conversation.
history:
```{history}```
latest reply:
{query}
{custom_description}
expected_output: >
Top 2 questions to ask in order to complete identification.
- Personal Identification information such as name, email, phone number, job title, and any additional information that
may prove to be interesting in the current or future conversations.
- Company information such as company name, industry, size, company website, ...
{custom_expected_output}
- Top {nr_of_questions} questions to ask in order to complete identification.
{custom_expected_output}
metadata:
author: "Josako"

View File

@@ -0,0 +1,23 @@
version: "1.0.0"
name: "Rag Consolidation"
task_description: >
Your teams have collected answers to a user's query (in between triple backquotes), and collected additional follow-up
questions (in between triple %) to reach their goals. Ensure the answers are provided, and select the additional
questions to be asked in order not to overwhelm the user. Make a selection of maximum {nr_of_questions} questions to
be returned to the user. You ensure both answers and additional questions are bundled into 1 clear communication back
to the user. Use {language} for your consolidated communication.
{custom_description}
Anwers:
```{prepared_answers}```
Additional Questions:
%%%{additional_questions}%%%
expected_output: >
One consolidated communication towards the end user with both answers and maximum {nr_of_questions} questions.
{custom_expected_output}
metadata:
author: "Josako"
date_added: "2025-01-08"
description: "A Task to consolidate questions and answers"
changes: "Initial version"

View File

@@ -1,21 +1,21 @@
version: "1.0.0"
name: "RAG Task"
task_description: >
Answer the question based on the following context, delimited between triple backquotes, and taking into account
Answer the query based on the following context, delimited between triple backquotes, and taking into account
the history of the discussion, in between triple %
{custom_description}
Use the following {language} in your communication, and cite the sources used at the end of the full conversation.
If the question cannot be answered using the given context, say "I have insufficient information to answer this question."
If the question cannot be answered using the given context, answer "I have insufficient information to answer this question."
Context:
```{context}```
History:
%%%{history}%%%
Question:
{question}
Query:
{query}
expected_output: >
An answer to the question asked formatted in markdown, without '```'.
A list of sources used in generating the answer.
An indication (True or False) of your ability to provide an answer.
- Answer
- A list of sources used in generating the answer, citations
- An indication (True or False) if there's insufficient information to give an answer.
metadata:
author: "Josako"
date_added: "2025-01-08"

View File

@@ -1,25 +1,22 @@
version: "1.0.0"
name: "SPIN Information Detection"
task_description: >
Detect the SPIN-context, taking into account the history of the discussion (in between triple %) with main focus on
the latest reply (which can contain answers on previously asked questions by the user). Do not remove elements from
the known SPIN (in between triple $) analysis unless explicitly stated by the end user in the latest reply. In all other cases, refine the
current SPIN analysis or add elements to it.
Detect the SPIN-context, taking into account the history of the discussion (in between triple backquotes) with main focus on
the latest reply (which can contain answers on previously asked questions by the user). Spin elements may already be
provided in the history. Add or refine these with the new input provided in the latest reply of the end user.
{custom_description}
Use the following {tenant_language} to define the SPIN-elements. If no additional information can be added, just
return the already known SPIN.
Use the following {tenant_language} to define the SPIN-elements.
History:
%%%{history}%%%
Known SPIN:
$$${SPIN}$$$
```{history}```
Latest reply:
{question}
{query}
expected_output: >
The SPIN analysis, comprised of:
- Situation information - Information to understanding the customer's current context, as a markdown list without '```'.
- Problem information - Information on uncovering the customer's challenges and pain points, as a markdown list without '```'.
- Implication information - Exploration of the consequences of those problems, as a markdown list without '```'.
- Need-payoff information - Helping customers realize value of solutions and defining their direct needs, as a markdown list without '```'.
- Situation information: a description of the customer's current context / situation.
- Problem information: a description of the customer's problems uncovering it's challenges and pain points.
- Implication information: implications of situation / identified problems, i.e. of the consequences of those problems.
- Need-payoff information: Customer's needs, helping customers realize value of solutions.
- Additional info: Information that does not fit in the above SPIN-categories, but that can be commercially interesting.
{custom_expected_output}
metadata:
author: "Josako"

View File

@@ -1,21 +1,25 @@
version: "1.0.0"
name: "SPIN Question Identification"
task_description: >
Define, taking into account the history of the discussion (in between triple %), the latest reply and the currently
known SPIN-elements (in between triple $), the top questions that need to be asked to understand the full SPIN context
Define, taking into account the history of the discussion (in between triple backquotes) and the latest reply and the
currently known SPIN-elements, the top questions that need to be asked to understand the full SPIN context
of the customer. If you think this user could be a potential customer, please indicate so.
{custom_description}
Use the following {tenant_language} to define the SPIN-elements. If you have a full SPIN context, just skip and don't
ask for more information or confirmation.
History:
%%%{history}%%%
Known SPIN:
$$${SPIN}$$$
```{history}```
Latest reply:
{question}
{query}
expected_output: >
The SPIN analysis, comprised of:
- Situation information: a description of the customer's current context / situation.
- Problem information: a description of the customer's problems uncovering it's challenges and pain points.
- Implication information: implications of situation / identified problems, i.e. of the consequences of those problems.
- Need-payoff information: Customer's needs, helping customers realize value of solutions.
- Additional info: Information that does not fit in the above SPIN-categories, but that can be commercially interesting.
The SPIN questions:
- At max {nr_of_spin_questions} questions to complete the SPIN-context of the customer, as a markdown list without '```'.
- At max {nr_of_questions} questions to complete the SPIN-context of the customer, as a markdown list without '```'.
Potential Customer Indication:
- An indication if - given the current SPIN - this could be a good customer (True) or not (False).
{custom_expected_output}