aiplatformb.PredictRequest.Instances memerlukan jenis *structpb.Value (pustaka klien GCP golang; aiplatform)

王林
Lepaskan: 2024-02-10 15:00:09
ke hadapan
496 orang telah melayarinya

aiplatformb.PredictRequest.Instances 需要类型 *structpb.Value (GCP golang 客户端库;aiplatform)

editor php Apple AI Platform B ialah contoh permintaan ramalan yang kuat, yang memerlukan parameter jenis structpb.Value. Ini ialah pustaka klien bahasa Go untuk GCP (Google Cloud Platform), yang direka khas untuk aiplatform. Ia menyediakan pengguna dengan fungsi ramalan yang mudah untuk membuat ramalan model dengan cepat semasa proses pembangunan. Dengan menggunakan perpustakaan ini, pengguna boleh dengan mudah mengintegrasikan teknologi AI ke dalam aplikasi mereka dan memperoleh hasil ramalan yang tepat dan cekap.

Kandungan soalan

Saya cuba mengakses titik akhir Vertex AI saya daripada aplikasi web Golang (pelayan web/aplikasi berjalan pada cloud run + build). Aplikasi web mempunyai borang di mana saya menyerahkan butiran, soalan saya ialah, bagaimana saya boleh mendapatkan struktur yang diterima daripada aplikasi web dan menukarnya kepada jenis yang diterima dalam medan Contoh bagi struktur aiplatformb.PredictRequest?

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{},
Salin selepas log masuk

Saya cuba mengakses titik akhir ini secara luaran menggunakan Posmen dan permintaan di bawah mengesahkan titik tamat sedang aktif dan berjalan. Nilai ini adalah nilai yang dikemukakan oleh butiran

{
        "instances": [
            [
                29823,
                43.5,
                1
            ]
        ]
    }
Salin selepas log masuk

Penyelesaian

Selepas banyak percubaan menggunakan perpustakaan pelanggan dan merujuk dokumentasi, kaedah .Predict() [bertindak pada penunjuk kepada jenis PredictionClient] tidak membenarkan anda menentukan skema titik akhir model AI puncak. Jadi penyelesaiannya ialah menghantar permintaan melalui kaedah .RawPredict(), jadi permintaan JSON (structpb) bersiri hanya akan berfungsi jika skema yang dilaksanakan oleh perpustakaan klien GCP golang sepadan dengan model yang anda gunakan. Berikut ialah dokumentasi GCP untuk PredictionClient:

https://cloud.google.com/go/docs/reference/cloud.google.com/go/aiplatform/1.0.0/apiv1#cloud_google_com_go_aiplatform_apiv1_PredictionClient

Berikut ialah perpustakaan yang diperlukan untuk membentuk dan menggunakan kaedah RawPredict():

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"
)
Salin selepas log masuk

Ini kodnya:

// 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)
Salin selepas log masuk

Atas ialah kandungan terperinci aiplatformb.PredictRequest.Instances memerlukan jenis *structpb.Value (pustaka klien GCP golang; aiplatform). Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:stackoverflow.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!