Spaces:
Sleeping
Sleeping
hit/miss, remove conclusion
Browse files- __pycache__/utils_chain_parameters.cpython-311.pyc +0 -0
- __pycache__/utils_evaluate_objections.cpython-311.pyc +0 -0
- __pycache__/utils_output.cpython-311.pyc +0 -0
- __pycache__/utils_prompt.cpython-311.pyc +0 -0
- utils_chain_parameters.py +2 -3
- utils_evaluate_objections.py +3 -0
- utils_output.py +19 -3
__pycache__/utils_chain_parameters.cpython-311.pyc
CHANGED
|
Binary files a/__pycache__/utils_chain_parameters.cpython-311.pyc and b/__pycache__/utils_chain_parameters.cpython-311.pyc differ
|
|
|
__pycache__/utils_evaluate_objections.cpython-311.pyc
CHANGED
|
Binary files a/__pycache__/utils_evaluate_objections.cpython-311.pyc and b/__pycache__/utils_evaluate_objections.cpython-311.pyc differ
|
|
|
__pycache__/utils_output.cpython-311.pyc
CHANGED
|
Binary files a/__pycache__/utils_output.cpython-311.pyc and b/__pycache__/utils_output.cpython-311.pyc differ
|
|
|
__pycache__/utils_prompt.cpython-311.pyc
CHANGED
|
Binary files a/__pycache__/utils_prompt.cpython-311.pyc and b/__pycache__/utils_prompt.cpython-311.pyc differ
|
|
|
utils_chain_parameters.py
CHANGED
|
@@ -21,9 +21,8 @@ def prepare_chain_parameters(session_state, message, history):
|
|
| 21 |
ground_truth = session_state.questions[session_state.current_question_index - 1]["ground_truth"]
|
| 22 |
for response in session_state.responses:
|
| 23 |
all_questions_answers += f"Question: {response['question']}\nAnswer: {response['response']}\n\n"
|
| 24 |
-
command = """
|
| 25 |
-
|
| 26 |
-
Give a polite farewell.
|
| 27 |
"""
|
| 28 |
else:
|
| 29 |
previous_question = session_state.questions[session_state.current_question_index - 1]["question"]
|
|
|
|
| 21 |
ground_truth = session_state.questions[session_state.current_question_index - 1]["ground_truth"]
|
| 22 |
for response in session_state.responses:
|
| 23 |
all_questions_answers += f"Question: {response['question']}\nAnswer: {response['response']}\n\n"
|
| 24 |
+
command = """Offer a comment on their last answer. Then conclude the conversation with a polite farewell
|
| 25 |
+
and a suggestion for the next step.
|
|
|
|
| 26 |
"""
|
| 27 |
else:
|
| 28 |
previous_question = session_state.questions[session_state.current_question_index - 1]["question"]
|
utils_evaluate_objections.py
CHANGED
|
@@ -72,6 +72,7 @@ def process_salesbud_file(file_path: str) -> List[Tuple[ObjectionInput, Objectio
|
|
| 72 |
class ObjectionlPrompt(PydanticPrompt[ObjectionInput, ObjectionOutput]):
|
| 73 |
instruction = "You are an expert technology sales rep that is tasked with judging if response satisfies potential customer's objection (user input). \
|
| 74 |
Given an user input and sales rep response, output True if the response satisfies the objection by the potential customer"
|
|
|
|
| 75 |
input_model = ObjectionInput
|
| 76 |
output_model = ObjectionOutput
|
| 77 |
examples = process_salesbud_file('salesbud_examples.csv')
|
|
@@ -94,6 +95,8 @@ class SatisfyRate(MetricWithLLM, SingleTurnMetric):
|
|
| 94 |
prompt_response = await self.objection_prompt.generate(
|
| 95 |
data=prompt_input, llm=self.llm
|
| 96 |
)
|
|
|
|
|
|
|
| 97 |
return int(prompt_response.satisfy)
|
| 98 |
|
| 99 |
async def generate_objection_score(question_answer):
|
|
|
|
| 72 |
class ObjectionlPrompt(PydanticPrompt[ObjectionInput, ObjectionOutput]):
|
| 73 |
instruction = "You are an expert technology sales rep that is tasked with judging if response satisfies potential customer's objection (user input). \
|
| 74 |
Given an user input and sales rep response, output True if the response satisfies the objection by the potential customer"
|
| 75 |
+
|
| 76 |
input_model = ObjectionInput
|
| 77 |
output_model = ObjectionOutput
|
| 78 |
examples = process_salesbud_file('salesbud_examples.csv')
|
|
|
|
| 95 |
prompt_response = await self.objection_prompt.generate(
|
| 96 |
data=prompt_input, llm=self.llm
|
| 97 |
)
|
| 98 |
+
print("prompt_response")
|
| 99 |
+
print(prompt_response)
|
| 100 |
return int(prompt_response.satisfy)
|
| 101 |
|
| 102 |
async def generate_objection_score(question_answer):
|
utils_output.py
CHANGED
|
@@ -63,10 +63,17 @@ async def display_evaluation_results(cl, session_state):
|
|
| 63 |
print("Checking evaluation and objection flags")
|
| 64 |
print(session_state.do_evaluation)
|
| 65 |
print(session_state.add_objections_to_analysis)
|
|
|
|
|
|
|
| 66 |
if session_state.do_evaluation:
|
| 67 |
evaluate_answers(session_state)
|
| 68 |
elif session_state.add_objections_to_analysis:
|
| 69 |
await evaluate_objections(session_state)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 70 |
await asyncio.sleep(1)
|
| 71 |
|
| 72 |
output = f"**Session Summary**"
|
|
@@ -84,9 +91,10 @@ async def display_evaluation_results(cl, session_state):
|
|
| 84 |
averages = results_df[columns_to_average].mean()
|
| 85 |
|
| 86 |
await cl.Message(content="**Overall Summary (By SalesBuddy)**").send()
|
| 87 |
-
output = f"**SalesBuddy
|
| 88 |
output = output + f"**SalesBuddy Evaluation:** {session_state.responses[-1]['overall_evaluation']} \n"
|
| 89 |
output = output + f"**SalesBuddy Final Mood Score (1-10):** {session_state.responses[-1]['mood_score']} \n"
|
|
|
|
| 90 |
await cl.Message(content=output).send()
|
| 91 |
|
| 92 |
if session_state.do_ragas_evaluation:
|
|
@@ -98,12 +106,20 @@ async def display_evaluation_results(cl, session_state):
|
|
| 98 |
await cl.Message(content="**Individual Question Scores**").send()
|
| 99 |
|
| 100 |
for index, resp in enumerate(session_state.responses):
|
| 101 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 102 |
output = f"""
|
| 103 |
**Question:** {resp.get('question', 'N/A')}
|
| 104 |
**Answer:** {resp.get('response', 'N/A')}
|
| 105 |
**SalesBuddy Evaluation:** {resp.get('response_evaluation', 'N/A')}
|
| 106 |
-
**
|
| 107 |
"""
|
| 108 |
if session_state.do_ragas_evaluation:
|
| 109 |
scores = session_state.scores[index]
|
|
|
|
| 63 |
print("Checking evaluation and objection flags")
|
| 64 |
print(session_state.do_evaluation)
|
| 65 |
print(session_state.add_objections_to_analysis)
|
| 66 |
+
hit_miss_ratio = "N/A"
|
| 67 |
+
hit_miss_score = 0
|
| 68 |
if session_state.do_evaluation:
|
| 69 |
evaluate_answers(session_state)
|
| 70 |
elif session_state.add_objections_to_analysis:
|
| 71 |
await evaluate_objections(session_state)
|
| 72 |
+
for resp in session_state.responses:
|
| 73 |
+
if resp.get('evaluation_score', 'N/A') == 1 or resp.get('evaluation_score', 'N/A') == 0:
|
| 74 |
+
hit_miss = resp.get('evaluation_score', 0)
|
| 75 |
+
hit_miss_score += hit_miss
|
| 76 |
+
hit_miss_ratio = (hit_miss_score / len(session_state.responses)) * 100
|
| 77 |
await asyncio.sleep(1)
|
| 78 |
|
| 79 |
output = f"**Session Summary**"
|
|
|
|
| 91 |
averages = results_df[columns_to_average].mean()
|
| 92 |
|
| 93 |
await cl.Message(content="**Overall Summary (By SalesBuddy)**").send()
|
| 94 |
+
output = f"**SalesBuddy Grade (1-10):** {session_state.responses[-1]['overall_score']} \n"
|
| 95 |
output = output + f"**SalesBuddy Evaluation:** {session_state.responses[-1]['overall_evaluation']} \n"
|
| 96 |
output = output + f"**SalesBuddy Final Mood Score (1-10):** {session_state.responses[-1]['mood_score']} \n"
|
| 97 |
+
output = output + f"**Hit/Miss Ratio:** {hit_miss_ratio:.1f}% \n"
|
| 98 |
await cl.Message(content=output).send()
|
| 99 |
|
| 100 |
if session_state.do_ragas_evaluation:
|
|
|
|
| 106 |
await cl.Message(content="**Individual Question Scores**").send()
|
| 107 |
|
| 108 |
for index, resp in enumerate(session_state.responses):
|
| 109 |
+
eval_score = resp.get('evaluation_score', 0)
|
| 110 |
+
print(eval_score)
|
| 111 |
+
print(type(eval_score))
|
| 112 |
+
if eval_score == 1:
|
| 113 |
+
eval_output = "Hit"
|
| 114 |
+
elif eval_score == 0:
|
| 115 |
+
eval_output = "Miss"
|
| 116 |
+
else:
|
| 117 |
+
eval_output = "N/A"
|
| 118 |
output = f"""
|
| 119 |
**Question:** {resp.get('question', 'N/A')}
|
| 120 |
**Answer:** {resp.get('response', 'N/A')}
|
| 121 |
**SalesBuddy Evaluation:** {resp.get('response_evaluation', 'N/A')}
|
| 122 |
+
**Hit/Miss:** {eval_output}
|
| 123 |
"""
|
| 124 |
if session_state.do_ragas_evaluation:
|
| 125 |
scores = session_state.scores[index]
|