in infra-as-code/modules/ingest-pipeline/cf-feedback-generator/lib.py [0:0]
def run(self):
"""Runs the functions to get the transcript, questions and instructions to prompt gemini
Returns:
dict: coaching feedback
"""
conversation = self.get_transcript()
original_file_name = conversation['labels']['original_file_name']
self.record_keeper = RecordKeeper(self.ingest_record_bucket_id, original_file_name, self.storage_client)
try:
transcript = conversation['transcript']['transcriptSegments']
qa_questions_dict = conversation['latestAnalysis']['analysisResult']['callAnalysisMetadata']['qaScorecardResults'][0]['qaAnswers']
print(qa_questions_dict)
questions_feedback, qa_questions_list = self.extract_questions(qa_questions_dict)
scorecard = self.get_qa_questions()
subset_questions = {key: scorecard[key] for key in qa_questions_list if key in scorecard}
response_schema = {
"type": "object",
"properties": {
"results": {
"type": "array",
"items": {
"type": "object",
"properties": {
"conversation_id": {"type": "string"},
"question_id": {"type": "string"},
"question": {"type": "string"},
"feedback": {"type": "string"}
},
"required": ["question_id", "question", "feedback"]
},
"required": ["items"]
}
},
"required": ["results"]
}
prompt = self.generate_prompt(transcript, subset_questions, questions_feedback)
coaching = self.generate_coaching_feedback(prompt, response_schema)
print(questions_feedback)
print(qa_questions_list)
print(coaching['results'])
for question_feedback in coaching['results']:
self.insert_feedback_to_bigquery(question_feedback)
self.record_keeper.replace_row(self.record_keeper.create_processed_record())
print(f"respuesta a generate_coaching_feedback {coaching}")
return coaching
except Exception as e:
self.log_error(str(e))
self.record_keeper.replace_row(
self.record_keeper.create_error_record(f'An error ocurred when using GenAI to generate coaching feedback: {str(e)}'))