banner
andrewji8

Being towards death

Heed not to the tree-rustling and leaf-lashing rain, Why not stroll along, whistle and sing under its rein. Lighter and better suited than horses are straw sandals and a bamboo staff, Who's afraid? A palm-leaf plaited cape provides enough to misty weather in life sustain. A thorny spring breeze sobers up the spirit, I feel a slight chill, The setting sun over the mountain offers greetings still. Looking back over the bleak passage survived, The return in time Shall not be affected by windswept rain or shine.
telegram
twitter
github

從零到一:如何利用谷歌Gemini構建下一代AI應用

image

玩轉谷歌 Gemini:從零到一,解鎖下一代 AI 應用開發#

我將為各位同學深度解析一個寶藏級的官方開源項目 ——gemini-samples。它就像一本為 Gemini 開發者量身打造的 “武功秘籍”,包含了從入門到精通的各種即用型代碼示例和權威指南。本文將作為你的專屬向導,帶你把這個項目從頭到尾、由淺入深地 “吃透”。我們將不僅告訴你 “怎麼做”,更會解釋 “為什麼這麼做”,為你構建一個完整而堅實的 Gemini 技術知識體系。在這場深度探索之旅中,你將收穫:

  • 宏觀視野:理解 Gemini 在整個 AI 生態中的定位及其革命性意義。
  • 堅實基礎:從零開始,穩扎穩打地配置好開發環境,並成功運行你的第一個 Gemini 程序。
  • 核心揭秘:深度解構函數調用(Function Calling)、多模態(Multimodality)、AI 智能體(Agentic Patterns)三大核心支柱的內在邏輯與實踐技巧。
  • 生態整合:學會如何將 Gemini 與 LangChain、CrewAI 等業界主流框架強強聯合,構建複雜應用。
  • 高階心法:掌握上下文緩存(Context Caching)、代碼執行器(Code Executor)等高級技巧,讓你的應用性能更高、成本更低。

第一章:啟程之前:項目概覽與環境搭建#

在深入探索 Gemini 的魔法之前,我們需要先熟悉我們的 “藏宝图”——gemini-samples 項目,並搭建好我們的 “煉金實驗室”。

1.1 項目全景圖:不止於示例#

gemini-samples 是一個官方維護的 GitHub 代碼倉庫,它遠不止是一個簡單的示例集合,更是一個動態更新、緊跟技術前沿的實踐知識庫。GitHub 鏈接:gemini-samples

讓我們先快速瀏覽一下它的項目結構,做到心中有數:

  • 📁 examples/: 項目的核心寶庫,包含了針對 Gemini 各種具體功能的大量 Jupyter Notebook 示例,是動手實踐的最佳起點。
  • 📁 guides/: 更偏向於系統性的教程,通常會圍繞一個主題(如函數調用、智能體)進行深入、完整的講解。
  • 📁 scripts/: 一些可以直接在終端運行的 Python 實用腳本,展示了如何將 Gemini 的能力封裝成獨立的工具。
  • 📁 assets/: 存放示例中用到的各種資源文件,如圖片、音頻、PDF 文檔等。

這個項目的主要特點是:

  • 權威性與全面性:覆蓋了從文本生成到視頻理解,從簡單 API 調用到複雜智能體構建的全鏈路功能。
  • 實踐性與可操作性:所有示例都提供了完整的代碼和依賴,你可以直接下載、運行、修改,在實踐中學習。
  • 前沿性與動態性:項目會持續更新,第一時間跟進 Gemini 模型的最新特性,如 Gemini 1.5 Pro 的長上下文、原生音視頻理解等。

1.2 搭建 “煉金實驗室”:三步搞定!#

“工欲善其事,必先利其器”。一個穩定、配置正確的開發環境是成功的開端。

第一步:安裝必要的 Python “魔藥”

你需要安裝 Google 的官方 SDK 以及一些輔助庫。強烈建議使用虛擬環境(如 venv 或 conda)來管理項目依賴,避免版本衝突。

# 創建並激活虛擬環境 (推薦)
python -m venv gemini-env
source gemini-env/bin/activate  # a Mac/Linux
# gemini-env\Scripts\activate # a Windows

# 安裝核心庫和常用依賴
pip install google-generativeai pillow

# 安裝其他示例中可能用到的生態庫
# langchain/*: 強大的LLM應用開發框架
# crewai: 用於創建多智能體協作系統
# pydantic: 用於數據校驗和結構化輸出
pip install "langchain-google-genai" langchain crewai pydantic youtube-transcript-api

第二步:獲取你的專屬 “通行證”——API 密鑰

