def run()

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)}'))