Gemini API Flutter Plugin

Flutter plugin of Gemini AI for Flutter Developers that uses native Android and iOS libraries.

My personal website: cihanurtekin.com

NOTE: This plugin is not a simple package that just makes web calls. It is a plugin that includes Gemini AI's native Android and iOS libraries.

Usage

To experience Gemini online: Google Maker Suite

Generative Model

A facilitator for a given multimodal model (eg; Gemini).

import 'package:gemini_ai/model/generative_model.dart';

GenerativeModel generativeModel = GenerativeModel(
  modelName: "gemini-pro",
  apiKey: "YOUR_API_KEY_HERE",
  generationConfig: _generationConfig,
  safetySettings: _safetySettings,
);

modelName (String): Name of the model in the backend
apiKey (String): Authentication key for interacting with the backend
generationConfig (GenerationConfig?): Configuration parameters to use for content generation
safetySettings (List<SafetySetting>): The safety bounds to use during alongside prompts during content generation


Generation Config

Configuration parameters to use for content generation.

import 'package:gemini_ai/model/generation_config.dart';

GenerationConfig _generationConfig = GenerationConfig(
  temperature: 0.9,
  topK: 1,
  topP: 1,
  maxOutputTokens: 2048,
);

temperature (double?): The degree of randomness in token selection, typically between 0 and 1
topK (int?): The sum of probabilities to collect to during token selection
topP (double?): How many tokens to select amongst the highest probabilities
candidateCount (int?): The max unique responses to return
maxOutputTokens (int?): The max tokens to generate per response
stopSequences (List<String>?): A list of strings to stop generation on occurrence of


Safety Settings

A configuration for a BlockThreshold of some HarmCategory allowed and blocked in responses.

import 'package:gemini_ai/model/safety_setting.dart';
import 'package:gemini_ai/enum/block_threshold.dart';
import 'package:gemini_ai/enum/harm_category.dart';

List<SafetySetting> _safetySettings = [
  SafetySetting(
    HarmCategory.harassment,
    BlockThreshold.mediumAndAbove,
  ),
  SafetySetting(
    HarmCategory.hateSpeech,
    BlockThreshold.mediumAndAbove,
  ),
  SafetySetting(
    HarmCategory.sexuallyExplicit,
    BlockThreshold.mediumAndAbove,
  ),
  SafetySetting(
    HarmCategory.dangerousContent,
    BlockThreshold.mediumAndAbove,
  ),
];
  • HarmCategory (enum) : Category for a given harm rating.
    • unknown : A new and not yet supported value.
    • harassment : Harassment content.
    • hateSpeech : Hate speech and content.
    • sexuallyExplicit : Sexually explicit content.
    • dangerousContent : Dangerous content.
  • BlockThreshold (enum) : Represents the threshold for some HarmCategory that is allowed and blocked by SafetySettings.
    • unspecified : The threshold was not specified.
    • lowAndAbove : Content with negligible harm is allowed.
    • mediumAndAbove : Content with negligible to low harm is allowed.
    • onlyHigh : Content with negligible to medium harm is allowed.
    • none : All content is allowed regardless of harm.

Generate content

Get response from Gemini AI with only one line of code using the generateContent method. For a full example, you can visit the example tab.

GeminiAi : The class used to call Gemini functions and properties

generateContent : Generates a response from the backend with the provided text represented Content.

prompt : The text to be converted into a single piece of Content to send to the model.

Returns a response String after some delay (async).

import 'package:gemini_ai/gemini_ai.dart';

GeminiAi _gemini = GeminiAi();

String? content = await _gemini.generateContent(
  GeminiConfig.generativeModel,
  "Your message to Gemini",
);

License

Gemini AI Flutter Plugin is licensed under the BSD-3-Clause License.

My personal website: cihanurtekin.com