【Flutter/Dart】Googleの生成AIモデルをつかう
はじめに
google_generative_ai
でFlutterアプリから簡単にGeminiが使えるようになりましたね。🎉
使用できるモデルバージョンや設定できる項目などを簡単にまとめました📝
使ってみる
使用可能なモデル
Gemini 1.5 Pro
プレビュー版のみ。(Geminiモデルにはプレビュー版と安定版があります)
テキストと画像の入力ができますが、出力はテキストのみです。
コード生成などに最適化されています。
Gemini Pro
入出力はテキストのみ対応しています。
チャットなどに使用する、複数のターンにわたる会話形式の処理が可能です。
Gemini 1.0 Pro Vision
テキストと画像の入力ができますが、出力はテキストのみです。
こちらはまだ複数ターンの会話用に最適化されていないので、チャットを構築するためにはGemini Pro
を使ってテキストのみ(画像入力は使えない)でやり取りする必要があります。
Embedding
入出力はテキストのみ対応です。
入力テキストのエンベディングを生成します。
AQA
入出力はテキストのみ対応です。
質疑応答を実行するモデルです。
Flutterアプリに導入する
APIキーを取得する
Gemini APIの使用にはAPIキーが必要なので、Google AI Studioで作成します。
プロジェクトにパッケージを追加する
flutter pub add google_generative_ai
パッケージをインポートして使う
プロンプトをハードコーディングしてコンソールにレスポンスを出力するシンプルな例です。
GenerativeModel
クラスにモデル名とAPIキーをセットしてgenerateContent
を実行すると結果が返ってきます。
import 'package:google_generative_ai/google_generative_ai.dart';
class TestPage extends ConsumerWidget {
const TestPage();
Widget build(BuildContext context, WidgetRef ref) {
return Scaffold(
body: Center(
child: TextButton(
onPressed: () async {
final model = GenerativeModel(model: 'gemini-pro', apiKey: apiKey);
const prompt = 'なにか喋って';
final response =
await model.generateContent([Content.text(prompt)]);
print(response.text);
},
child: const Text('Generate'),
),
),
);
}
}
generateContentStream
を使ってStreamで受け取ることもできます。
final response =
model.generateContentStream([Content.text(prompt)]);
await for (final chunk in response) {
print(chunk.text);
}
指定するモデルを変更する
先ほどの例では、model: 'gemini-pro'
でGemini Pro
を指定しましたが、他のモデルを指定したい時はここを使いたいモデル名に書き換えます。
生成コンテンツの制御をする
GenerativeModel
にGenerationConfig
をセットすることで生成コンテンツの制御ができます。
たとえばGenerationConfig
のtemperature
を変更することでコンテンツを生成する際のランダム性の度合いを制御します。(デフォルト値はモデルによって違うようです)
temperature
が0.0や0.1など低い場合は予測可能な一般的な結果を出力する傾向にあり、「なにか喋って」というプロンプトで生成すると次のような普遍的なレスポンスが得られます。
こんにちは、私は言語モデルです。あなたと会話をしたり、質問に答えたり、情報を提供したりできます。何かお手伝いできることはありますか?
temperature
を1.0など高めに設定すると、予測不可能で創造的な結果を出力する傾向にあるので先ほどと同じ「なにか喋って」というプロンプトで生成しても、次のようなレスポンスが返ってきます。
こんばんは、皆さん。お集まりいただき、ありがとうございます。このような場でお話しできることを光栄に思います。
私は、AI技術の進歩とそれが私たちの生活にもたらす影響についてお話ししたいと思っています。この分野は急速に発展しており、私たちはすでにその影響を感じ始めています。
AIは、多くの産業で自動化と効率化を促進してきました。製造業では、ロボットがより多くのタスクを担うようになり、医療では、AIが病気の診断と治療を支援するようになりました。
しかし、AIの台頭には課題も伴います。その中には、雇用の喪失や、AIシステムのバイアスの影響が含まれます。こうした課題を慎重に検討し、これらの技術を責任を持って開発・活用するための対策を講じる必要があります。
AIは私たちの生活を変える可能性を秘めています。これを、私たちの社会を向上させ、人類の進歩を促進するために活用する方法を見出すことが重要です。
ご清聴ありがとうございました。
一般的なレスポンスが欲しいとき・創造的なアイデアが欲しいときなどで使い分けができそうです。
生成コンテンツの安全性を高める
GenerativeModel
にSafetySetting
をセットすることで生成コンテンツの安全性を高めることができます。
SafetySetting
は複数指定することができ、次のカテゴリーをどのくらいのレベルでブロックするのか調整できます。
- harassment(ハラスメント)
- hateSpeech(ヘイトスピーチ)
- sexuallyExplicit(性的表現)
- dangerousContent(危険なコンテンツ)
ユースケースごとに細かく調整ができそうです。
さいごに
iPhoneにGemini搭載の噂があるので今後もっと進化していきそうで楽しみです!
最後までご覧いただきありがとうございました🙏🏻
Discussion