Skip to main content
This guide will help you make your first API call to Vertex AI using Prism Vertex.

Prerequisites

Basic text generation

Let’s start with a simple text generation example using Google Gemini:
use Prism\Prism\Prism;
use Prism\Vertex\Enums\Vertex;

$response = Prism::text()
    ->using(Vertex::Gemini, 'gemini-2.5-flash')
    ->withPrompt('Explain quantum computing in simple terms')
    ->asText();

echo $response->text;

Try different providers

Prism Vertex supports 11 different AI providers. Here are examples with the most popular ones:
use Prism\Prism\Prism;
use Prism\Vertex\Enums\Vertex;

$response = Prism::text()
    ->using(Vertex::Gemini, 'gemini-2.5-flash')
    ->withPrompt('Write a haiku about programming')
    ->asText();

Structured output

Generate JSON output that conforms to a schema:
use Prism\Prism\Prism;
use Prism\Vertex\Enums\Vertex;
use Prism\Prism\Schema\ObjectSchema;
use Prism\Prism\Schema\StringSchema;
use Prism\Prism\Schema\ArraySchema;

$schema = new ObjectSchema(
    name: 'languages',
    description: 'Top programming languages',
    properties: [
        new ArraySchema(
            'languages',
            'List of programming languages',
            items: new ObjectSchema(
                name: 'language',
                description: 'Programming language details',
                properties: [
                    new StringSchema('name', 'The language name'),
                    new StringSchema('popularity', 'Popularity description'),
                ]
            )
        )
    ]
);

$response = Prism::structured()
    ->using(Vertex::Gemini, 'gemini-2.5-flash')
    ->withSchema($schema)
    ->withPrompt('List the top 3 programming languages')
    ->asStructured();

$data = $response->structured;
// $data is now a PHP array matching your schema

Generate embeddings

Create vector embeddings for semantic search and similarity:
use Prism\Prism\Prism;
use Prism\Vertex\Enums\Vertex;

$response = Prism::embeddings()
    ->using(Vertex::Gemini, 'text-embedding-005')
    ->fromInput('The sky is blue')
    ->asEmbeddings();

$embeddings = $response->embeddings;
// $embeddings is an array of floating-point numbers

Complete Laravel example

Here’s a full example using Prism Vertex in a Laravel controller:
<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Prism\Prism\Prism;
use Prism\Vertex\Enums\Vertex;

class AIController extends Controller
{
    public function generateText(Request $request)
    {
        $prompt = $request->input('prompt');
        
        $response = Prism::text()
            ->using(Vertex::Gemini, 'gemini-2.5-flash')
            ->withPrompt($prompt)
            ->asText();
        
        return response()->json([
            'text' => $response->text,
            'usage' => [
                'input_tokens' => $response->usage->inputTokens,
                'output_tokens' => $response->usage->outputTokens,
            ],
        ]);
    }
}

Available providers

ProviderConstantExample Model
Google GeminiVertex::Geminigemini-2.5-flash
Anthropic ClaudeVertex::Anthropicclaude-3-5-sonnet@20241022
Mistral AIVertex::Mistralmistral-small-2503
Meta LlamaVertex::Metallama-4-scout-17b-16e-instruct-maas
DeepSeekVertex::DeepSeekdeepseek-v3-0324-maas
AI21 LabsVertex::AI21jamba-1.5-large@001
KimiVertex::Kimikimi-k2-0711-maas
MiniMaxVertex::MiniMaxminimax-m1-40k-0709-maas
OpenAI OSSVertex::OpenAIgpt-oss-4o-mini-maas
QwenVertex::Qwenqwen2.5-72b-instruct-maas
ZAIVertex::ZAIglm-4-plus-maas
Express mode (API key only) supports Google Gemini models only. Using partner providers in Express mode will throw an exception.
Streaming is not yet supported. This feature is planned for a future release.

Next steps

Configuration

Learn about Standard mode and Express mode

Text generation

Explore text generation features

Structured output

Generate JSON with schemas

Providers

View all supported providers

Build docs developers (and LLMs) love