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
// Chat Model
public class VertexAiChatModel implements ChatModel {
public ChatResponse chat(ChatRequest chatRequest);
public static Builder builder();
}
// Language Model
public class VertexAiLanguageModel implements LanguageModel {
public Response<String> generate(String prompt);
public static Builder builder();
}
// Embedding Model
public class VertexAiEmbeddingModel extends DimensionAwareEmbeddingModel {
public Response<List<Embedding>> embedAll(List<TextSegment> segments);
public String modelName();
public List<Integer> calculateTokensCounts(List<TextSegment> segments);
public static Builder builder();
}
// Image Model
public class VertexAiImageModel implements ImageModel {
public Response<Image> generate(String prompt);
public Response<List<Image>> generate(String prompt, int n);
public Response<Image> edit(Image image, String prompt);
public Response<Image> edit(Image image, Image mask, String prompt);
public static Builder builder();
}
// Scoring Model
public class VertexAiScoringModel implements ScoringModel {
public Response<List<Double>> scoreAll(List<TextSegment> segments, String query);
public static Builder builder();
}import dev.langchain4j.model.vertexai.VertexAiChatModel;
import dev.langchain4j.model.vertexai.VertexAiLanguageModel;
import dev.langchain4j.model.vertexai.VertexAiEmbeddingModel;
import dev.langchain4j.model.vertexai.VertexAiImageModel;
import dev.langchain4j.model.vertexai.VertexAiScoringModel;
import dev.langchain4j.model.vertexai.VertexAiEmbeddingModelName;All model builders (except ScoringModel) share these methods:
Builder endpoint(String endpoint); // GCP API endpoint URL
Builder project(String project); // Google Cloud Project ID
Builder location(String location); // GCP region
Builder publisher(String publisher); // Model publisher ("google")
Builder modelName(String modelName); // Model name/version
Builder maxRetries(Integer maxRetries); // Retry attempts on failureBuilder temperature(Double temperature); // 0.0-1.0
Builder maxOutputTokens(Integer maxOutputTokens); // Max response length
Builder topK(Integer topK); // Top-K sampling
Builder topP(Double topP); // Nucleus sampling
Builder credentials(GoogleCredentials credentials); // Custom authBuilder temperature(Double temperature); // 0.0-1.0
Builder maxOutputTokens(Integer maxOutputTokens); // Max response length
Builder topK(Integer topK); // Top-K sampling
Builder topP(Double topP); // Nucleus samplingBuilder maxSegmentsPerBatch(Integer maxSegmentsPerBatch); // Max segments per API call (default: 250)
Builder maxTokensPerBatch(Integer maxTokensPerBatch); // Max tokens per batch (default: 20,000)
Builder taskType(TaskType taskType); // Optimization for task type
Builder titleMetadataKey(String titleMetadataKey); // Metadata key for titles (default: "title")
Builder autoTruncate(Boolean autoTruncate); // Auto-truncate long texts (default: false)
Builder outputDimensionality(Integer outputDimensionality); // Custom dimension
Builder credentials(GoogleCredentials credentials); // Custom authBuilder seed(Long seed); // Random seed (0-4,294,967,295)
Builder language(String language); // Language code
Builder guidanceScale(Integer guidanceScale); // Edit strength (0-21+)
Builder negativePrompt(String negativePrompt); // What to avoid
Builder aspectRatio(AspectRatio aspectRatio); // Image aspect ratio
Builder mimeType(MimeType mimeType); // PNG or JPEG
Builder compressionQuality(Integer compressionQuality); // JPEG quality (1-100)
Builder personGeneration(PersonGeneration personGeneration); // Person generation policy
Builder watermark(Boolean watermark); // Add watermark
Builder persistToCloudStorage(String gcsUri); // Save to GCS
Builder withPersisting(); // Enable local persistence
Builder persistTo(Path persistTo); // Local save path
Builder logRequests(Boolean logRequests); // Log requests
Builder logResponses(Boolean logResponses); // Log responsesBuilder projectId(String projectId); // GCP project ID
Builder projectNumber(String projectNumber); // GCP project number (12-digit)
Builder location(String location); // GCP region
Builder model(String model); // Ranking model name
Builder titleMetadataKey(String titleMetadataKey); // Metadata key for titles (default: "title")chat-bison@001, chat-bison@002 - PaLM 2gemini-pro - Gemini Progemini-ultra - Gemini Ultratext-bison@001, text-bison@002 - PaLM 2text-bison-32k - Extended contexttext-embedding-004 - Latest (768d)textembedding-gecko@001/002/003 - Gecko (768d)text-multilingual-embedding-002 - Multilingual (768d)multimodalembedding - Multimodal (1408d)imagegeneration@006 - Imagen 3 (latest)imagegeneration@005 - Imagen 2imagegeneration@002 - Imagen 1semantic-ranker-512@latest - Semantic rankerUS Central: https://us-central1-aiplatform.googleapis.com/v1/
Europe West: https://europe-west1-aiplatform.googleapis.com/v1/
Asia Northeast: https://asia-northeast1-aiplatform.googleapis.com/v1/
Embedding: us-central1-aiplatform.googleapis.com:443All models support:
GOOGLE_APPLICATION_CREDENTIALS environment variablegcloud auth application-default login)GoogleCredentials via credentials() builder methodRETRIEVAL_QUERY, RETRIEVAL_DOCUMENT, SEMANTIC_SIMILARITY, CLASSIFICATION,
CLUSTERING, QUESTION_ANSWERING, FACT_VERIFICATION, CODE_RETRIEVAL_QUERYSQUARE ("1:1"), PORTRAIT ("9:16"), LANDSCAPE ("16:9"),
THREE_FOURTHS ("3:4"), FOUR_THIRDS ("4:3")PNG ("image/png"), JPEG ("image/jpeg")DONT_ALLOW ("dont_allow"), ALLOW_ADULT ("allow_adult"), ALLOW_ALL ("allow_all")PHOTOGRAPH, DIGITAL_ART, LANDSCAPE, SKETCH, WATERCOLOR, CYBERPUNK, POP_ARTpublic enum VertexAiEmbeddingModelName {
MULTIMODALEMBEDDING (1408),
TEXT_EMBEDDING_004 (768),
TEXT_EMBEDDING_PREVIEW_0815 (768),
TEXT_MULTILINGUAL_EMBEDDING_002 (768),
TEXTEMBEDDING_GECKO_MULTILINGUAL_001 (768),
TEXTEMBEDDING_GECKO_001 (768),
TEXTEMBEDDING_GECKO_002 (768),
TEXTEMBEDDING_GECKO_003 (768);
public String toString();
public Integer dimension();
public static Integer knownDimension(String modelName);
}public interface VertexAiChatModelBuilderFactory extends Supplier<VertexAiChatModel.Builder> {}
public interface VertexAiEmbeddingModelBuilderFactory extends Supplier<VertexAiEmbeddingModel.Builder> {}
public interface VertexAiLanguageModelBuilderFactory extends Supplier<VertexAiLanguageModel.Builder> {}
public interface VertexAiImageModelBuilderFactory extends Supplier<VertexAiImageModel.Builder> {}Note: VertexAiScoringModel does not have an SPI factory interface.
Install with Tessl CLI
npx tessl i tessl/maven-dev-langchain4j--langchain4j-vertex-ai