CtrlK
BlogDocsLog inGet started
Tessl Logo

tessl/maven-dev-langchain4j--langchain4j-vertex-ai

LangChain4j integration for Google Vertex AI models including chat, language, embedding, image, and scoring capabilities

Pending

Quality

Pending

Does it follow best practices?

Impact

Pending

No eval scenarios have been run

Overview
Eval results
Files

examples.mddocs/models/chat/

Chat Model Examples

Basic Chat

import dev.langchain4j.model.vertexai.VertexAiChatModel;
import dev.langchain4j.data.message.UserMessage;
import dev.langchain4j.model.chat.request.ChatRequest;
import dev.langchain4j.model.chat.response.ChatResponse;

VertexAiChatModel model = VertexAiChatModel.builder()
    .endpoint("https://us-central1-aiplatform.googleapis.com/v1/")
    .project("your-project-id")
    .location("us-central1")
    .publisher("google")
    .modelName("chat-bison@001")
    .build();

ChatRequest request = ChatRequest.builder()
    .messages(UserMessage.from("What is artificial intelligence?"))
    .build();

ChatResponse response = model.chat(request);
System.out.println(response.aiMessage().text());

With Generation Parameters

VertexAiChatModel model = VertexAiChatModel.builder()
    .endpoint("https://us-central1-aiplatform.googleapis.com/v1/")
    .project("your-project-id")
    .location("us-central1")
    .publisher("google")
    .modelName("chat-bison@001")
    .temperature(0.7)              // Controls randomness (0.0-1.0)
    .maxOutputTokens(500)          // Maximum response length
    .topK(40)                      // Top-K sampling
    .topP(0.95)                    // Nucleus sampling
    .maxRetries(3)                 // Retry attempts on failure
    .build();

Multi-Turn Conversation

import dev.langchain4j.data.message.ChatMessage;
import dev.langchain4j.data.message.UserMessage;
import dev.langchain4j.data.message.AiMessage;
import java.util.ArrayList;
import java.util.List;

List<ChatMessage> messages = new ArrayList<>();
messages.add(UserMessage.from("What is Java?"));
messages.add(AiMessage.from("Java is a high-level, object-oriented programming language."));
messages.add(UserMessage.from("What are its main features?"));

ChatRequest request = ChatRequest.builder()
    .messages(messages)
    .build();

ChatResponse response = model.chat(request);
System.out.println(response.aiMessage().text());

Conversation Loop

import java.util.Scanner;

List<ChatMessage> conversation = new ArrayList<>();
Scanner scanner = new Scanner(System.in);

while (true) {
    System.out.print("You: ");
    String userInput = scanner.nextLine();

    if (userInput.equalsIgnoreCase("exit")) {
        break;
    }

    conversation.add(UserMessage.from(userInput));

    ChatRequest request = ChatRequest.builder()
        .messages(conversation)
        .build();

    ChatResponse response = model.chat(request);
    String aiResponse = response.aiMessage().text();

    conversation.add(AiMessage.from(aiResponse));
    System.out.println("AI: " + aiResponse);
}

With Custom Credentials

import com.google.auth.oauth2.GoogleCredentials;
import java.io.FileInputStream;

GoogleCredentials credentials = GoogleCredentials.fromStream(
    new FileInputStream("/path/to/service-account.json")
);

VertexAiChatModel model = VertexAiChatModel.builder()
    .endpoint("https://us-central1-aiplatform.googleapis.com/v1/")
    .project("your-project-id")
    .location("us-central1")
    .publisher("google")
    .modelName("chat-bison@001")
    .credentials(credentials)
    .build();

Temperature Effects

Deterministic (temperature = 0.0)

VertexAiChatModel deterministicModel = VertexAiChatModel.builder()
    .endpoint("https://us-central1-aiplatform.googleapis.com/v1/")
    .project("your-project-id")
    .location("us-central1")
    .publisher("google")
    .modelName("chat-bison@001")
    .temperature(0.0)  // Most deterministic, focused
    .build();

Creative (temperature = 1.0)

VertexAiChatModel creativeModel = VertexAiChatModel.builder()
    .endpoint("https://us-central1-aiplatform.googleapis.com/v1/")
    .project("your-project-id")
    .location("us-central1")
    .publisher("google")
    .modelName("chat-bison@001")
    .temperature(1.0)  // Most creative, varied
    .build();

Balanced (temperature = 0.7)

VertexAiChatModel balancedModel = VertexAiChatModel.builder()
    .endpoint("https://us-central1-aiplatform.googleapis.com/v1/")
    .project("your-project-id")
    .location("us-central1")
    .publisher("google")
    .modelName("chat-bison@001")
    .temperature(0.7)  // Balanced creativity and focus
    .build();

Token Limiting

VertexAiChatModel model = VertexAiChatModel.builder()
    .endpoint("https://us-central1-aiplatform.googleapis.com/v1/")
    .project("your-project-id")
    .location("us-central1")
    .publisher("google")
    .modelName("chat-bison@001")
    .maxOutputTokens(100)  // Limit response to 100 tokens
    .build();

ChatRequest request = ChatRequest.builder()
    .messages(UserMessage.from("Write a long essay about AI"))
    .build();

ChatResponse response = model.chat(request);
// Response will be truncated to ~100 tokens

Sampling Control

// Focused responses with Top-K
VertexAiChatModel focusedModel = VertexAiChatModel.builder()
    .endpoint("https://us-central1-aiplatform.googleapis.com/v1/")
    .project("your-project-id")
    .location("us-central1")
    .publisher("google")
    .modelName("chat-bison@001")
    .topK(10)    // Consider only top 10 tokens
    .topP(0.9)   // Nucleus sampling threshold
    .build();

Using Different Models

Gemini Pro

VertexAiChatModel geminiModel = VertexAiChatModel.builder()
    .endpoint("https://us-central1-aiplatform.googleapis.com/v1/")
    .project("your-project-id")
    .location("us-central1")
    .publisher("google")
    .modelName("gemini-pro")
    .build();

Latest Chat Bison

VertexAiChatModel latestModel = VertexAiChatModel.builder()
    .endpoint("https://us-central1-aiplatform.googleapis.com/v1/")
    .project("your-project-id")
    .location("us-central1")
    .publisher("google")
    .modelName("chat-bison@002")  // Latest version
    .build();

Error Handling

try {
    ChatResponse response = model.chat(request);
    System.out.println(response.aiMessage().text());
} catch (Exception e) {
    System.err.println("Chat failed: " + e.getMessage());
    // Model automatically retries transient errors up to maxRetries
    // This catches non-retryable errors only
}

Response Metadata

ChatResponse response = model.chat(request);

String text = response.aiMessage().text();
TokenUsage tokenUsage = response.tokenUsage();
FinishReason finishReason = response.finishReason();

System.out.println("Response: " + text);
System.out.println("Input tokens: " + tokenUsage.inputTokenCount());
System.out.println("Output tokens: " + tokenUsage.outputTokenCount());
System.out.println("Total tokens: " + tokenUsage.totalTokenCount());
System.out.println("Finish reason: " + finishReason);

Install with Tessl CLI

npx tessl i tessl/maven-dev-langchain4j--langchain4j-vertex-ai@1.11.0

docs

index.md

quick-reference.md

tile.json