---
# System prepended metadata

title: GDG Build with AI 臺北場 - Gemini 2.0 Flash
tags: [AI工具]

---

# GDG Build with AI 臺北場 - Gemini 2.0 Flash最新功能動手做 個人活動整理筆記
> [time=2025/2/12] 
> [name=製作人:陳子傑 x NTPU GDG on campus]
- [📌Overview](#📌Overview)
    - [Gemini](#Gemini)
    - [Vertex AI](#Vertex-AI)
    - [Google AI Studio](#Google-AI-Studio)
    - [Google Gen AI SDK](#Google-Gen-AI-SDK)

- [📌Gemini 2.0 突出特點](#📌Gemini-2.0-突出特點)
- [📌Gemini 2.0 新功能](#📌Gemini-2.0-新功能)
    - [2.0 Flash Thinking Experimential](#2.0-Flash-Thinking-Experimential)
    - [2.0 Flash Thinking Experimential with apps](#2.0-Flash-Thinking-Experimential-with-apps)
- [📌實際操作一次Google Gen AI SDK(活動現場限定)](#📌實際操作一次Google-Gen-AI-SDK(活動現場限定))
    - [環境設定](#📌實際操作一次Google-Gen-AI-SDK(活動現場限定))
    - [Config調整參數以調整模型請求](#5.-Config調整參數以調整模型請求)
    - [多模態輸入](#6.-多模態輸入)
    - [Live API](#7.-Live-API)
    - [Thinking Model](#8.-Thinking-Model)
## 📌 Overview

###  Gemini
- **多模態輸入與輸出**：
  - 支援文字、圖片、影片、程式碼、音訊等多種格式的輸入。
  - 可生成文字、圖片、程式碼等多樣化輸出。
- **超長上下文窗口**：
  - 上下文窗口可達 **100 萬到 200 萬 Token**。
  - 可更好地處理長篇內容，如長達兩小時的影片。

### Vertex AI
Google Cloud 提供的強大機器學習平台，支援開發者建構、部署和擴展機器學習模型。
- **整合 Gemini**：提供對 Gemini 模型的全面支持。
- **生產就緒**：具備模型訓練、部署、監控等功能，可快速部署至生產環境。

### Google AI Studio
一個基於瀏覽器的免費開發環境，簡單易用，幫助開發者快速使用 Gemini API。
- **直覺式界面**：適合新手開發者進行實驗與原型設計。

### Google Gen AI SDK
幫助開發者將 Google 生成式 AI（包括 Gemini）整合到應用程式中。
- **簡化整合**：簡單易用的 API，可快速處理模型選擇、參數調整等。
- **多語言支持**：支援 **Python、Java、JavaScript** 等程式語言。

## 📌Gemini 2.0 突出特點
1. 表現優秀
2. Response可原生生成文字、圖片、音源(直接原生生成，不用額外調用其他模型)
3. Native Tool Use
- Code Execution :  能夠在生成程式碼後直接執行測試，無需跳轉到其他環境，生成程式碼後即直接內部試跑認證結果，整合性提升。
- Function Calling : Gemini 2.0 具備直接呼叫函式的能力，讓 AI 模型能更靈活地與外部系統互動，透過函式呼叫，Gemini 2.0 能連接各種不同的 API 或服務，擴展其應用範圍。

4. 不再局限於"一問等一答"，Live API 能夠即時處理使用者的輸入，並立即產生回應，無需等待冗長的處理時間。這種即時性使得對話更加流暢自然。
5. Thinking Model，AI 在生成回應前，能進行更深入的分析與推理。

## 📌Gemini 2.0 新功能
<div style="text-align: center;"><img src="https://hackmd.io/_uploads/Bk6zR2uKJl.png" style="width: 60%; border: 2px solid black; padding: 5px;" /></div>

### 2.0 Flash Thinking Experimential
- <div style="text-align: center;"><img src="https://hackmd.io/_uploads/SkDWea_Y1l.png" style="width: 80%; border: 2px solid black; padding: 5px;" /></div>
- <div style="text-align: center;"><img src="https://hackmd.io/_uploads/SJTqg6_Fyg.png" style="width: 80%; border: 2px solid black; padding: 5px;" /></div>
- Gemini 在此會顯示推理步驟，說明他是如何思考的。以高雄與屏東火車站問題，他就會根據"緯度"去判斷誰比較南端，並且去搜尋兩站的緯度，並最終推理正確答案，不會被"高雄在屏東上方"迷惑到。

### 2.0 Flash Thinking Experimential with apps
在 Flash Thinking with apps過程中，Gemini會快速調用 **YouTube、Google 地圖、搜尋** 等應用，已獲得即時圖片、影片、音樂、文章等資訊作為思考依據。
現階段(2025/2/11)最主要適合與 YouTube、Google 地圖和搜尋搭配使用。

- <div style="text-align: center;"><img src="https://hackmd.io/_uploads/rJShhp_F1l.png" style="width: 80%; border: 2px solid black; padding: 5px;" /></div>

- <div style="text-align: center;"><img src="https://hackmd.io/_uploads/H1dDA6dYJl.png" style="width: 80%; border: 2px solid black; padding: 5px;" /></div>


## 📌實際操作一次Google Gen AI SDK(活動現場限定)

### 1. 建立一個新的GCP專案，並將帳單連結到"GCP試用帳單"
### 2. 到[Vertex-cookbook](https://cloud.google.com/vertex-ai/generative-ai/docs/cookbook)中看到Quickstart
### 3. 在Cookbook中進入"Intro to Gemini 2.0 Flash"的Github後，跳到剛剛建立的專案中，VertexAI -> Colab Enterprise，啟用必要的API後就可以進行

<div style="text-align: center;"><img src="https://hackmd.io/_uploads/rk2fmTOY1e.png" style="width: 80%; border: 2px solid black; padding: 5px;" /></div>

<div style="text-align: center;"><img src="https://hackmd.io/_uploads/SkjAXpOKyg.png" style="width: 100%; border: 2px solid black; padding: 5px;" /></div>

<div style="text-align: center;"><img src="https://hackmd.io/_uploads/BySi0bYtJe.png" style="width: 100%; border: 2px solid black; padding: 5px;" /></div>

檢查是否有設定專案 ID 和區域，如果沒有則使用預設值或是從環境變數中取得，我們這邊填寫專案的ID，連結到專案後以驅動Gemini工作。

<div style="text-align: center;"><img src="https://hackmd.io/_uploads/SJulgzYFJe.png" style="width: 100%; border: 2px solid black; padding: 5px;" /></div>

### 4. 正式使用Gemini模型
<div style="text-align: center;"><img src="https://hackmd.io/_uploads/rJmtZGKYyl.png" style="width: 100%; border: 2px solid black; padding: 5px;" /></div>

選擇想要的Gemini模型後，就可以使用`client.models.generate_content`填寫請求model以及我們prompt，使Gemini模型回答答案

### 5. Config調整參數以調整模型請求
<div style="text-align: center;"><img src="https://hackmd.io/_uploads/HyLByl5Ykx.png" style="width: 100%; border: 2px solid black; padding: 5px;" /></div>

每次呼叫模型時，於請求中包含參數值，以控制模型如何產生回應，模型會根據不同的參數值影響生成文本的創造性、隨機性和品質。

#### 調整模型參數
| 參數 | 說明 | 範圍 |
|------|------|------|
| **temperature** | 控制隨機性（值越高，創意性越高） | `0 ~ 1` |
| **top_p** | 確保生成詞語的多樣性 | `0 ~ 1` |
| **top_k** | 選擇概率最高的 K 個詞來生成 | `1 ~ 100` |
| **candidate_count** | 生成候選回應數量，然後選擇其中最佳的一個 | `1 ~ 10` |
| **seed** | 如果每次都使用相同的種子，模型生成的文本將會是相同的，可用於重現結果 | `任意整數` |
| **max_output_tokens** | 限制最大輸出長度 | `50 ~ 4096` |
| **stop_sequences** | 設定停止生成的關鍵字 | `文字字串` |
| **presence_penalty** | 懲罰已經出現過的詞語 | `-2 ~ 2` |
| **frequency_penalty** | 懲罰高頻出現的詞語 | `-2 ~ 2` |

### 6. 多模態輸入

我們在 prompt 的時候，可以將多種形態的資料當作輸入，只要在 contents 內輸入 Part 物件，並指定對應的 mime_type 即可，我們可以將"本地或雲端的圖片、文件檔、程式碼、音檔、影片檔"的url上傳上去，而Gemini即會根據輸入做回答

<div style="text-align: center;"><img src="https://hackmd.io/_uploads/H1RRVx5K1g.png" style="width: 100%; border: 2px solid black; padding: 5px;" /></div>

>[!Note]
>需要使用 Part 物件來封裝不同形態的資料，並指定對應的 mime_type，以告知模型資料的類型。
> ![image](https://hackmd.io/_uploads/BkDAHg5Yyg.png)
> 以上圖為例，我們要上傳pdf檔案，那我們就要**填寫其pdf的url**，以及宣告資料**application/pdf**

### 7. Live API
將上方選取的model切換到gemini-2.0-flash-exp，即可使用具有Live API的model

透過 LiveConnectConfig 設定回應模態（文字或語音）和工具（如語音設定、函數呼叫、程式碼執行、Google 搜尋），即可與 Gemini 進行即時互動。

例如，可以傳送文字 prompt 並接收文字或語音回應，或使用函數呼叫來擴展模型功能，甚至執行程式碼或進行 Google 搜尋。  

### 8. Thinking Model
<div style="text-align: center;"><img src="https://hackmd.io/_uploads/rkuDYxcYyx.png" style="width: 100%; border: 2px solid black; padding: 5px;" /></div>

將上方選取的model切換到gemini-2.0-flash-thinking-exp-01-21，即可使用具有Thinking能力的Gemini的模型中

<div style="text-align: center;"><img src="https://hackmd.io/_uploads/H148tgqY1x.png" style="width: 100%; border: 2px solid black; padding: 5px;" /></div>

GenerateContentConfig(thinking_config=ThinkingConfig(include_thoughts=True))，在Config中要求模型在回應中包含思考過程。

而最終 Gemini 在產生回答的同時，也會一併輸出它的思考步驟，讓你更了解它是如何一步步得出結論。

## GDG Build with AI 臺北場 - Gemini 2.0 Flash最新功能動手做 個人活動整理筆記
- [HackMD 版本](https://hackmd.io/1UkNDGXLSUamVmpfBD8xVg#8.-Thinking-Model)
- [Medium 版本](https://medium.com/@jerry109a/gdg-build-with-ai-%E8%87%BA%E5%8C%97%E5%A0%B4-gemini-2-0-flash%E6%9C%80%E6%96%B0%E5%8A%9F%E8%83%BD%E5%8B%95%E6%89%8B%E5%81%9A-d357f3df96db)
