Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Gemini APIを使ってみよう@potatotips#86
Search
umsys
February 07, 2024
Programming
0
4.6k
Gemini APIを使ってみよう@potatotips#86
umsys
February 07, 2024
Tweet
Share
More Decks by umsys
See All by umsys
Jetpack Composeの スクロールパフォーマンス改善を検証した話
umsys
0
640
ZOZOTOWNアプリでのフルCompos実装取り組み事例
umsys
0
1.2k
Other Decks in Programming
See All in Programming
組込みだけじゃない!TinyGo で始める無料クラウド開発入門
otakakot
0
250
Devoxx BE - Local Development in the AI Era
kdubois
0
130
アメ車でサンノゼを走ってきたよ!
s_shimotori
0
220
その面倒な作業、「Dart」にやらせませんか? Flutter開発者のための業務効率化
yordgenome03
1
130
overlayPreferenceValue で実現する ピュア SwiftUI な AdMob ネイティブ広告
uhucream
0
180
dynamic!
moro
10
7.8k
Catch Up: Go Style Guide Update
andpad
0
230
CSC509 Lecture 05
javiergs
PRO
0
300
高度なUI/UXこそHotwireで作ろう Kaigi on Rails 2025
naofumi
4
4k
Django Ninja による API 開発効率化とリプレースの実践
kashewnuts
0
1.3k
iOSエンジニア向けの英語学習アプリを作る!
yukawashouhei
0
190
All About Angular's New Signal Forms
manfredsteyer
PRO
0
140
Featured
See All Featured
Leading Effective Engineering Teams in the AI Era
addyosmani
3
380
How to Think Like a Performance Engineer
csswizardry
27
2k
Mobile First: as difficult as doing things right
swwweet
224
10k
Measuring & Analyzing Core Web Vitals
bluesmoon
9
620
The Art of Delivering Value - GDevCon NA Keynote
reverentgeek
15
1.7k
StorybookのUI Testing Handbookを読んだ
zakiyama
31
6.2k
Building Flexible Design Systems
yeseniaperezcruz
329
39k
We Have a Design System, Now What?
morganepeng
53
7.8k
Templates, Plugins, & Blocks: Oh My! Creating the theme that thinks of everything
marktimemedia
31
2.5k
How to Ace a Technical Interview
jacobian
280
24k
The Cost Of JavaScript in 2023
addyosmani
54
9k
VelocityConf: Rendering Performance Case Studies
addyosmani
332
24k
Transcript
Gemini APIを使ってみよう 2024/02/07 potatotips#86 内山雅由(@umsys_)
自己紹介 株式会社ZOZO X: @umsys_ Bluesky: @umsys.bsky.social GitHub: https://github.com/umsys
内山 雅由 • 車の運転とゲームとハリネズミが大好きです • 最近はポケモンカードにハマっています • 今月末発売予定のFF7 REBIRTHが楽しみです
生成AI使っていますか?
世はまさに生成AI戦国時代! • chatGPT(OpenAI) • Bard(Google) • Copilot(Microsoft) • Rufus(Amazon) などなど
Gemini API • Androidアプリ開発ではGemini APIを使うことで、生成AIを利用したアプリが開発でき ます。 • Androidだけでなく、様々な言語でも利用可能です。 ◦ Python
◦ Go ◦ Node.js ◦ Swift ◦ JavaScript • curl コマンドを使用して Gemini API を試すこともできます。 ◦ REST API
料金 今のところ無料で使えるプランがあります。
Androidアプリで開発してみよう!
クイックスタート Android StudioはIguanaかJellyfishの最新プレビュー版を用意してください。
クイックスタート Gemini API Starterを選択します。 ※Hedgehogだとこれが出てこない(泣) 誠に遺憾です
クイックスタート ここでAPI Keyが必要になります。 Google AI StudioでKeyを作成し、入力してください。 ※Google AI Studioへは「Generate API
key with Google AI Studio」から飛ぶことができます。 ※2 API Keyは誰にも教えないように注意しましょう。
クイックスタート ビルドしたら動かせます。
クイックスタート [File] > [New] > [Import Sample] を選択して 「generative」で検索すると、 他の機能の紹介を兼ねたコードサンプルを
Android Studio にインポートできます。
クイックスタート マルチモーダル テキストと画像をGeminiに渡して会話できる。
クイックスタート チャット テキストだけの会話だが、チャットの履歴を記憶した 状態で会話を続けることができる。 ※テンプレートからビルドできるアプリは毎回記憶が リセットされるワンショット
コードを見てみよう
GenerativeModelのセットアップ GenerativeModelの引数に各種設定値を渡してセットアップする。 modelName ユースケースに合わせてモデル名を設定。ワンショットとチャットの場合は 「gemini-pro」、マルチモーダルの場合は「 gemini-pro-vision」 apiKey Google AI Studioで作成したKeyを設定。秘匿性を高めるため、
local.propertiesなどに書いておいて、 BuildConfig.apiKeyで呼び出すと良いで すね。 generationConfig 返答のランダム性や、返してほしくない語句の設定(セーフティ機能)などの設 定ができます。サンプルではランダム性だけ設定しています。 引用: https://github.com/google/generative-ai-android/tree/main/generativeai-android-sample
ユーザーの入力内容をGeminiに渡している箇所 • GenerativeModelのgenerateContent()にユーザーの入力内容(prompt)を渡し、Geminiからの返答 を受け取ってUIStateに流している。 引用: https://github.com/google/generative-ai-android/tree/main/generativeai-android-sample
すごい簡単。 嬉しいね!
もう少し詳しくコードを見てみよう
GenerativeModel.generateContent() 引数に応じてpromptの型が3つ用意されています。 • Stringだけを渡して会話する。 • 画像だけを渡して会話する。 • 画像とテキストを複数混合して会話する。 現在はこれらのユースケースが実装されています。 Genimiからの返答はGenerateContentResponseとして返ってきます。
引用: https://github.com/google/generative-ai-android/tree/main/generativeai-android-sample
Content Content型はStringやBitmap を複数抱えることができるクラ ス。 ユーザーの入力から画像とテキ ストを複数混合してGeminiに渡 したいときはContent型で promptを渡すことができます。 引用: https://github.com/google/generative-ai-android/tree/main/generativeai-android-sample
GenerateContentResponse Genimiからの返答はGenerateContentResponseとして返ってきます。 candidatesはGeminiからの返答リストです。 GenerativeModelのセットアップでgenerationConfig.candidateCountを2以上にしておくと複数返って きます。 promptFeedbackは与えられたpromptに対するフィードバックです。不適切な入力などがあった場合に 返されるようです。(ちょっと BANが怖くて試してません) 引用: https://github.com/google/generative-ai-android/tree/main/generativeai-android-sample
Candidate Geminiからの返答を定義したクラスです。 ユーザー入力と同じContentとして返してくるようですね。 その他はセーフティーレーティングなどの付与情報です。 (ここまでコードを見てみると、 AIセーフティに対してかなり慎重になっている姿勢が感じられますね。) 引用: https://github.com/google/generative-ai-android/tree/main/generativeai-android-sample
ということは簡単に図示すると
None
公式ドキュメントには書いてなかったけ ど、Gemini APIで画像生成できるので は!?!!?
None
ご清聴ありがとうございました!