ai_sdk_dart 1.0.0 copy "ai_sdk_dart: ^1.0.0" to clipboard
ai_sdk_dart: ^1.0.0 copied to clipboard

Core AI SDK for Dart with provider-agnostic model APIs.

ai #

Core AI SDK for Dart — a Dart/Flutter port of Vercel AI SDK v6.

Provider-agnostic APIs for text generation, streaming, structured output, tool use, embeddings, and more.


Installation #

You need this package plus one provider:

# OpenAI
dart pub add ai ai_sdk_openai

# Anthropic
dart pub add ai ai_sdk_anthropic

# Google Generative AI
dart pub add ai ai_sdk_google

# Flutter apps (adds UI controllers)
dart pub add ai ai_sdk_openai ai_sdk_flutter

Quick start #

import 'package:ai/ai.dart';
import 'package:ai_sdk_openai/ai_sdk_openai.dart';

void main() async {
  final result = await generateText(
    model: openai('gpt-4.1-mini'),
    prompt: 'Say hello from AI SDK Dart.',
  );
  print(result.text);
}

Features #

Streaming #

final result = await streamText(
  model: openai('gpt-4.1-mini'),
  prompt: 'Tell me a short story.',
  onChunk: (chunk) {
    if (chunk is StreamTextTextChunk) stdout.write(chunk.text);
  },
);
await result.text; // wait for completion

Structured output #

final result = await generateText<Map<String, dynamic>>(
  model: openai('gpt-4.1-mini'),
  prompt: 'Give me info about Paris.',
  output: Output.object(
    schema: Schema<Map<String, dynamic>>(
      jsonSchema: const {'type': 'object', 'properties': {
        'city': {'type': 'string'},
        'country': {'type': 'string'},
      }},
      fromJson: (json) => json,
    ),
  ),
);
print(result.output); // {city: Paris, country: France}

Output modes: Output.text(), Output.object(), Output.array(), Output.choice(), Output.json()

Tools + multi-step #

final result = await generateText(
  model: openai('gpt-4.1-mini'),
  prompt: 'What is the weather in Tokyo?',
  maxSteps: 5,
  tools: {
    'getWeather': tool<Map<String, dynamic>, String>(
      description: 'Get weather for a city.',
      inputSchema: Schema(
        jsonSchema: const {'type': 'object', 'properties': {
          'city': {'type': 'string'},
        }},
        fromJson: (json) => json,
      ),
      execute: (input, _) async => 'Sunny, 22°C',
    ),
  },
);
print(result.text); // "The weather in Tokyo is sunny, 22°C."

Embeddings #

final e1 = await embed(model: openai.embedding('text-embedding-3-small'), value: 'cat');
final e2 = await embed(model: openai.embedding('text-embedding-3-small'), value: 'kitten');

print(cosineSimilarity(e1.embedding, e2.embedding)); // ~0.9

Middleware #

final model = wrapLanguageModel(
  openai('gpt-4.1-mini'),
  [
    defaultSettingsMiddleware(temperature: 0.2),
    extractReasoningMiddleware(tagName: 'think'),
  ],
);

Built-in middleware: extractReasoningMiddleware, extractJsonMiddleware, simulateStreamingMiddleware, defaultSettingsMiddleware, addToolInputExamplesMiddleware

Provider registry #

final registry = createProviderRegistry({
  'openai': RegistrableProvider(
    languageModelFactory: openai.call,
    embeddingModelFactory: openai.embedding,
  ),
});

final model = registry.languageModel('openai:gpt-4.1-mini');

Provider packages #

Package Provider
ai_sdk_openai OpenAI
ai_sdk_anthropic Anthropic
ai_sdk_google Google Generative AI
ai_sdk_flutter Flutter UI controllers
ai_sdk_mcp MCP client

License #

MIT

0
likes
150
points
0
downloads

Documentation

API reference

Publisher

verified publisherhashstudios.dev

Weekly Downloads

Core AI SDK for Dart with provider-agnostic model APIs.

Repository (GitHub)
View/report issues

License

MIT (license)

Dependencies

ai_sdk_provider, collection, dio, freezed_annotation, json_annotation, meta

More

Packages that depend on ai_sdk_dart