genkit_anthropic 0.0.1-dev.2
genkit_anthropic: ^0.0.1-dev.2 copied to clipboard
Anthropic plugin for Genkit Dart.
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?',
tools: ['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}');