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
650
ZOZOTOWNアプリでのフルCompos実装取り組み事例
umsys
0
1.2k
Other Decks in Programming
See All in Programming
Doc Translate - LLMを活用したコードドキュメント自動翻訳VSCode拡張機能
eycjur
0
100
Feature Flags Suck! - KubeCon Atlanta 2025
phodgson
0
150
Herb to ReActionView: A New Foundation for the View Layer @ San Francisco Ruby Conference 2025
marcoroth
0
180
Vueで学ぶデータ構造入門 リンクリストとキューでリアクティビティを捉える / Vue Data Structures: Linked Lists and Queues for Reactivity
konkarin
1
320
Micro Frontendsで築いた 共通基盤と運用の試行錯誤 / Building a Shared Platform with Micro Frontends: Operational Learnings
kyntk
0
100
Building AI with AI
inesmontani
PRO
1
250
開発生産性が組織文化になるまでの軌跡
tonegawa07
0
180
高単価案件で働くための心構え
nullnull
0
150
[堅牢.py #1] テストを書かない研究者に送る、最初にテストを書く実験コード入門 / Let's start your ML project by writing tests
shunk031
11
5.3k
最新のDirectX12で使えるレイトレ周りの機能追加について
projectasura
0
290
Eloquentを使ってどこまでコードの治安を保てるのか?を新人が考察してみた
itokoh0405
0
3.2k
TypeScript 5.9で使えるようになった import defer でパフォーマンス最適化を実現する
bicstone
1
330
Featured
See All Featured
Learning to Love Humans: Emotional Interface Design
aarron
274
41k
Become a Pro
speakerdeck
PRO
29
5.6k
The Power of CSS Pseudo Elements
geoffreycrofte
80
6.1k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
9
980
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
"I'm Feeling Lucky" - Building Great Search Experiences for Today's Users (#IAC19)
danielanewman
231
22k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
130k
Code Review Best Practice
trishagee
72
19k
YesSQL, Process and Tooling at Scale
rocio
174
15k
Building a Modern Day E-commerce SEO Strategy
aleyda
45
8.1k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
234
17k
Build your cross-platform service in a week with App Engine
jlugia
234
18k
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
ご清聴ありがとうございました!