要與 Gemini 的雲端大腦進行通信,你需要一個專屬的 API 密鑰。訪問 Google AI for Developers,登錄你的谷歌賬戶,點擊 “Create API key” 按鈕,生成你的密鑰。

安全警示:這個密鑰是你賬戶的憑證,絕對不要直接寫在代碼裡或上傳到 GitHub 等公共平台!

第三步:配置你的開發環境

最安全、最推薦的做法是使用環境變量來管理你的 API 密鑰。

import os
import google.generativeai as genai
from google.colab import userdata  # 如果在 Google Colab 中

# 優先從 Colab 的 Secrets 中讀取,這是在 Colab 中的最佳實踐
# 或者從系統環境變量中讀取
# 你可以在終端中設置: export GOOGLE_API_KEY="YOUR_API_KEY"
api_key = userdata.get('GOOGLE_API_KEY', os.environ.get("GOOGLE_API_KEY"))
genai.configure(api_key=api_key)

當這三步完成後,你的 “煉金實驗室” 就正式宣告竣工。現在,讓我們開始施展真正的魔法吧!🔬

第二章:核心能力深度揭秘#

gemini-samples 項目通過 examplesguides 文件夾,為我們系統地揭示了 Gemini 的三大核心能力支柱。

2.1 函數調用 (Function Calling):賦予 AI 與世界互動的 “手腳”#

這可能是 Gemini 最具革命性的功能之一。它徹底改變了 LLM 只能 “說” 不能 “做” 的局面。

核心理念剖析:想像一下,AI 是一個超級聰明的大腦,但它被關在一個玻璃盒子裡,無法與外界互動。函數調用就是為這個大腦接上了可以控制外部世界的 “手” 和 “腳”。當大腦(模型)判斷需要執行某個現實世界的操作時(比如查天氣、發郵件、查詢數據庫),它不會自己去執行,而是會生成一個標準化的 “指令”(一個包含函數名和參數的 JSON 對象),請求外部的 “手腳”(你的代碼)來執行。你的代碼執行完後,再把結果告訴大腦,大腦再用自然語言告訴你最終答案。

關鍵示例解讀

  • guides/function-calling.ipynb: 必读入門指南。它會帶你走過完整的流程:如何用 Python 定義一個函數,如何將這個函數 “註冊” 給模型,模型如何返回調用請求,以及你如何回傳執行結果。
  • examples/gemini-sequential-function-calling.ipynb: 進階必看。展示了更複雜的場景,比如用戶問 “幫我查一下谷歌和英偉達的股價,然後告訴我哪個更高?”。模型能夠智能地規劃出需要分兩步調用 get_stock_price 函數,並對結果進行比較。
  • examples/gemini-google-search.ipynb: 實用典範。教你如何將強大的谷歌搜索能力封裝成一個 Gemini 可以隨時調用的工具,讓你的 AI 應用具備實時、準確的信息獲取能力。

代碼片段深度賞析 (簡化版)

# 1. 定義你的“工具箱”,裡面是具體的函數
def get_stock_price(symbol: str) -> float:
    """獲取指定股票的當前價格。"""
    # 在真實應用中,這裡會調用真實的股票API
    print(f"---正在調用工具:查詢股票 {symbol} 的價格---")
    if "GOOG" in symbol.upper():
        return 175.57
    elif "NVDA" in symbol.upper():
        return 120.88
    else:
        return 100.0

# 2. 創建模型實例,並“裝備”上你的工具箱
model = genai.GenerativeModel(
    model_name="gemini-1.5-pro-latest",
    tools=[get_stock_price]  # 將函數本身作為工具傳遞
)
chat = model.start_chat(enable_automatic_function_calling=True)  # 開啟自動函數調用

# 3. 像正常聊天一樣提出你的需求
response = chat.send_message("谷歌現在的股價是多少?")
# 因為開啟了 enable_automatic_function_calling=True
# SDK 會自動處理函數調用和結果返回的中間步驟
# 你可以直接得到最終的自然語言回答

# 6. 模型生成最終回答
print(response.text)  # 輸出: 谷歌的當前股價是 175.57 美元。

2.2 原生多模態:當 AI 不再 “偏科”,文理雙全#

Gemini 從設計之初就是多模態的,這意味著它理解世界的方式和人類更接近 —— 通過融合多種感官信息。

