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.7k
Gemini APIを使ってみよう@potatotips#86
umsys
February 07, 2024
Tweet
Share
More Decks by umsys
See All by umsys
Jetpack Composeの スクロールパフォーマンス改善を検証した話
umsys
0
680
ZOZOTOWNアプリでのフルCompos実装取り組み事例
umsys
0
1.3k
Other Decks in Programming
See All in Programming
ポーリング処理廃止によるイベント駆動アーキテクチャへの移行
seitarof
3
950
How to stabilize UI tests using XCTest
akkeylab
0
110
「やめとこ」がなくなった — 1月にZennを始めて22本書いた AI共創開発のリアル
atani14
0
370
Takumiから考えるSecurity_Maturity_Model.pdf
gessy0129
1
140
PostgreSQL を使った快適な go test 環境を求めて
otakakot
0
530
社内規程RAGの精度を73.3% → 100%に改善した話
oharu121
13
7.9k
S3ストレージクラスの「見える」「ある」「使える」は全部違う ─ 体験から見た、仕様の深淵を覗く
ya_ma23
0
310
CSC307 Lecture 14
javiergs
PRO
0
470
エージェント開発初心者の僕がエージェントを作った話と今後やりたいこと
thasu0123
0
240
メタプログラミングで実現する「コードを仕様にする」仕組み/nikkei-tech-talk43
nikkei_engineer_recruiting
0
170
AIコーディングの理想と現実 2026 | AI Coding: Expectations vs. Reality 2026
tomohisa
0
1.2k
AIに任せる範囲を安全に広げるためにやっていること
fukucheee
0
130
Featured
See All Featured
Data-driven link building: lessons from a $708K investment (BrightonSEO talk)
szymonslowik
1
970
Claude Code どこまでも/ Claude Code Everywhere
nwiizo
64
53k
How to build a perfect <img>
jonoalderson
1
5.2k
Rails Girls Zürich Keynote
gr2m
96
14k
Tell your own story through comics
letsgokoyo
1
840
Let's Do A Bunch of Simple Stuff to Make Websites Faster
chriscoyier
508
140k
Fireside Chat
paigeccino
42
3.8k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
360
30k
The Organizational Zoo: Understanding Human Behavior Agility Through Metaphoric Constructive Conversations (based on the works of Arthur Shelley, Ph.D)
kimpetersen
PRO
0
270
What does AI have to do with Human Rights?
axbom
PRO
1
2k
Being A Developer After 40
akosma
91
590k
The MySQL Ecosystem @ GitHub 2015
samlambert
251
13k
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
ご清聴ありがとうございました!