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 创世之旅,就从这里开始。

読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。