LangChain4j integration for Google Vertex AI models including chat, language, embedding, image, and scoring capabilities
—
Quality
Pending
Does it follow best practices?
Impact
Pending
No eval scenarios have been run
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());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();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());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);
}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();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();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();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();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// 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();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();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();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
}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