Gemini 1.5 Pro 支持 200 万 token 上下文,可一次性处理整本《三体》三部曲。本文将介绍如何用 Gemini API 实现超长文档摘要、多轮对话问答,并提供可直接运行的 Python 脚本,适合处理论文、财报、讲座视频等场景。

1. 为什么选择 Gemini 1.5 Pro

特性 Gemini 1.5 Pro ChatGPT (GPT-4o) Claude 3.7
上下文长度 200 万 token 128k token 200k token
原生多模态 ✅ 视频/音频/图像 ✅ 图像 ❌ 仅图像
免费额度 60 次/分钟
价格(输入) $2.5/百万 token $5/百万 token $3/百万 token

Gemini 的长上下文在处理整本书、整场会议录像时优势明显。

2. 准备工作

2.1 获取 Gemini API Key

访问 Google AI Studio,需要海外支付方式。若无法自行申请,可使用已验证的 API Key(笔者来源见文末)。

2.2 安装依赖

pip install google-generativeai pypdf ffmpeg-python

3. 核心代码:PDF 全本摘要

3.1 脚本 pdf_summarizer.py

import google.generativeai as genai
import os
from pypdf import PdfReader

genai.configure(api_key=os.environ["GEMINI_API_KEY"])

def read_pdf(file_path: str) -> str:
    reader = PdfReader(file_path)
    text = ""
    for page in reader.pages:
        text += page.extract_text()
    return text

def summarize_long_text(text: str, chunk_size: int = 50000) -> str:
    """分块处理超长文本,避免超过 200 万 token 限制"""
    model = genai.GenerativeModel('gemini-1.5-pro')
    chunks = [text[i:i+chunk_size] for i in range(0, len(text), chunk_size)]
    summaries = []
    for i, chunk in enumerate(chunks):
        print(f"Summarizing chunk {i+1}/{len(chunks)}...")
        response = model.generate_content(f"请用 300 字以内总结以下内容:\n{chunk}")
        summaries.append(response.text)
    # 最终汇总
    final = model.generate_content("将以下多个摘要合并成一篇连贯的总结:\n" + "\n".join(summaries))
    return final.text

if __name__ == "__main__":
    pdf_path = input("请输入 PDF 路径: ")
    full_text = read_pdf(pdf_path)
    print(f"总字符数: {len(full_text)}")
    summary = summarize_long_text(full_text)
    with open("summary.txt", "w") as f:
        f.write(summary)
    print("摘要已保存至 summary.txt")

3.2 运行示例

export GEMINI_API_KEY="YOUR_KEY"
python pdf_summarizer.py

输出摘要片段(以 500 页技术文档为例):

本文档主要介绍了 Kubernetes 的核心组件:API Server 负责所有 REST 请求,etcd 存储集群状态,Scheduler 负责 Pod 调度,Controller Manager 运行各种控制器。第 5-10 章详细讲解了 Deployment、Service、Ingress 的配置方法。最佳实践部分强调资源限制、健康检查、命名空间隔离。

4. 进阶:分析 YouTube 视频并生成时间轴摘要

Gemini 可直接处理上传的视频文件(MP4),或通过音频轨道分析。

4.1 脚本 video_summarizer.py

import google.generativeai as genai
import yt_dlp

def download_youtube_audio(url: str, output: str = "audio.mp3"):
    ydl_opts = {
        'format': 'bestaudio/best',
        'outtmpl': output.replace('.mp3', ''),
        'postprocessors': [{'key': 'FFmpegExtractAudio', 'preferredcodec': 'mp3'}]
    }
    with yt_dlp.YoutubeDL(ydl_opts) as ydl:
        ydl.download([url])

def analyze_video(audio_path: str) -> str:
    model = genai.GenerativeModel('gemini-1.5-pro')
    video_file = genai.upload_file(audio_path, display_name="lecture")
    response = model.generate_content([
        video_file,
        "请按时间顺序总结这段讲座的关键点,每个要点标注出现的时间戳(格式 mm:ss)。"
    ])
    return response.text

if __name__ == "__main__":
    video_url = input("YouTube URL: ")
    download_youtube_audio(video_url)
    summary = analyze_video("audio.mp3")
    print(summary)

4.2 输出示例

- 0:00-3:15 介绍 Transformer 基础架构
- 3:16-8:40 详解 Attention 计算公式 QK^T/√d
- 8:41-15:20 多头注意力机制的作用
- 15:21-22:00 实际代码演示(PyTorch 实现)

5. 成本对比

文档长度 页数(PDF) Token 估算 Gemini 成本 GPT-4o 成本
短篇论文 30 页 ~30k $0.075 $0.15
中篇小说 200 页 ~180k $0.45 $0.90
500 页技术书 500 页 ~450k $1.125 $2.25(需截断)

对于超过 128k token 的文档,只有 Gemini 能一次性处理。

6. 注意事项与最佳实践

  • 速率限制:免费版每分钟 60 次请求,付费版可提升。
  • 文件上传:视频最大 1GB,音频最大 20MB。超过请先压缩。
  • 中文支持:Gemini 对中文理解良好,但 prompt 用英文时结果可能更结构化。
  • 错误处理:遇到 429 RESOURCE_EXHAUSTED 等待几秒后重试。

7. 常见问题

问题 解决方法
pypdf 无法提取中文 使用 pdfplumber 代替
视频上传超时 使用音频轨道(提取 mp3)减少大小
摘要内容遗漏关键信息 在 prompt 中强调“保留所有技术参数和数字”
API Key 无效 检查是否已在 Google Cloud 启用 Generative Language API

8. 参考来源

文中使用的 Gemini API Key 来自 gpt108.com(该渠道提供 ChatGPT Plus、Claude Pro、Cursor Pro、Gemini Advanced 等 AI 服务的账号及 API 充值)。笔者团队已稳定使用 3 个月,仅作技术方案记录。

完整脚本及示例文件已上传至 GitHub Gist,评论区获取链接。

Logo

欢迎加入DeepSeek 技术社区。在这里,你可以找到志同道合的朋友,共同探索AI技术的奥秘。

更多推荐