- Refinement of the chat client to have better visible clues for user vs chatbot messages

- Introduction of interview_phase and normal phase in TRAICIE_SELECTION_SPECIALIST to make interaction with bot more human.
- More and random humanised messages to TRAICIE_SELECTION_SPECIALIST
This commit is contained in:
Josako
2025-08-02 16:36:41 +02:00
parent 998ddf4c03
commit 9a88582fff
50 changed files with 2064 additions and 384 deletions

View File

@@ -15,7 +15,7 @@ backstory: >
include a salutation or closing greeting in your answer.
{custom_backstory}
full_model_name: "mistral.mistral-medium-latest"
temperature: 0.3
temperature: 0.5
metadata:
author: "Josako"
date_added: "2025-01-08"

View File

@@ -3,7 +3,7 @@ name: "Role Definition Catalog"
description: "A Catalog containing information specific to a specific role"
configuration:
tagging_fields:
role_identification:
role_reference:
type: "string"
required: true
description: "A unique identification for the role"

View File

@@ -55,11 +55,6 @@ configuration:
description: "Primary Color"
type: "color"
required: false
active_text_color:
name: "Active Interaction Text Color"
description: "Secondary Color"
type: "color"
required: false
history_background:
name: "History Background"
description: "Percentage to lighten (+) / darken (-) the user message background"
@@ -67,27 +62,28 @@ configuration:
min_value: -50
max_value: 50
required: false
history_user_message_background:
name: "History User Message Background"
description: "Percentage to lighten (+) / darken (-) the user message background"
type: "integer"
min_value: -50
max_value: 50
ai_message_background:
name: "AI (Bot) Message Background Color"
description: "AI (Bot) Message Background Color"
type: "color"
required: false
history_ai_message_background:
name: "History AI Message Background"
description: "Percentage to lighten (+) / darken (-) the AI message background"
type: "integer"
min_value: -50
max_value: 50
ai_message_text_color:
name: "AI (Bot) Message Text Color"
description: "AI (Bot) Message Text Color"
type: "color"
required: false
history_message_text_color:
name: "History Text Color"
description: "History Message Text Color"
human_message_background:
name: "Human Message Background Color"
description: "Human Message Background Color"
type: "color"
required: false
human_message_text_color:
name: "Human Message Text Color"
description: "Human Message Text Color"
type: "color"
required: false
metadata:
author: "Josako"
date_added: "2024-06-06"
changes: "Initial version"
changes: "Adaptations to make color choosing more consistent and user friendly"
description: "Parameters allowing to customise the chat client"

View File

@@ -42,7 +42,7 @@ configuration:
image_handling:
name: "Image Handling"
type: "enum"
description: "How to handle embedded images"
description: "How to handle embedded img"
required: false
default: "skip"
allowed_values: ["skip", "extract", "placeholder"]

View File

@@ -14,8 +14,8 @@ configuration:
required: true
default: 0.3
arguments:
role_identification:
name: "Role Identification"
role_reference:
name: "Role Reference"
type: "string"
description: "The role information needs to be retrieved for"
required: true

View File

@@ -19,8 +19,8 @@ arguments:
type: "string"
description: "Query to retrieve embeddings"
required: true
role_identification:
name: "Role Identification"
role_reference:
name: "Role Reference"
type: "string"
description: "The role information needs to be retrieved for"
required: true

View File

@@ -0,0 +1,31 @@
type: "PERSONAL_CONTACT_FORM"
version: "1.0.0"
name: "Personal Contact Form"
icon: "person"
fields:
name:
name: "Name"
description: "Your name"
type: "str"
required: true
# It is possible to also add a field 'context'. It allows you to provide an elaborate piece of information.
email:
name: "Email"
type: "str"
description: "Your Name"
required: true
phone:
name: "Phone Number"
type: "str"
description: "Your Phone Number"
required: true
consent:
name: "Consent"
type: "boolean"
description: "Consent"
required: true
metadata:
author: "Josako"
date_added: "2025-07-29"
changes: "Initial Version"
description: "Personal Contact Form"

View File

@@ -0,0 +1,29 @@
version: "1.1.0"
name: "Traicie KO Criteria Interview Definition Specialist"
framework: "crewai"
partner: "traicie"
chat: false
configuration:
arguments:
specialist_id:
name: "specialist_id"
description: "ID of the specialist for which to define KO Criteria Questions and Asnwers"
type: "integer"
required: true
results:
asset_id:
name: "asset_id"
description: "ID of the Asset containing questions and answers for each of the defined KO Criteria"
type: "integer"
required: true
agents:
- type: "TRAICIE_HR_BP_AGENT"
version: "1.0"
tasks:
- type: "TRAICIE_KO_CRITERIA_INTERVIEW_DEFINITION_TASK"
version: "1.0"
metadata:
author: "Josako"
date_added: "2025-07-01"
changes: "Initial Version"
description: "Specialist assisting in questions and answers definition for KO Criteria"

View File

