Google AI Studio × Streamlit

APIから議事録アプリまで作ってみよう

1. はじめに / 今日やること

今日のゴールは、Google AI Studio の API を Python から呼び出し、Streamlit で簡単な議事録作成アプリを動かしてみることです。

今日やること

  • Google AI Studio の API キーを準備する
  • Python からテキスト生成 API を叩いてみる
  • 画像・音声を投げてみる
  • Streamlit でフロントを用意して、議事録作成アプリにする
  • 時間があれば、各自のアイデアを少しだけ形にしてみる

📡 オンライン接続の確認

画面は見えていますか?
音声は聞こえていますか?

問題がある場合は、Zoom のチャットなどでお知らせください。

Samurai

2. APIキーの作成

まずは、Google AI Studio で API キーを発行します。

手順
絶対にやってはならないこと
  • API キーを Git にプッシュする
  • スクリーンショットなどでキーをそのまま共有する

.env や環境変数で管理する運用を意識していきましょう。

また、Google AI Studio では入力したテキストが学習に利用される可能性があるため、 機密情報や個人情報をそのまま入力しないよう十分に注意してください。

Character

3. PythonでAPIを呼び出してみる

仮想環境の作成とライブラリのインストール

公式クイックスタートを参考に進めます。

# 仮想環境を作成して有効化(例) python -m venv .venv source .venv/bin/activate # Windows の場合は .venv\Scripts\activate # Google GenAI SDK をインストール pip install -q -U google-genai

テキストを投げてみる

from google import genai # 直書き(非推奨) ※実際は環境変数などから取得する client = genai.Client(api_key="") response = client.models.generate_content( model="gemini-3-flash-preview", contents="あなたは誰?" ) print(response.text)
Ninja

4. 画像・音声を読み込ませてみる

画像を読むためのライブラリを追加

pip install pillow

画像 + プロンプトで投げる

from PIL import Image from google import genai client = genai.Client(api_key="") image = Image.open("画像パス") response = client.models.generate_content( model="gemini-3-flash-preview", contents=[image, "画像について説明して"] ) print(response.text)

音声をアップロードして文字起こし

from google import genai client = genai.Client(api_key="") myfile = client.files.upload(file="音声ファイルパス") response = client.models.generate_content( model="gemini-3-flash-preview", contents=["日本語で文字起こしして", myfile] ) print(response.text)
Ninja

5. Streamlitで議事録アプリにしてみる

最後は、Streamlit で簡単な UI を用意して、音声ファイルをアップロードして文字起こしするアプリにします。

import streamlit as st from google import genai from google.genai.types import Part st.title("Gemini 音声文字起こし") # APIキー api_key = st.sidebar.text_input("API Key", type="password") uploaded_file = st.file_uploader("音声ファイルをアップロード", type=["mp3","wav","m4a"]) if api_key and uploaded_file: client = genai.Client(api_key=api_key) with st.spinner("文字起こし中..."): # 拡張子取得 suffix = uploaded_file.name.split(".")[-1] temp_filename = f"temp_audio.{suffix}" # 一時保存 with open(temp_filename, "wb") as f: f.write(uploaded_file.read()) # Geminiにアップロード myfile = client.files.upload(file=temp_filename) # 文字起こし response = client.models.generate_content( model="gemini-3-flash-preview", contents=[ "日本語で正確に文字起こしして議事録形式にまとめてください", Part.from_uri( file_uri=myfile.uri, mime_type=myfile.mime_type ) ] ) st.subheader("結果") st.write(response.text)

まずはこのサンプルをベースに、自分の業務や興味に合わせたアプリケーションに少しずつ改造していきましょう。

Samurai

6. まとめ & 次の一歩

今日は、APIキーの発行 → Python からの呼び出し → 画像・音声 → Streamlit アプリまで一気に体験しました。

  • API キーや機密情報は絶対に公開リポジトリに上げない
  • まずはサンプルを動かしてから、少しずつ改造していく
  • 「こんなことに使えそう?」というアイデアがあれば、ぜひ共有してください

時間があれば、この後は各自のアイデアを少しだけ形にしていく時間にしていきましょう。

HAGAKURE Logo
1 / 7