核心理念剖析:傳統的 AI 模型往往是 “偏科生”,有的擅長文本,有的擅長圖像。而 Gemini 是一個 “全科狀元”,它能將文本、圖片、音頻、視頻等不同模態的信息,在同一個 “思維空間” 裡進行統一的理解和推理。你可以扔給它一張複雜的圖表照片和一句 “分析一下這張圖的趨勢”,它能像人類分析師一樣看懂圖表並給出結論。

關鍵示例解讀

  • examples/gemini-native-image-out.ipynb: 顛覆性功能。展示了 Gemini 1.5 Flash 的新能力 —— 直接生成圖像作為輸出!這開啟了全新的應用可能,比如 “幫我畫一個正在沙灘上看書的卡通小狗”。
  • examples/gemini-transcribe-with-timestamps.ipynb: 音頻處理利器。可以精準地將一段音頻(如會議錄音)轉換成文字,並且為每個詞語都標註上開始和結束的時間戳,對於製作字幕、會議紀要整理等場景極為有用。
  • examples/gemini-analyze-transcribe-youtube.ipynb: 綜合應用典範。它將多種能力融會貫通:自動從 YouTube 下載視頻、提取音頻、進行轉錄、最後對視頻核心內容進行總結。這是一個完整而強大的內容分析工作流。

代碼片段深度賞析 (圖片理解)

import PIL.Image
import requests
from io import BytesIO

# 加載一張網絡圖片
url = "https://storage.googleapis.com/generativeai-downloads/images/cats_and_dogs.jpg"
response = requests.get(url)
img = PIL.Image.open(BytesIO(response.content))

# 選擇一個具備視覺理解能力的模型 (Gemini Pro Vision 或更高版本)
model = genai.GenerativeModel("gemini-1.5-pro-latest")

# 將圖片和你的問題,像聊天內容一樣打包發送給模型
prompt = [
    "請你扮演一位專業的寵物攝影評論家。",
    "詳細描述一下這張圖片裡的場景、動物的情緒以及構圖的優缺點。",
    img  # 直接將圖片對象傳入
]
response = model.generate_content(prompt)
print(response.text)  # 輸出示例:這是一張充滿溫馨感的寵物攝影作品...

2.3 AI 智能體模式 (Agentic Patterns):從 “工具” 到 “自主工作者”#

如果說函數調用是給 AI 提供了 “手腳”,那麼多模態是給 AI 提供了 “眼睛” 和 “耳朵”,而智能體模式,則是教會 AI 如何自主地使用這些感官和工具去完成一個複雜的目標。

核心理念剖析:一個 “智能體” (Agent) 不再是一個被動等待指令的工具,而是一個主動的 “工作者”。你給它一個宏觀的目標(比如 “幫我規劃一次為期三天的北京旅遊”),它會自己思考、規劃、並執行一系列子任務:

  • 思考 (Reason): “嗯,規劃旅遊需要考慮天氣、景點、交通和住宿。”
  • 規劃 (Plan): “第一步,用搜索工具查一下北京未來三天的天氣。第二步,搜索熱門景點並分類。第三步...”
  • 行動 (Act): 調用 search_weather(city='北京')search_attractions(city='北京') 等工具。
  • 反思 (Reflect): “天氣預報有雨,故宮可能不適合,需要調整計劃。”

這個 “思考 - 行動 - 觀察 - 再思考” 的循環,就是智能體的核心工作模式,也常被稱為 ReAct (Reason + Act) 框架。

關鍵示例解讀

  • guides/agentic-pattern.ipynb: 理論基石。系統地介紹了構建智能體的幾種關鍵設計模式,如反思、規劃、多智能體協作等,是理解智能體思想的必讀材料。
  • guides/langgraph-react-agent.ipynb: 高級實戰。使用 LangChain 的子項目 LangGraph,手把手教你構建一個真正的 ReAct 風格智能體,讓你看到智能體內部的 “思考過程”。
  • examples/gemini-crewai.ipynb: 團隊作戰。CrewAI 框架讓構建多智能體系統變得異常簡單。你可以定義一個 “市場研究員” Agent、一個 “文案寫手” Agent 和一個 “社交媒體運營” Agent,讓它們組成一個自動化團隊,完成 “為新產品寫一篇推廣文案並發布” 的複雜任務。

第三章:高階心法與實戰利器#

掌握了核心能力後,gemini-samples 還為我們準備了一些能讓應用 “降本增效” 的高階技巧。

3.1 上下文緩存 (Context Caching):讓長文檔處理又快又省#

核心痛點:當你的應用需要反復查詢一份非常長的文檔(比如一本幾百頁的 PDF、一個複雜的代碼庫)時,如果每次請求都把整個文檔上傳一遍,會產生高昂的費用和不必要的網絡延遲。