@@ -0,0 +1,121 @@
version: "1.4.0"
name: "Traicie Selection Specialist"
framework: "crewai"
partner: "traicie"
chat: true
configuration:
name:
name: "Name"
description: "The name the specialist is called upon."
type: "str"
required: true
role_reference:
name: "Role Reference"
description: "A customer reference to the role"
type: "str"
required: false
make:
name: "Make"
description: "The make for which the role is defined and the selection specialist is created"
type: "system"
system_name: "tenant_make"
required: true
competencies:
name: "Competencies"
description: "An ordered list of competencies."
type: "ordered_list"
list_type: "competency_details"
required: true
tone_of_voice:
name: "Tone of Voice"
description: "The tone of voice the specialist uses to communicate"
type: "enum"
allowed_values: ["Professional & Neutral", "Warm & Empathetic", "Energetic & Enthusiastic", "Accessible & Informal", "Expert & Trustworthy", "No-nonsense & Goal-driven"]
default: "Professional & Neutral"
required: true
language_level:
name: "Language Level"
description: "Language level to be used when communicating, relating to CEFR levels"
type: "enum"
allowed_values: ["Basic", "Standard", "Professional"]
default: "Standard"
required: true
welcome_message:
name: "Welcome Message"
description: "Introductory text given by the specialist - but translated according to Tone of Voice, Language Level and Starting Language"
type: "text"
required: false
competency_details:
title:
name: "Title"
description: "Competency Title"
type: "str"
required: true
description:
name: "Description"
description: "Description (in context of the role) of the competency"
type: "text"
required: true
is_knockout:
name: "KO"
description: "Defines if the competency is a knock-out criterium"
type: "boolean"
required: true
default: false
assess:
name: "Assess"
description: "Indication if this competency is to be assessed"
type: "boolean"
required: true
default: true
arguments:
region:
name: "Region"
type: "str"
description: "The region of the specific vacancy"
required: false
working_schedule:
name: "Work Schedule"
type: "str"
description: "The work schedule or employment type of the specific vacancy"
required: false
start_date:
name: "Start Date"
type: "date"
description: "The start date of the specific vacancy"
required: false
language:
name: "Language"
type: "str"
description: "The language (2-letter code) used to start the conversation"
required: true
interaction_mode:
name: "Interaction Mode"
type: "enum"
description: "The interaction mode the specialist will start working in."
allowed_values: ["orientation", "selection"]
default: "orientation"
required: true
results:
competencies:
name: "competencies"
type: "List[str, str]"
description: "List of vacancy competencies and their descriptions"
required: false
agents:
- type: "TRAICIE_RECRUITER_AGENT"
version: "1.0"
- type: "RAG_AGENT"
version: "1.1"
tasks:
- type: "TRAICIE_DETERMINE_INTERVIEW_MODE_TASK"
version: "1.0"
- type: "TRAICIE_AFFIRMATIVE_ANSWER_CHECK_TASK"
version: "1.0"
- type: "ADVANCED_RAG_TASK"
version: "1.0"
metadata:
author: "Josako"
date_added: "2025-07-30"
changes: "Update for a Full Virtual Assistant Experience"
description: "Assistant to assist in candidate selection"

View File

@@ -0,0 +1,43 @@
version: "1.0.0"
name: "Advanced RAG Task"
task_description: >
Answer the following question (in between triple £):
£££{question}£££
Base your answer on the following context (in between triple $):
$$${context}$$$
Take into account the following history of the conversation (in between triple €):
€€€{history}€€€
The HUMAN parts indicate the interactions by the end user, the AI parts are your interactions.
Best Practices are:
- Answer the provided question as precisely and directly as you can, combining elements of the provided context.
- Always focus your answer on the actual question.
- Limit repetition in your answers to an absolute minimum, unless absolutely necessary.
- Always be friendly and helpful for the end user.
Tune your answers to the following:
- You use the following Tone of Voice for your answer: {tone_of_voice}, i.e. {tone_of_voice_context}
- You use the following Language Level for your answer: {language_level}, i.e. {language_level_context}
Use the following language in your communication: {language}
If the question cannot be answered using the given context, answer "I have insufficient information to answer this
question." and give the appropriate indication.
{custom_description}
expected_output: >
metadata:
author: "Josako"
date_added: "2025-07-30"
description: "A Task that performs RAG and checks for human answers"
changes: "Initial version"

View File

@@ -1,19 +1,32 @@
version: "1.0.0"
name: "RAG Task"
task_description: >
Answer the question based on the following context, and taking into account the history of the discussion. Try not to
repeat answers already given in the recent history, unless confirmation is required or repetition is essential to
give a coherent answer.
Answer the following question (in between triple £):
£££{question}£££
Base your answer on the following context (in between triple $):
$$${context}$$$
Take into account the following history of the conversation (in between triple €):
€€€{history}€€€
The HUMAN parts indicate the interactions by the end user, the AI parts are your interactions.
Best Practices are:
- Answer the provided question as precisely and directly as you can, combining elements of the provided context.
- Always focus your answer on the actual HUMAN question.
- Try not to repeat your answers (preceded by AI), unless absolutely necessary.
- Focus your answer on the question at hand.
- Always be friendly and helpful for the end user.
{custom_description}
Use the following {language} in your communication, and cite the sources used at the end of the full conversation.
Use the following {language} in your communication.
If the question cannot be answered using the given context, answer "I have insufficient information to answer this
question."
Context (in between triple $):
$$${context}$$$
History (in between triple €):
€€€{history}€€€
Question (in between triple £):
£££{question}£££
question." and give the appropriate indication.
expected_output: >
Your answer.
metadata:

