@retry(stop=stop_after_attempt(3), wait=wait_exponential(multiplier=1, min=4, max=10)) def identify_relationships(self, structure: str, node_definitions: Dict) -> List[Tuple]: """Identify relationships with retry logic.""" try: response = self.chain.invoke({ "structure": structure, "node_definitions": str(node_definitions), "example": str(self.RELATIONSHIP_EXAMPLE) }) relationships = ast.literal_eval(response) if not self.validate_relationships(relationships): raise ValueError("Invalid relationship structure") self.logger.info(f"Identified {len(relationships)} relationships") return relationships