Unified APIs for any model
Use Google AI, OpenAI, Claude, Bedrock, and Ollama through one SDK. Switch models with a single line change.
import com.google.genkit.Genkit;import com.google.genkit.plugins.googlegenai.GoogleGenAIPlugin;
Genkit genkit = Genkit.builder() .plugin(GoogleGenAIPlugin.create()) .build();
String text = genkit.generate(GenerateOptions.builder() .model("googleai/gemini-3-flash") .prompt("Why is Genkit awesome?") .build()).getText();import com.google.genkit.Genkit;import com.google.genkit.plugins.openai.OpenAIPlugin;
Genkit genkit = Genkit.builder() .plugin(OpenAIPlugin.create()) .build();
String text = genkit.generate(GenerateOptions.builder() .model("openai/gpt-5.2") .prompt("Why is Genkit awesome?") .build()).getText();import com.google.genkit.Genkit;import com.google.genkit.plugins.anthropic.AnthropicPlugin;
Genkit genkit = Genkit.builder() .plugin(AnthropicPlugin.create()) .build();
String text = genkit.generate(GenerateOptions.builder() .model("anthropic/claude-sonnet-4.6-20260301") .prompt("Why is Genkit awesome?") .build()).getText();import com.google.genkit.Genkit;import com.google.genkit.plugins.xai.XAIPlugin;
Genkit genkit = Genkit.builder() .plugin(XAIPlugin.create()) .build();
String text = genkit.generate(GenerateOptions.builder() .model("xai/grok-4-mini") .prompt("Why is Genkit awesome?") .build()).getText();import com.google.genkit.Genkit;import com.google.genkit.plugins.deepseek.DeepSeekPlugin;
Genkit genkit = Genkit.builder() .plugin(DeepSeekPlugin.create()) .build();
String text = genkit.generate(GenerateOptions.builder() .model("deepseek/deepseek-v3") .prompt("Why is Genkit awesome?") .build()).getText();import com.google.genkit.Genkit;import com.google.genkit.plugins.ollama.OllamaPlugin;
Genkit genkit = Genkit.builder() .plugin(OllamaPlugin.create()) .build();
String text = genkit.generate(GenerateOptions.builder() .model("ollama/gemma3n") .prompt("Why is Genkit awesome?") .build()).getText();The fastest way to build AI features into your Java apps.
Unified APIs for any model
Use Google AI, OpenAI, Claude, Bedrock, and Ollama through one SDK. Switch models with a single line change.
Composable workflows
Structure chat, RAG, tool use, and agents with built-in primitives. Define type-safe flows with input/output schemas.
Production-ready tools
Local dev UI, debugging, tracing with OpenTelemetry, and deployment to Spring Boot, Jetty, or Firebase Cloud Functions.
20+ Plugins
Model providers, vector databases, MCP, evaluators, and server frameworks — all as simple plugin integrations.
import com.google.genkit.plugins.jetty.JettyPlugin;
JettyPlugin jetty = new JettyPlugin(JettyPluginOptions.builder() .port(8080).build());
Genkit genkit = Genkit.builder() .plugin(GoogleGenAIPlugin.create()) .plugin(jetty) .build();
genkit.defineFlow("tellJoke", String.class, String.class, (ctx, topic) -> genkit.generate(GenerateOptions.builder() .model("googleai/gemini-3-flash") .prompt("Tell a joke about: " + topic) .build()).getText());
jetty.start();import com.google.genkit.plugins.spring.SpringPlugin;
@SpringBootApplicationpublic class App { public static void main(String[] args) { SpringPlugin spring = new SpringPlugin();
Genkit genkit = Genkit.builder() .plugin(GoogleGenAIPlugin.create()) .plugin(spring) .build();
genkit.defineFlow("tellJoke", String.class, String.class, (ctx, topic) -> genkit.generate(GenerateOptions.builder() .model("googleai/gemini-3-flash") .prompt("Tell a joke about: " + topic) .build()).getText());
spring.start(args); }}import com.google.genkit.plugins.firebase.functions.OnCallGenkit;
public class MyFunction implements HttpFunction { private final OnCallGenkit fn;
public MyFunction() { Genkit genkit = Genkit.builder() .plugin(GoogleGenAIPlugin.create()) .plugin(FirebasePlugin.builder().build()) .build();
genkit.defineFlow("tellJoke", String.class, String.class, (ctx, topic) -> genkit.generate(GenerateOptions.builder() .model("googleai/gemini-3-flash") .prompt("Tell a joke about: " + topic) .build()).getText());
this.fn = OnCallGenkit.fromFlow(genkit, "tellJoke"); }
@Override public void service(HttpRequest req, HttpResponse res) throws IOException { fn.service(req, res); }}Define server-managed agents with memory, tools, and multi-agent delegation. Persist conversations in the store of your choice.
import com.google.genkit.agent.AgentConfig;import com.google.genkit.ai.agent.*;
Agent<Map<String, Object>> assistant = genkit.beta().defineAgent( AgentConfig.<Map<String, Object>>builder() .name("assistant") .system("You are a helpful assistant. Remember what the user tells you.") .model("googleai/gemini-3-flash") .store(sessionStore) // persist sessions in Firestore, DynamoDB, Cosmos DB, PostgreSQL, MongoDB, ... .build());
AgentChat<Map<String, Object>> chat = assistant.chat();chat.send("My name is Ada Lovelace.");String reply = chat.send("What is my name?").text(); // "Your name is Ada Lovelace."