View File

@@ -0,0 +1,29 @@
version: "1.0.0"
name: "Traicie Affirmative Answer Check"
task_description: >
You are provided with the following end user answer (in between triple £):
£££{question}£££
This is the history of the conversation (in between triple €):
€€€{history}€€€
(In this history, user interactions are preceded by 'HUMAN', and your interactions with 'AI'.)
Check if the user has given an affirmative answer or not.
Please note that this answer can be very short:
- Affirmative answers: e.g. Yes, OK, Sure, Of Course
- Negative answers: e.g. No, not really, No, I'd rather not.
Please consider that the answer will be given in {language}!
{custom_description}
expected_output: >
Your determination if the answer was affirmative (true) or negative (false)
metadata:
author: "Josako"
date_added: "2025-07-30"
description: "A Task to check if the answer to a question is affirmative"
changes: "Initial version"

View File

@@ -1,30 +0,0 @@
version: "1.0.0"
name: "KO Criteria Interview Definition"
task_description: >
In context of a vacancy in your company {tenant_name}, you are provided with a set of competencies. (both description
and title). The competencies are in between triple backquotes. You need to prepare for the interviews,
and are to provide for each of these ko criteria:
- A question to ask the recruitment candidate describing the context of the competency. Use your experience to not
just ask a closed question, but a question from which you can indirectly derive a positive or negative qualification of
the competency based on the answer of the candidate.
Apply the following tone of voice in both questions and answers: {tone_of_voice}
Apply the following language level in both questions and answers: {language_level}
Respect the language of the competencies, and return all output in the same language.
```{competencies}```
{custom_description}
expected_output: >
For each of the ko criteria, you provide:
- the exact title in the original language
- the question
- a set of answers, with for each answer an indication if it is the correct answer, or a false response.
{custom_expected_output}
metadata:
author: "Josako"
date_added: "2025-06-15"
description: "A Task to define interview Q&A from given KO Criteria"
changes: "Initial Version"

View File

@@ -0,0 +1,23 @@
version: "1.0.0"
name: "Traicie Determine Interview Mode"
task_description: >
you are provided with the following user input (in between triple backquotes):
```{question}```
If this user input contains one or more questions, your answer is simply 'RAG'. In all other cases, your answer is
'CHECK'.
Best practices to be applied:
- A question doesn't always have an ending question mark. It can be a query for more information, such as 'I'd like
to understand ...', 'I'd like to know more about...'. Or it is possible the user didn't enter a question mark. Take
into account the user might be working on a mobile device like a phone, making typing not as obvious.
- If there is a question mark, then normally you are provided with a question of course.
expected_output: >
Your Answer.
metadata:
author: "Josako"
date_added: "2025-07-30"
description: "A Task to determine the interview mode based on the last user input"
changes: "Initial version"

View File

@@ -12,4 +12,8 @@ SPECIALIST_FORM_TYPES = {
"name": "Contact Time Preferences Form",
"description": "A form for entering contact time preferences",
},
"MINIMAL_PERSONAL_CONTACT_FORM": {
"name": "Personal Contact Form",
"description": "A form for entering your personal contact details",
}
}

View File

@@ -37,14 +37,23 @@ TASK_TYPES = {
"description": "A Task to get Competencies from a Vacancy Text",
"partner": "traicie"
},
"TRAICIE_GET_KO_CRITERIA_TASK": {
"name": "Traicie Get KO Criteria",
"description": "A Task to get KO Criteria from a Vacancy Text",
"partner": "traicie"
},
"TRAICIE_KO_CRITERIA_INTERVIEW_DEFINITION_TASK": {
"name": "Traicie KO Criteria Interview Definition",
"description": "A Task to define KO Criteria questions to be used during the interview",
"partner": "traicie"
},
"TRAICIE_ADVANCED_RAG_TASK": {
"name": "Traicie Advanced RAG",
"description": "A Task to perform Advanced RAG taking into account previous questions, tone of voice and language level",
"partner": "traicie"
},
"TRAICIE_AFFIRMATIVE_ANSWER_CHECK_TASK": {
"name": "Traicie Affirmative Answer Check",
"description": "A Task to check if the answer to a question is affirmative",
"partner": "traicie"
},
"TRAICIE_DETERMINE_INTERVIEW_MODE_TASK": {
"name": "Traicie Determine Interview Mode",
"description": "A Task to determine the interview mode based on the last user input",
}
}