Add processing logic using Cloud Run functions

With Cloud Run functions you can further process output data from Vertex AI custom-trained model and BigQuery app nodes. You can use these integrations with app nodes in the following ways:

  • Vertex AI custom modelnode: Use Cloud Run functions to post-process prediction results from the original Vertex AI custom model.
  • BigQuerynode: Use Cloud Run functions to generate customized BigQuery rows with the original annotations.

All the Cloud Run functions you use with App Platform must meet the following requirements:

API definitions: AppPlatformMetadata , AppPlatformCloudFunctionRequest , AppPlatformCloudFunctionResponse

 // 
  
 Message 
  
 of 
  
 essential 
  
 metadata 
  
 of 
  
 App 
  
 Platform 
 . 
 // 
  
 This 
  
 message 
  
 is 
  
 usually 
  
 attached 
  
 to 
  
 a 
  
 certain 
  
 model 
  
 output 
  
 annotation 
  
 for 
 // 
  
 customer 
  
 to 
  
 identify 
  
 the 
  
 source 
  
 of 
  
 the 
  
 data 
 . 
 message 
  
 AppPlatformMetadata 
  
 { 
  
 // 
  
 The 
  
 application 
  
 resource 
  
 name 
 . 
  
 string 
  
 application 
  
 = 
  
 1 
 ; 
  
 // 
  
 The 
  
 instance 
  
 resource 
  
 id 
 . 
  
 Instance 
  
 is 
  
 the 
  
 nested 
  
 resource 
  
 of 
  
 application 
  
 // 
  
 under 
  
 collection 
  
 'instances' 
 . 
  
 string 
  
 instance_id 
  
 = 
  
 2 
 ; 
  
 // 
  
 The 
  
 node 
  
 name 
  
 of 
  
 the 
  
 application 
  
 graph 
 . 
  
 string 
  
 node 
  
 = 
  
 3 
 ; 
  
 // 
  
 The 
  
 referred 
  
 model 
  
 resource 
  
 name 
  
 of 
  
 the 
  
 application 
  
 node 
 . 
  
 string 
  
 processor 
  
 = 
  
 4 
 ; 
 } 
 // 
  
 For 
  
 any 
  
 Cloud 
  
 Run 
  
 function 
  
 based 
  
 customer 
  
 processing 
  
 logic 
 , 
  
 customer 
 's cloud 
 // 
  
 function 
  
 is 
  
 expected 
  
 to 
  
 receive 
  
 AppPlatformCloudFunctionRequest 
  
 as 
  
 request 
 // 
  
 and 
  
 send 
  
 back 
  
 AppPlatformCloudFunctionResponse 
  
 as 
  
 response 
 . 
 // 
  
 Message 
  
 of 
  
 request 
  
 from 
  
 AppPlatform 
  
 to 
  
 Cloud 
  
 Run 
  
 functions 
 . 
 message 
  
 AppPlatformCloudFunctionRequest 
  
 { 
  
 // 
  
 The 
  
 metadata 
  
 of 
  
 the 
  
 AppPlatform 
  
 for 
  
 customer 
  
 to 
  
 identify 
  
 the 
  
 source 
  
 of 
  
 the 
  
 // 
  
 payload 
 . 
  
 AppPlatformMetadata 
  
 app_platform_metadata 
  
 = 
  
 1 
 ; 
  
 // 
  
 A 
  
 general 
  
 annotation 
  
 message 
  
 that 
  
 uses 
  
 struct 
  
 format 
  
 to 
  
 represent 
  
 different 
  
 // 
  
 concrete 
  
 annotation 
  
 protobufs 
 . 
  
 message 
  
 StructedInputAnnotation 
  
 { 
  
 // 
  
 The 
  
 ingestion 
  
 time 
  
 of 
  
 the 
  
 current 
  
 annotation 
 . 
  
 int64 
  
 ingestion_time_micros 
  
 = 
  
 1 
 ; 
  
 // 
  
 The 
  
 struct 
  
 format 
  
 of 
  
 the 
  
 actual 
  
 annotation 
 . 
  
 protobuf 
 . 
 Struct 
  
 annotation 
  
 = 
  
 2 
 ; 
  
 } 
  
 // 
  
 The 
  
 actual 
  
 annotations 
  
 to 
  
 be 
  
 processed 
  
 by 
  
 the 
  
 customized 
  
 Cloud 
  
 Run 
  
 function 
 . 
  
 repeated 
  
 StructedInputAnnotation 
  
 annotations 
  
 = 
  
 2 
 ; 
 } 
 // 
  
 Message 
  
 of 
  
 the 
  
 response 
  
 from 
  
 customer 
 's Cloud Run function to AppPlatform. 
 message 
  
 AppPlatformCloudFunctionResponse 
  
 { 
  
 // 
  
 A 
  
 general 
  
 annotation 
  
 message 
  
 that 
  
 uses 
  
 struct 
  
 format 
  
 to 
  
 represent 
  
 different 
  
 // 
  
 concrete 
  
 annotation 
  
 protobufs 
 . 
  
 message 
  
 StructedOutputAnnotation 
  
 { 
  
 // 
  
 The 
  
 struct 
  
 format 
  
 of 
  
 the 
  
 actual 
  
 annotation 
 . 
  
 protobuf 
 . 
 Struct 
  
 annotation 
  
 = 
  
 1 
 ; 
  
 } 
  
 // 
  
 The 
  
 modified 
  
 annotations 
  
 that 
  
 is 
  
 returned 
  
 back 
  
 to 
  
 AppPlatform 
 . 
  
 // 
  
 If 
  
 the 
  
 annotations 
  
 fields 
  
 are 
  
 empty 
 , 
  
 then 
  
 those 
  
 annotations 
  
 will 
  
 be 
  
 dropped 
  
 // 
  
 by 
  
 AppPlatform 
 . 
  
 repeated 
  
 StructedOutputAnnotation 
  
 annotations 
  
 = 
  
 2 
 ; 
 } 

Sample usage

Use the following code to post-process Vertex AI custom-trained model annotations and replace annotations with a constant key-value pair.

Python

  import 
  
 functions_framework 
 from 
  
 flask 
  
 import 
 jsonify 
 @functions_framework 
 . 
 http 
 def 
  
 hello_http 
 ( 
 request 
 ): 
 request_json 
 = 
 request 
 . 
 get_json 
 ( 
 silent 
 = 
 True 
 ) 
 request_args 
 = 
 request 
 . 
 args 
 if 
 request_json 
 and 
 'annotations' 
 in 
 request_json 
 : 
 annotations 
 = 
 [] 
 for 
 ele 
 in 
 request_json 
 [ 
 'annotations' 
 ]: 
 for 
 k 
 , 
 v 
 in 
 ele 
 . 
 items 
 (): 
 if 
 k 
 == 
 "annotation" 
 : 
 if 
 "predictions" 
 in 
 v 
 : 
 # Replace the annotation. 
 v 
 [ 
 "predictions" 
 ][ 
 0 
 ] 
 = 
 { 
 "user" 
 : 
 "googler" 
 } 
 annotations 
 . 
 append 
 ({ 
 "annotation" 
 : 
 v 
 }) 
 else 
 : 
 annotations 
 = 
 'Failure' 
 return 
 jsonify 
 ( 
 annotations 
 = 
 annotations 
 ) 
 
Create a Mobile Website
View Site in Mobile | Classic
Share by: