Skip to main content
Vertex AI offers seven additional model providers through the Model-as-a-Service (MaaS) offering. All use the OpenAI-compatible schema with the :chatCompletions or :rawPredict endpoint.

Available providers

DeepSeek

Chinese AI lab known for reasoning models

AI21 Labs

Jamba models with long context windows

Kimi (Moonshot AI)

Chinese AI lab with instruction-tuned models

MiniMax

Chinese AI company with multimodal models

OpenAI OSS

Open-source models compatible with OpenAI format

Qwen (Alibaba)

Alibaba’s Qwen model family

ZAI (Zhipu AI)

GLM models from Zhipu AI

Provider constants

use Prism\Vertex\Enums\Vertex;

Vertex::DeepSeek  // 'vertex-deepseek'
Vertex::AI21      // 'vertex-ai21'
Vertex::Kimi      // 'vertex-kimi'
Vertex::MiniMax   // 'vertex-minimax'
Vertex::OpenAI    // 'vertex-openai'
Vertex::Qwen      // 'vertex-qwen'
Vertex::ZAI       // 'vertex-zai'

Configuration

All providers use the shared vertex configuration block:
'vertex' => [
    'project_id'  => env('VERTEX_PROJECT_ID'),
    'location'    => env('VERTEX_LOCATION', 'us-central1'),
    'credentials' => env('VERTEX_CREDENTIALS'), // path to service-account.json
],
Express mode is not supported for these providers. You must provide a project ID and location.

API schema

All providers use the OpenAI schema:
ProviderPublisherEndpointModel in Body
DeepSeekdeepseek:chatCompletionsYes
AI21ai21:rawPredictNo
Kimikimi:chatCompletionsYes
MiniMaxminimax:chatCompletionsYes
OpenAI OSSopenai:chatCompletionsYes
Qwenqwen:chatCompletionsYes
ZAIzaiorg:chatCompletionsYes
Providers using :chatCompletions include the model in the request body as {publisher}/{model}. Prism Vertex handles this automatically.

Example models

  • deepseek-v3-0324-maas
  • deepseek-v3.1-maas

Usage examples

DeepSeek

use Prism\Prism\Prism;
use Prism\Vertex\Enums\Vertex;

$response = Prism::text()
    ->using(Vertex::DeepSeek, 'deepseek-v3-0324-maas')
    ->withPrompt('Explain quantum computing in simple terms')
    ->asText();

echo $response->text;

AI21 Jamba

use Prism\Prism\Prism;
use Prism\Vertex\Enums\Vertex;

$response = Prism::text()
    ->using(Vertex::AI21, 'jamba-1.5-large@001')
    ->withPrompt('Summarize this long document...')
    ->asText();

echo $response->text;

Kimi

use Prism\Prism\Prism;
use Prism\Vertex\Enums\Vertex;

$response = Prism::text()
    ->using(Vertex::Kimi, 'kimi-k2-0711-maas')
    ->withPrompt('Write a product description')
    ->asText();

echo $response->text;

MiniMax

use Prism\Prism\Prism;
use Prism\Vertex\Enums\Vertex;

$response = Prism::text()
    ->using(Vertex::MiniMax, 'minimax-m1-40k-0709-maas')
    ->withPrompt('Generate creative content')
    ->asText();

echo $response->text;

OpenAI OSS

use Prism\Prism\Prism;
use Prism\Vertex\Enums\Vertex;

$response = Prism::text()
    ->using(Vertex::OpenAI, 'gpt-oss-4o-mini-maas')
    ->withPrompt('Answer this question')
    ->asText();

echo $response->text;

Qwen

use Prism\Prism\Prism;
use Prism\Vertex\Enums\Vertex;

$response = Prism::text()
    ->using(Vertex::Qwen, 'qwen2.5-72b-instruct-maas')
    ->withPrompt('Translate this text')
    ->asText();

echo $response->text;

ZAI (Zhipu AI)

use Prism\Prism\Prism;
use Prism\Vertex\Enums\Vertex;

$response = Prism::text()
    ->using(Vertex::ZAI, 'glm-4-plus-maas')
    ->withPrompt('Generate a response')
    ->asText();

echo $response->text;

Structured output

All providers support structured output via response_format: { type: "json_object" } combined with a schema instruction:
use Prism\Prism\Prism;
use Prism\Vertex\Enums\Vertex;
use Prism\Prism\Schema\ObjectSchema;
use Prism\Prism\Schema\StringSchema;

$schema = new ObjectSchema(
    name: 'person',
    description: 'Person details',
    properties: [
        new StringSchema('name', 'Full name'),
        new StringSchema('occupation', 'Job title'),
    ]
);

$response = Prism::structured()
    ->using(Vertex::DeepSeek, 'deepseek-v3-0324-maas')
    ->withSchema($schema)
    ->withPrompt('Extract person details from: John Smith is a software engineer')
    ->asStructured();

$data = $response->structured;

Custom JSON instruction

You can customize the JSON schema instruction for any provider:
$response = Prism::structured()
    ->using(Vertex::Qwen, 'qwen2.5-72b-instruct-maas')
    ->withSchema($schema)
    ->withProviderOptions([
        'jsonModeMessage' => 'Return JSON matching this schema: {schema}',
    ])
    ->withPrompt('Your prompt here')
    ->asStructured();

Capabilities

All providers support:

Text generation

Full support for text generation with multi-turn conversations

Structured output

Structured output via JSON mode with schema instruction

Limitations

  • No native embeddings support
  • Requires Standard mode (project ID + location)
  • Structured output relies on JSON mode + prompt instruction
  • Model availability may vary by region

Next steps

Structured output

Learn more about structured output

Configuration

See all configuration options

Build docs developers (and LLMs) love