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); }}