Async example to Generate content with Multimodal AI Model

The code sample demonstrates how to use Generative AI Models using async feature

Code sample

Go

Before trying this sample, follow the Go setup instructions in the Vertex AI quickstart using client libraries. For more information, see the Vertex AI Go API reference documentation.

To authenticate to Vertex AI, set up Application Default Credentials. For more information, see Set up authentication for a local development environment.

import (
	"context"
	"fmt"
	"io"

	"google.golang.org/genai"
)

// generateWithTextAsyncStream shows how to stream a text generation response.
func generateWithTextAsyncStream(w io.Writer) error {
	ctx := context.Background()

	client, err := genai.NewClient(ctx, &genai.ClientConfig{
		HTTPOptions: genai.HTTPOptions{APIVersion: "v1"},
	})
	if err != nil {
		return fmt.Errorf("failed to create genai client: %w", err)
	}

	modelName := "gemini-2.5-flash"

	contents := []*genai.Content{
		{
			Role: "user",
			Parts: []*genai.Part{
				{Text: "Compose a song about the adventures of a time-traveling squirrel."},
			},
		},
	}

	for resp, err := range client.Models.GenerateContentStream(ctx, modelName, contents, &genai.GenerateContentConfig{
		ResponseModalities: []string{"TEXT"}}) {
		if err != nil {
			return fmt.Errorf("failed to generate content: %w", err)
		}

		chunk := resp.Text()

		fmt.Fprintln(w, chunk)
	}

	// Example output (streamed piece by piece):
	// (Verse 1)
	// Pip was a squirrel, a regular chap,
	//Burying acorns, enjoying a nap.
	//One sunny morning, beneath the old pine,
	//He dug up a thing, incredibly fine.
	//A tiny contraption, with gears and a gleam,
	//It pulsed with a power, a
	// time-traveling dream.
	//He nudged it with curiosity, twitching his nose,
	//And *poof!* went the world, as everyone knows...
	//
	//(Chorus)
	//Oh, Pip the squirrel, with his bushy brown tail,
	//Through the time stream he'd often sail!
	// ...

	return nil
}

Java

Before trying this sample, follow the Java setup instructions in the Vertex AI quickstart using client libraries. For more information, see the Vertex AI Java API reference documentation.

To authenticate to Vertex AI, set up Application Default Credentials. For more information, see Set up authentication for a local development environment.


import com.google.genai.Client;
import com.google.genai.types.GenerateContentResponse;
import com.google.genai.types.HttpOptions;
import java.util.concurrent.CompletableFuture;

public class TextGenerationAsyncWithText {

  public static void main(String[] args) {
    // TODO(developer): Replace these variables before running the sample.
    String modelId = "gemini-2.5-flash";
    generateContent(modelId);
  }

  // Generates text asynchronously with text input
  public static String generateContent(String modelId) {
    // Initialize client that will be used to send requests. This client only needs to be created
    // once, and can be reused for multiple requests.
    try (Client client =
        Client.builder()
            .location("global")
            .vertexAI(true)
            .httpOptions(HttpOptions.builder().apiVersion("v1").build())
            .build()) {

      CompletableFuture<GenerateContentResponse> asyncResponse =
          client.async.models.generateContent(
              modelId, "Compose a song about the adventures of a time-traveling squirrel.", null);

      String response = asyncResponse.join().text();
      System.out.print(response);
      // Example response:
      // (Verse 1)
      // In an oak tree, so leafy and green,
      // Lived Squeaky the squirrel, a critter unseen.
      // Just burying nuts, a routine so grand,
      // ...

      return response;
    }
  }
}

Python

Before trying this sample, follow the Python setup instructions in the Vertex AI quickstart using client libraries. For more information, see the Vertex AI Python API reference documentation.

To authenticate to Vertex AI, set up Application Default Credentials. For more information, see Set up authentication for a local development environment.

from google import genai
from google.genai.types import GenerateContentConfig, HttpOptions

client = genai.Client(http_options=HttpOptions(api_version="v1"))
model_id = "gemini-2.5-flash"

response = await client.aio.models.generate_content(
    model=model_id,
    contents="Compose a song about the adventures of a time-traveling squirrel.",
    config=GenerateContentConfig(
        response_modalities=["TEXT"],
    ),
)

print(response.text)
# Example response:
# (Verse 1)
# Sammy the squirrel, a furry little friend
# Had a knack for adventure, beyond all comprehend

What's next

To search and filter code samples for other Google Cloud products, see the Google Cloud sample browser.