genkit_anthropic 0.0.1-dev.6
genkit_anthropic: ^0.0.1-dev.6 copied to clipboard
Anthropic plugin for Genkit Dart. Provides full support for the Claude family of models with advanced features like tool calling, multimodal inputs, and Genkit's unified generate API.
Anthropic plugin for Genkit Dart.
Usage #
Initialization #
import 'dart:io';
import 'package:genkit/genkit.dart';
import 'package:genkit_anthropic/genkit_anthropic.dart';
void main() async {
// Initialize Genkit with the Anthropic plugin
// Make sure ANTHROPIC_API_KEY is allowed in your environment
final ai = Genkit(
plugins: [anthropic(apiKey: Platform.environment['ANTHROPIC_API_KEY']!)],
);
}
Basic Generation #
final response = await ai.generate(
model: anthropic.model('claude-sonnet-4-5'),
prompt: 'Tell me a joke about a developer.',
);
print(response.text);
Streaming #
final stream = ai.generateStream(
model: anthropic.model('claude-sonnet-4-5'),
prompt: 'Count to 5',
);
await for (final chunk in stream) {
print(chunk.text);
}
final response = await stream.onResult;
print('Full response: ${response.text}');
Tool Calling #
import 'package:schemantic/schemantic.dart';
part 'main.g.dart';
@Schematic()
abstract class $CalculatorInput {
int get a;
int get b;
}
// ... inside main ...
ai.defineTool(
name: 'calculator',
description: 'Multiplies two numbers',
inputSchema: CalculatorInput.$schema,
outputSchema: intSchema(),
fn: (input, context) async => input.a * input.b,
);
final response = await ai.generate(
model: anthropic.model('claude-sonnet-4-5'),
prompt: 'What is 123 * 456?',
toolNames: ['calculator'],
);
print(response.text);
Thinking (Claude 3.7+) #
final response = await ai.generate(
model: anthropic.model('claude-sonnet-4-5'),
prompt: 'Solve this 24 game: 2, 3, 10, 10',
config: AnthropicOptions(thinking: ThinkingConfig(budgetTokens: 2048)),
);
// The thinking content is available in the message parts
print(response.message?.content);
Structured Output #
@Schematic()
abstract class $Person {
String get name;
int get age;
}
// ... inside main ...
final response = await ai.generate(
model: anthropic.model('claude-sonnet-4-5'),
prompt: 'Generate a person named John Doe, age 30',
outputSchema: Person.$schema,
);
final person = response.output; // Typed Person object
print('Name: ${person.name}, Age: ${person.age}');