- 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:
@@ -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"
|
||||
|
||||
@@ -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"
|
||||
|
||||
@@ -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"
|
||||
@@ -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"]
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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"
|
||||
@@ -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"
|
||||
@@ -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"
|
||||
43
config/tasks/globals/ADVANCED_RAG_TASK/1.0.0.yaml
Normal file
43
config/tasks/globals/ADVANCED_RAG_TASK/1.0.0.yaml
Normal 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"
|
||||
@@ -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:
|
||||
|
||||
@@ -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"
|
||||
@@ -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"
|
||||
@@ -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"
|
||||
@@ -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",
|
||||
}
|
||||
}
|
||||
@@ -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",
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user