https://github.com/faisalaffan/claudio
Anthropic SDK For Dart Ecosystem
https://github.com/faisalaffan/claudio
ai anthropic claude dart ecosystem flutter open-source package
Last synced: 24 days ago
JSON representation
Anthropic SDK For Dart Ecosystem
- Host: GitHub
- URL: https://github.com/faisalaffan/claudio
- Owner: faisalaffan
- License: mit
- Created: 2026-04-25T06:40:03.000Z (about 1 month ago)
- Default Branch: dev
- Last Pushed: 2026-05-13T18:48:41.000Z (25 days ago)
- Last Synced: 2026-05-13T20:30:46.039Z (25 days ago)
- Topics: ai, anthropic, claude, dart, ecosystem, flutter, open-source, package
- Language: Dart
- Homepage: https://claudio.faisalaffan.com
- Size: 12.4 MB
- Stars: 1
- Watchers: 0
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
Awesome Lists containing this project
README
๐ฌ๐ง English ยท ๐ฎ๐ฉ Bahasa Indonesia
# claudio
Multi-provider AI SDK for Dart/Flutter โ one interface, many providers.
[](https://pub.dev/packages/claudio_sdk)
[](LICENSE)
## Install
```yaml
dependencies:
claudio_sdk: ^0.1.0
```
## Quick Start
```dart
import 'package:claudio_sdk/claudio_sdk.dart';
void main() async {
final client = ClaudioClient(
apiKey: 'sk-ant-your-key',
provider: Provider.anthropic,
);
final msg = await client.messages.create(
CreateMessageRequest(
model: 'claude-sonnet-4-20250514',
maxTokens: 1024,
messages: [
MessageParam(role: 'user', content: 'Hello!'),
],
),
);
print(msg.text);
client.close();
}
```
## Providers
```dart
// Anthropic
ClaudioClient(apiKey: 'sk-ant-...', provider: Provider.anthropic);
// DeepSeek (Anthropic-compatible API)
ClaudioClient(apiKey: 'sk-ds-...', provider: Provider.deepseek);
// Auto-detect from environment
ClaudioClient.fromEnvironment();
```
## Features
- **Messages API** โ `create()` and `createStream()` with SSE
- **Multi-tools** โ schema builder for type-safe JSON Schema
- **Extended thinking** โ enabled, disabled, adaptive
- **Streaming** โ real-time token & tool input chunks
- **Error handling** โ typed exception hierarchy (auth, rate limit, network, etc.)
- **Retry** โ exponential backoff + jitter for 429 and 5xx
## Tools & Streaming
```dart
final tool = Tool(
name: 'get_weather',
description: 'Weather by city.',
inputSchema: SchemaBuilder().object(
properties: {
'city': SchemaProperty.string(description: 'City name'),
},
required: ['city'],
).build(),
);
final stream = client.messages.createStream(
CreateMessageRequest(
model: 'claude-sonnet-4-20250514',
maxTokens: 1024,
messages: [MessageParam(role: 'user', content: 'Weather in Jakarta?')],
tools: [tool],
),
);
await for (final event in stream) {
if (event is ContentBlockDeltaEvent) {
switch (event.delta) {
case TextDelta(:final text): stdout.write(text);
case InputJsonDelta(:final partialJson): print(partialJson);
}
}
}
```
## Error Handling
```dart
try {
final msg = await client.messages.create(request);
} on AuthenticationException catch (e) {
print('Auth error: ${e.message}');
} on RateLimitException catch (e) {
print('Rate limited, retry after ${e.retryAfter}');
} on ApiException catch (e) {
print('Server error ${e.statusCode}: ${e.message}');
} on NetworkException catch (e) {
print('Network: ${e.message}');
}
```
## License
MIT
---