dart_ollama 0.1.5 copy "dart_ollama: ^0.1.5" to clipboard
dart_ollama: ^0.1.5 copied to clipboard

A Dart package for interacting with Ollama and ChatGPT APIs. Supports streaming chat responses, tool/function calling, image support, and both Ollama and ChatGPT backends.

CI pub package

dart_ollama #

A Dart package for interacting with Ollama and ChatGPT APIs. This package provides a simple wrapper for both Ollama and ChatGPT APIs with support for streaming chat responses, tool/function calling, image support, and more.

Features #

  • 🚀 Streaming chat responses - Real-time streaming of chat responses
  • 🔧 Tool/function calling - Support for function calling and tool use
  • 🖼️ Image support - Send images in chat messages
  • 🤖 Multiple backends - Works with both Ollama and ChatGPT
  • 💭 Thinking support - Support for Ollama's thinking feature
  • 📦 Easy to use - Simple and intuitive API

Installation #

Add this to your package's pubspec.yaml file:

dependencies:
  dart_ollama: ^0.1.5

Then run:

dart pub get

Getting started #

For Ollama #

You need to have Ollama running somewhere and have the URL to it. Go to https://ollama.com/ for installation details. Ollama has easy installation for all operating systems.

You'll also need to download models. For a small and easy model, use qwen3:0.6b as an example, it supports both thinking and tools.

For ChatGPT #

If you want to use ChatGPT, add an API key to the ChatGPTChatRepository. Remember to not push your API key to GitHub - use an .env file and put it there.

Usage #

Basic Chat Example #

import 'package:dart_ollama/dart_ollama.dart';

Future<void> main() async {
  final chatRepository = OllamaChatRepository(baseUrl: 'http://localhost:11434');
  final stream = chatRepository.streamChat('qwen3:0.6b',
    messages: [
      LLMMessage(role: LLMRole.system, content: 'Answer short and concise'),
      LLMMessage(role: LLMRole.user, content: 'Why is the sky blue?'),
    ],
    think: true,
  );
  
  String thinkingContent = '';
  String content = '';
  await for (final chunk in stream) {
    thinkingContent += chunk.message?.thinking ?? '';
    content += chunk.message?.content ?? '';
  }
  
  print('Thinking content: $thinkingContent');
  print('Output content: $content');
}

Using with ChatGPT #

import 'package:dart_ollama/dart_ollama.dart';

Future<void> main() async {
  final chatRepository = ChatGPTChatRepository(apiKey: 'your-api-key');
  final stream = chatRepository.streamChat('gpt-4o',
    messages: [
      LLMMessage(role: LLMRole.user, content: 'Hello, ChatGPT!'),
    ],
  );
  
  String content = '';
  await for (final chunk in stream) {
    content += chunk.message?.content ?? '';
  }
  print(content);
}

Tool/Function Calling #

For examples on how to add tools for function calling, check test/ollama_chat_test.dart in the repository.

Additional Information #

If you need functionality for Ollama other than chat, the OllamaRepository grants you access to common methods like listModels, pullModel, and version for general functionality.

License #

This project is licensed under the MIT License - see the LICENSE file for details.

1
likes
150
points
301
downloads

Publisher

unverified uploader

Weekly Downloads

A Dart package for interacting with Ollama and ChatGPT APIs. Supports streaming chat responses, tool/function calling, image support, and both Ollama and ChatGPT backends.

Repository (GitHub)
View/report issues

Documentation

API reference

License

MIT (license)

Dependencies

http

More

Packages that depend on dart_ollama