TGViewer
Flutter Friendly Flutter Friendly @flutterfriendly · 995 subscribers
Post #286 897
⭐Всем привет, меня зовут Роза, Flutter Dev Friflex

В мире, где со всех углов люди кричат про AI, сложно оставаться в стороне и не использовать этот инструмент. Давайте представим, что в ваш проект нужно «затащить» LLM. Как это сделать? Сегодня расскажу, как подключить Flutter/Dart-приложение к локальному серверу Ollama с помощью пакета ollama_dart.

Ollama — это инструмент для запуска языковых моделей локально, на своем компьютере. Кстати, вот отличная статья о нем на Хабре. Он дает:
▫️ приватность
▫️ полный контроль
▫️ отсутствие зависимости от облачных API

Допустим, сервер Ollama уже запущен. Как теперь связать его с Flutter/Dart-приложением? Сделать это легко с помощью библиотеки ollama_dart, которая позволяет:
✔️ отправлять одиночные запросы
✔️ работать со стримингом ответов
✔️ использовать разные типы запросов: completion, chat, embeddings
✔️ выбирать любые доступные модели

Чтобы подключить Ollama, достаточно импортировать пакет и инициализировать клиента. По умолчанию он стучится на `http://localhost:11434/api`, но вы можете указать свой URL и добавить заголовки:

import 'package:ollama_dart/ollama_dart.dart';

final client = OllamaClient(baseUrl: 'some_url', headers: {});


После этого можно сразу отправлять запросы на генерацию текста. Например, с помощью метода generateCompletion:

final generated = await client.generateCompletion(
  request: GenerateCompletionRequest(
    model: 'mistral:latest',
    prompt: 'Why is the sky blue?',
  ),
);
print(generated.response);
// The sky appears blue because of a phenomenon called Rayleigh scattering...


Если вам нужно получать ответы по мере генерации, можно использовать generateChatCompletionStream.
Представьте, что у нас есть чат-бот, и мы хотим вести с ним полноценный диалог, при этом видеть ответ модели по мере того, как она его формирует.

На примере ниже создается поток (`stream`) для чат-комплешена. Сначала мы задаем системную роль, которая описывает поведение модели, а затем отправляем сообщение пользователя:

final stream = client.generateChatCompletionStream(
  request: GenerateChatCompletionRequest(
    model: 'mistral:latest',
    messages: [
      Message(
        role: MessageRole.system,
        content: 'You are a helpful assistant.',
      ),
      Message(
        role: MessageRole.user,
        content: 'List the numbers from 1 to 9 in order.',
      ),
    ],
  ),
);

await for (final chunk in stream) { 
   print(chunk.message?.content); 
}


При работе с моделями можно выбирать разные версии, например llama3 или mistral:latest, а также настраивать параметры генерации, такие как temperature — для степени креативности, numPredict — для ограничения длины ответа и topP — для управления вероятностным сэмплированием (и это еще не весь список доступных опций).  Например:

final generated = await client.generateCompletion(
  request: const GenerateCompletionRequest(
    model: 'mistral:latest',
    prompt: 'Сочини мне историю про кита',
    options: RequestOptions(
      temperature: 0.7,
      numPredict: 150,
    ),
  ),
);



Чтобы работа с LLM через Ollama была максимально продуктивной, стоит:
▪️ детализировать промт, указывая tone of voice, роль модели и примеры ответа
▪️ экспериментировать с разными моделями – результаты могут сильно отличаться
▪️ использовать стриминг для больших текстов, чтобы экономить память и быстрее получать частичные ответы

Вы можете использовать ollama_dart для создания локальных чат-ботов, для генерации текста или интеграции LLM в существующие приложения.

📎На этом все, чтобы узнать больше, советую заглянуть в официальную библиотеку ollama_dart и прочитать про Ollama
  • ❤ 8
  • 👍 5
  • 🔥 3
More from @flutterfriendly
  1. May 14, 2026👀Какой сложный вопрос или тема по Flutter вас сейчас беспокоят? Может, задача не идет, ба…
  2. Apr 17, 2026💭Привет! Это Роза, Flutter-разработчица Friflex! Уверена, многие из вас знакомы с Dart De…
  3. Apr 8, 2026Привет, друзья! Делимся нашей страничкой на Хабре, чтобы всегда оставаться на связи. Там е…
  4. Apr 3, 2026🌸Апрель в календаре и на экране Весна зовет обновлять визуальное: убирать темные темы и в…
  5. Apr 1, 2026Всегда с нетерпением ждем этого дня, чтобы сделать подборку ИТ-мемов Пусть поводов для улы…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →