Memanggil API MaaS untuk model terbuka

Banyak model terbuka di Vertex AI menawarkan model terkelola sepenuhnya dan serverless sebagai API menggunakan Chat Completions API Vertex AI. Untuk model ini, Anda tidak perlu menyediakan atau mengelola infrastruktur.

Anda dapat melakukan streaming respons untuk mengurangi persepsi latensi pengguna akhir. Respons yang di-streaming menggunakan peristiwa yang dikirim server (SSE) untuk mengalirkan respons secara bertahap.

Halaman ini menunjukkan cara melakukan panggilan streaming dan non-streaming ke model terbuka yang mendukung OpenAI Chat Completions API. Untuk pertimbangan khusus Llama, lihat Meminta prediksi Llama.

Sebelum memulai

Untuk menggunakan model terbuka dengan Vertex AI, Anda harus melakukan langkah-langkah berikut. Vertex AI API (aiplatform.googleapis.com) harus diaktifkan untuk menggunakan Vertex AI. Jika sudah memiliki project dengan Vertex AI API yang diaktifkan, Anda dapat menggunakan project tersebut, bukan membuat project baru.

  1. Sign in to your Google Cloud account. If you're new to Google Cloud, create an account to evaluate how our products perform in real-world scenarios. New customers also get $300 in free credits to run, test, and deploy workloads.
  2. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  3. Verify that billing is enabled for your Google Cloud project.

  4. Enable the Vertex AI API.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the API

  5. In the Google Cloud console, on the project selector page, select or create a Google Cloud project.

    Roles required to select or create a project

    • Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
    • Create a project: To create a project, you need the Project Creator (roles/resourcemanager.projectCreator), which contains the resourcemanager.projects.create permission. Learn how to grant roles.

    Go to project selector

  6. Verify that billing is enabled for your Google Cloud project.

  7. Enable the Vertex AI API.

    Roles required to enable APIs

    To enable APIs, you need the Service Usage Admin IAM role (roles/serviceusage.serviceUsageAdmin), which contains the serviceusage.services.enable permission. Learn how to grant roles.

    Enable the API

  8. Buka kartu model Model Garden untuk model yang ingin Anda gunakan, lalu klik Aktifkan untuk mengaktifkan penggunaan model di project Anda.

    Buka Model Garden

  9. Melakukan panggilan streaming ke model terbuka

    Contoh berikut melakukan panggilan streaming ke model terbuka:

    Python

    Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Python di Panduan memulai Vertex AI menggunakan library klien. Untuk mengetahui informasi selengkapnya, lihat Dokumentasi referensi API Python Vertex AI.

    Untuk melakukan autentikasi ke Vertex AI, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

    Sebelum menjalankan contoh ini, pastikan untuk menetapkan variabel lingkungan OPENAI_BASE_URL. Untuk mengetahui informasi selengkapnya, lihat Autentikasi dan kredensial.

    from openai import OpenAI
    client = OpenAI()
    
    stream = client.chat.completions.create(
        model="MODEL",
        messages=[{"role": "ROLE", "content": "CONTENT"}],
        max_tokens=MAX_OUTPUT_TOKENS,
        stream=True,
    )
    for chunk in stream:
        print(chunk.choices[0].delta.content or "", end="")
    • MODEL: Nama model yang ingin Anda gunakan, misalnya deepseek-ai/deepseek-v3.1-maas.
    • ROLE: Peran yang terkait dengan pesan. Anda dapat menentukan user atau assistant. Pesan pertama harus menggunakan peran user. Model beroperasi dengan giliran user dan assistant yang bergantian. Jika pesan terakhir menggunakan peran assistant, maka konten respons akan langsung dilanjutkan dari konten dalam pesan tersebut. Anda dapat menggunakan ini untuk membatasi bagian respons model.
    • CONTENT: Konten, seperti teks, dari pesan user atau assistant.
    • MAX_OUTPUT_TOKENS: Jumlah maksimum token yang dapat dibuat dalam respons. Token terdiri dari sekitar empat karakter. 100 token setara dengan sekitar 60-80 kata.

      Tentukan nilai yang lebih rendah untuk respons yang lebih singkat dan nilai yang lebih tinggi untuk potensi respons yang lebih panjang.

    REST

    Setelah Anda menyiapkan lingkungan, Anda dapat menggunakan REST untuk menguji perintah teks. Contoh berikut mengirim permintaan ke endpoint model penayang.

    Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:

    • LOCATION: Region yang mendukung model terbuka.
    • MODEL: Nama model yang ingin Anda gunakan, misalnya deepseek-ai/deepseek-v2.
    • ROLE: Peran yang terkait dengan pesan. Anda dapat menentukan user atau assistant. Pesan pertama harus menggunakan peran user. Model beroperasi dengan giliran user dan assistant yang bergantian. Jika pesan terakhir menggunakan peran assistant, maka konten respons akan langsung dilanjutkan dari konten dalam pesan tersebut. Anda dapat menggunakan ini untuk membatasi bagian respons model.
    • CONTENT: Konten, seperti teks, dari pesan user atau assistant.
    • MAX_OUTPUT_TOKENS: Jumlah maksimum token yang dapat dibuat dalam respons. Token terdiri dari sekitar empat karakter. 100 token setara dengan sekitar 60-80 kata.

      Tentukan nilai yang lebih rendah untuk respons yang lebih singkat dan nilai yang lebih tinggi untuk potensi respons yang lebih panjang.

    • STREAM: Boolean yang menentukan apakah respons di-streaming atau tidak. Streaming respons Anda untuk mengurangi persepsi latensi penggunaan akhir. Setel ke true untuk melakukan streaming respons dan false untuk menampilkan respons sekaligus.

    Metode HTTP dan URL:

    POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/endpoints/openapi/chat/completions

    Isi JSON permintaan:

    {
      "model": "MODEL",
      "messages": [
        {
          "role": "ROLE",
          "content": "CONTENT"
        }
      ],
      "max_tokens": MAX_OUTPUT_TOKENS,
      "stream": true
    }
    

    Untuk mengirim permintaan Anda, pilih salah satu opsi berikut:

    curl

    Simpan isi permintaan dalam file bernama request.json, dan jalankan perintah berikut:

    curl -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json; charset=utf-8" \
    -d @request.json \
    "https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/endpoints/openapi/chat/completions"

    PowerShell

    Simpan isi permintaan dalam file bernama request.json, dan jalankan perintah berikut:

    $cred = gcloud auth print-access-token
    $headers = @{ "Authorization" = "Bearer $cred" }

    Invoke-WebRequest `
    -Method POST `
    -Headers $headers `
    -ContentType: "application/json; charset=utf-8" `
    -InFile request.json `
    -Uri "https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/endpoints/openapi/chat/completions" | Select-Object -Expand Content

    Anda akan melihat respons JSON yang mirip seperti berikut:

    Melakukan panggilan non-streaming ke model terbuka

    Contoh berikut melakukan panggilan non-streaming ke model terbuka:

    Python

    Sebelum mencoba contoh ini, ikuti petunjuk penyiapan Python di Panduan memulai Vertex AI menggunakan library klien. Untuk mengetahui informasi selengkapnya, lihat Dokumentasi referensi API Python Vertex AI.

    Untuk melakukan autentikasi ke Vertex AI, siapkan Kredensial Default Aplikasi. Untuk mengetahui informasi selengkapnya, lihat Menyiapkan autentikasi untuk lingkungan pengembangan lokal.

    Sebelum menjalankan contoh ini, pastikan untuk menetapkan variabel lingkungan OPENAI_BASE_URL. Untuk mengetahui informasi selengkapnya, lihat Autentikasi dan kredensial.

    from openai import OpenAI
    client = OpenAI()
    
    completion = client.chat.completions.create(
        model="MODEL",
        messages=[{"role": "ROLE", "content": "CONTENT"}],
        max_tokens=MAX_OUTPUT_TOKENS,
        stream=False,
    )
    print(completion.choices[0].message)
    • MODEL: Nama model yang ingin Anda gunakan, misalnya deepseek-ai/deepseek-v3.1-maas.
    • ROLE: Peran yang terkait dengan pesan. Anda dapat menentukan user atau assistant. Pesan pertama harus menggunakan peran user. Model beroperasi dengan giliran user dan assistant yang bergantian. Jika pesan terakhir menggunakan peran assistant, maka konten respons akan langsung dilanjutkan dari konten dalam pesan tersebut. Anda dapat menggunakan ini untuk membatasi bagian respons model.
    • CONTENT: Konten, seperti teks, dari pesan user atau assistant.
    • MAX_OUTPUT_TOKENS: Jumlah maksimum token yang dapat dibuat dalam respons. Token terdiri dari sekitar empat karakter. 100 token setara dengan sekitar 60-80 kata.

      Tentukan nilai yang lebih rendah untuk respons yang lebih singkat dan nilai yang lebih tinggi untuk potensi respons yang lebih panjang.

    REST

    Setelah Anda menyiapkan lingkungan, Anda dapat menggunakan REST untuk menguji perintah teks. Contoh berikut mengirim permintaan ke endpoint model penayang.

    Sebelum menggunakan salah satu data permintaan, lakukan penggantian berikut:

    • LOCATION: Region yang mendukung model terbuka.
    • MODEL: Nama model yang ingin Anda gunakan, misalnya deepseek-ai/deepseek-v2.
    • ROLE: Peran yang terkait dengan pesan. Anda dapat menentukan user atau assistant. Pesan pertama harus menggunakan peran user. Model beroperasi dengan giliran user dan assistant yang bergantian. Jika pesan terakhir menggunakan peran assistant, maka konten respons akan langsung dilanjutkan dari konten dalam pesan tersebut. Anda dapat menggunakan ini untuk membatasi bagian respons model.
    • CONTENT: Konten, seperti teks, dari pesan user atau assistant.
    • MAX_OUTPUT_TOKENS: Jumlah maksimum token yang dapat dibuat dalam respons. Token terdiri dari sekitar empat karakter. 100 token setara dengan sekitar 60-80 kata.

      Tentukan nilai yang lebih rendah untuk respons yang lebih singkat dan nilai yang lebih tinggi untuk potensi respons yang lebih panjang.

    • STREAM: Boolean yang menentukan apakah respons di-streaming atau tidak. Streaming respons Anda untuk mengurangi persepsi latensi penggunaan akhir. Setel ke true untuk melakukan streaming respons dan false untuk menampilkan respons sekaligus.

    Metode HTTP dan URL:

    POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/endpoints/openapi/chat/completions

    Isi JSON permintaan:

    {
      "model": "MODEL",
      "messages": [
        {
          "role": "ROLE",
          "content": "CONTENT"
        }
      ],
      "max_tokens": MAX_OUTPUT_TOKENS,
      "stream": false
    }
    

    Untuk mengirim permintaan Anda, pilih salah satu opsi berikut:

    curl

    Simpan isi permintaan dalam file bernama request.json, dan jalankan perintah berikut:

    curl -X POST \
    -H "Authorization: Bearer $(gcloud auth print-access-token)" \
    -H "Content-Type: application/json; charset=utf-8" \
    -d @request.json \
    "https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/endpoints/openapi/chat/completions"

    PowerShell

    Simpan isi permintaan dalam file bernama request.json, dan jalankan perintah berikut:

    $cred = gcloud auth print-access-token
    $headers = @{ "Authorization" = "Bearer $cred" }

    Invoke-WebRequest `
    -Method POST `
    -Headers $headers `
    -ContentType: "application/json; charset=utf-8" `
    -InFile request.json `
    -Uri "https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/endpoints/openapi/chat/completions" | Select-Object -Expand Content

    Anda akan melihat respons JSON yang mirip seperti berikut:

    Endpoint regional dan global

    Untuk endpoint regional, permintaan ditayangkan dari region yang Anda tentukan. Jika Anda memiliki persyaratan residensi data atau jika model tidak mendukung endpoint global, gunakan endpoint regional.

    Saat Anda menggunakan endpoint global, Google dapat memproses dan menayangkan permintaan Anda dari region mana pun yang didukung oleh model yang Anda gunakan. Hal ini dapat menyebabkan latensi yang lebih tinggi dalam beberapa kasus. Endpoint global membantu meningkatkan ketersediaan secara keseluruhan dan membantu mengurangi error.

    Tidak ada perbedaan harga dengan endpoint regional saat Anda menggunakan endpoint global. Namun, kuota endpoint global dan kemampuan model yang didukung dapat berbeda dengan endpoint regional. Untuk mengetahui informasi selengkapnya, lihat halaman model pihak ketiga terkait.

    Menentukan endpoint global

    Untuk menggunakan endpoint global, tetapkan region ke global.

    Misalnya, URL permintaan untuk perintah curl menggunakan format berikut: https://aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/global/endpoints/openapi

    Untuk Vertex AI SDK, endpoint regional adalah defaultnya. Tetapkan region ke GLOBAL untuk menggunakan endpoint global.

    Membatasi penggunaan endpoint API global

    Untuk membantu menerapkan penggunaan endpoint regional, gunakan batasan kebijakan organisasi constraints/gcp.restrictEndpointUsage untuk memblokir permintaan ke endpoint API global. Untuk mengetahui informasi selengkapnya, lihat Membatasi penggunaan endpoint.

    Langkah berikutnya