php-Editor Apple AI Platform B ist eine leistungsstarke Vorhersageanforderungsinstanz, die Parameter vom Typ structpb.Value erfordert. Dies ist eine Go-Sprach-Client-Bibliothek für GCP (Google Cloud Platform), die speziell für aiplatform entwickelt wurde. Es bietet Benutzern praktische Vorhersagefunktionen, um während des Entwicklungsprozesses schnell Modellvorhersagen zu treffen. Mithilfe dieser Bibliothek können Benutzer KI-Technologie problemlos in ihre Anwendungen integrieren und genaue und effiziente Vorhersageergebnisse erhalten.
Ich versuche, über eine Golang-Webanwendung (Webserver/Anwendung, die auf Cloud Run + Build läuft) auf meinen Vertex AI-Endpunkt zuzugreifen. Die Webanwendung verfügt über ein Formular, in dem ich Details übermittle. Meine Frage lautet: Wie kann ich die von der Webanwendung erhaltene Struktur abrufen und in den Typ konvertieren, der im Feld „Instanzen“ der Struktur aiplatformb.PredictRequest akzeptiert wird?
type Submission struct { MonthlyIncome int Age int Passport int } var Details = Submission{} Ctx := context.Background() C, err := aiplatform.NewPredictionClient(Ctx) if err != nil { log.Fatalf("Error 1: %v", err) } defer C.Close() reqs := &aiplatformpb.PredictRequest{ Endpoint: "{{my endpoint that is formatted correctly}", Instances: []*structpb.Value{},
Ich habe versucht, mit Postman extern auf diesen Endpunkt zuzugreifen, und die folgende Anfrage bestätigt, dass der Endpunkt betriebsbereit ist. Bei diesen Werten handelt es sich um die von den Details übermittelten Werte
{ "instances": [ [ 29823, 43.5, 1 ] ] }
Nach vielen Versuchen, die Client-Bibliothek zu verwenden und die Dokumentation zu konsultieren, erlaubt Ihnen die .Predict()-Methode [die auf einen Zeiger auf einen PredictionClient-Typ wirkt] nicht, das Schema des Vertex-AI-Modellendpunkts anzugeben. Die Lösung besteht also darin, die Anfrage über die Methode .RawPredict() zu senden, sodass die serialisierte JSON-Anfrage (structpb) nur funktioniert, wenn das von der Golang-GCP-Clientbibliothek implementierte Schema mit Ihrem bereitgestellten Modell übereinstimmt. Hier ist die GCP-Dokumentation für PredictionClient:
Die folgenden Bibliotheken sind zum Erstellen und Verwenden der RawPredict()-Methode erforderlich:
import ( "context" "fmt" "log" "reflect" "strconv" aiplatform "cloud.google.com/go/aiplatform/apiv1" "cloud.google.com/go/aiplatform/apiv1/aiplatformpb" "google.golang.org/api/option" "google.golang.org/genproto/googleapis/api/httpbody" )
Das ist der Code:
// Get the form values from the web applicaiton income, _ := strconv.Atoi(r.FormValue("MonthlyIncome")) age, _ := strconv.Atoi(r.FormValue("Age")) passport, _ := strconv.Atoi(r.FormValue("Passport")) //create our struct from the form values Details = Submission{ MonthlyIncome: income, Age: age, Passport: passport, } v := reflect.ValueOf(Details) body = "" for i := 0; i < v.NumField(); i++ { body = body + fmt.Sprintf("%v", v.Field(i).Interface()) + "," } if last := len(body) - 1; last >= 0 && body[last] == ',' { body = body[:last] } Requestb = pre + body + post log.Println("The request string was:", Requestb) // structure the body of the raw request Raw := &httpbody.HttpBody{} Raw.Data = []byte(Requestb) // indentify the post request using the raw body and the endpoint reqs := &aiplatformpb.RawPredictRequest{ // Note GCP Project ID, Region, and endpoint ID Endpoint: "projects/<PROJECT-HERE>/locations/<REGDION-HERE>/endpoints/<ENDPOINT-ID-HERE>", HttpBody: Raw, } // CTX gets the credentials of the application service account - NOTE THE REGION Ctx := context.Background() C, err := aiplatform.NewPredictionClient(Ctx, option.WithEndpoint("<REGION-HERE>-aiplatform.googleapis.com:443")) if err != nil { log.Println("Error 1, connectrion:", err) } defer C.Close() // gets the response using the credentials of the application service account resp, err := C.RawPredict(Ctx, reqs) if err != nil { log.Fatalf("Error 2, response: %v", err) } log.Println(resp) RespString := fmt.Sprintf("%+v", resp) log.Println("The Response String was:", resp)
Das obige ist der detaillierte Inhalt vonaiplatformb.PredictRequest.Instances erfordert den Typ *structpb.Value (GCP Golang-Client-Bibliothek; aiplatform). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!