解決方案:上下文緩存就像是為模型針對特定長文檔創建了一個 “專屬短期記憶”。你先把整個文檔發送一次進行 “緩存”,並得到一個輕量的 “記憶句柄”。之後的所有相關提問,你只需要發送這個句柄和你的新問題即可,模型會直接從它的 “專屬記憶” 中查找答案,速度極快且成本極低。

相關示例:examples/gemini-context-caching.ipynb

3.2 結構化輸出 (Structured Outputs):告別繁瑣的文本解析#

核心痛點:很多時候,我們希望模型返回的是嚴格格式化的數據(如 JSON),以便程序直接使用。單純依靠提示詞 “請返回 JSON 格式” 並不可靠,模型偶爾還是會 “自由發揮”,導致程序解析失敗。

解決方案:Gemini API 允許你直接提供一個 JSON Schema 來定義你想要的輸出結構。這就像是給模型一個 “填空題模板”,模型會嚴格按照你定義的字段、類型和層級來生成結果,保證了輸出的穩定性和可靠性。

相關示例:examples/gemini-structured-outputs.ipynbexamples/gemini-meta-prompt-structured-outputs.ipynb

3.3 代碼執行器 (Code Executor):解鎖科學計算與數據分析的超能力#

核心痛點:語言模型本質上不擅長精確的數學計算和複雜的數據操作。你問它 “1234 * 5678”,它可能會算錯。

解決方案:代碼執行器工具賦予了模型一個內置的、沙箱化的 Python 執行環境。當模型識別到需要計算或數據分析的任務時,它會自動編寫一小段 Python 代碼,在這個沙箱裡執行,然後將代碼的運行結果作為它回答的依據。這讓 Gemini 在數據分析、金融計算等領域的應用能力產生了質的飛躍。

相關示例:examples/gemini-code-executor-data-analysis.ipynb

第四章:融入生態,強強聯合#

一個偉大的技術平台必然擁有一個繁榮的生態。gemini-samples 也為我們展示了如何將 Gemini 與其他流行的 AI 框架和工具進行無縫集成。

  • LangChain & LangGraph: 作為目前最火的 LLM 應用開發框架,LangChain 為構建複雜的 AI 應用提供了強大的抽象和組件。

    • examples/gemini-langchain.ipynb: 展示了如何將 Gemini 作為 LangChain 的核心 LLM 來驅動整個應用鏈。
    • guides/langgraph-react-agent.ipynb: 使用 LangGraph 的圖狀結構來構建狀態可控、邏輯清晰的高級智能體。
  • CrewAI: 專注於多智能體協作的框架,讓創建和編排一個 “AI 員工團隊” 變得輕而易舉。

    • examples/gemini-crewai.ipynb: 如果你想構建一個自動化工作流,讓不同角色的 AI 協同工作,這個例子是你的不二之選。
  • JavaScript & Node.js: javascript-examples/ 文件夾下的示例證明了 Gemini 的能力並不局限於 Python,你完全可以在你的 Node.js 後端服務中集成 Gemini。

  • 實用腳本寶庫: scripts/ 文件夾是座被低估的金礦。裡面有 gemini-image-meta.py (分析圖片並提取 EXIF 元數據)、veo3-generate-viral-vlogs.py (利用 Veo 模型生成病毒式視頻博客腳本) 等可以直接改造用於生產的精彩腳本。

總結與展望:你的 AI 創世之旅,由此開啟#

gemini-samples 項目如同一位博學而耐心的導師,通過其系統化、實踐性的內容,為我們鋪就了一條從入門到精通的康莊大道。知識的吸收終究需要通過實踐來內化。這篇文章為你繪製了詳細的地圖,但真正的寶藏需要你親自去發掘。現在,就打開 gemini-samples 的 GitHub 頁面,選擇一個你最感興趣的 Notebook,親手運行它、調試它、修改它,甚至將兩三個示例組合起來,創造一個全新的應用!

比如,你可以嘗試:

  • gemini-analyze-transcribe-youtube.ipynbgemini-crewai.ipynb,創建一個 “YouTube 視頻深度分析報告生成團隊”。
  • gemini-context-caching.ipynbgemini-code-executor-data-analysis.ipynb,打造一個可以上傳公司財報並進行深度數據問答的智能分析工具。

AI 的未來充滿了無限可能,而這未來,正由像你這樣的開發者們,一行行代碼地構建出來。你的 AI 創世之旅,就從這裡開始。

載入中......
此文章數據所有權由區塊鏈加密技術和智能合約保障僅歸創作者所有。