教程教程
Gemini 2.5 百万token上下文实战
作者: 管理员发布: 2026/4/29👁 7096❤️ 153
利用Gemini 2.5的100万token上下文处理大型代码库和长文档。
# Gemini 2.5 百万token上下文实战
Google Gemini 2.5 Pro 拥有100万token超长上下文,本教程教你如何处理大型代码库、长文档分析等实际场景。
## 一、100万token意味着什么?
| 内容 | 大约token数 | 100万能装 |
|------|-----------|----------|
| 中文 | 1字≈1.5token | ~67万字 |
| 代码 | 1行≈10token | ~10万行 |
| PDF | 1页≈500token | ~2000页 |
| 小说 | ~10万token | ~10本 |
**实际意义:可以一次把整个项目代码、整本教科书、几百页PDF丢给AI分析。**
## 二、准备工作
### 获取API Key
1. 访问 Google AI Studio (aistudio.google.com)
2. 点击 "Get API Key" → 创建项目 → 复制Key
### 安装和基础调用
```bash
pip install google-generativeai
```
```python
import google.generativeai as genai
genai.configure(api_key="your_api_key")
model = genai.GenerativeModel(
model_name="gemini-2.5-pro",
generation_config={"temperature": 0.7, "max_output_tokens": 8192}
)
```
## 三、实战1:分析整个代码库
### 读取项目所有文件
```python
import os
def read_project(project_dir, extensions=None):
if extensions is None:
extensions = ['.py', '.js', '.ts', '.jsx', '.tsx', '.java', '.go']
all_code = []
for root, dirs, files in os.walk(project_dir):
dirs[:] = [d for d in dirs if d not in ['node_modules', '.git', '__pycache__', 'dist', '.next']]
for file in files:
if os.path.splitext(file)[1] in extensions:
filepath = os.path.join(root, file)
try:
with open(filepath, 'r', encoding='utf-8') as f:
content = f.read()
all_code.append(f"# ===== {filepath} =====\n{content}")
except: pass
return "\n\n".join(all_code)
code = read_project("./my-project")
```
### 代码审查
```python
response = model.generate_content(f"""请分析以下完整项目代码库:
1. 项目概述:做什么的?技术栈?
2. 架构分析:画出架构图(文字描述)
3. 代码质量:找bug、安全漏洞、性能问题
4. 改进建议:5条具体优化建议
5. 测试建议:哪些模块最需补充测试?
{code}
""")
print(response.text)
```
### 生成项目文档
```python
response = model.generate_content(f"""根据代码生成:
1. README.md(介绍、安装、使用)
2. API文档(接口请求/响应示例)
3. 架构设计文档
4. 部署指南
{code}
""")
```
## 四、实战2:长文档分析
### 处理PDF
```python
import fitz # pip install PyMuPDF
def extract_pdf(path):
doc = fitz.open(path)
return "".join(page.get_text() for page in doc)
pdf_text = extract_pdf("annual_report.pdf")
response = model.generate_content(f"""分析这份财报:
1. 营收利润关键数据 2. 同比增长 3. 三大业务板块
4. 风险因素 5. 通俗总结核心信息
{pdf_text}
""")
```
### 多文件对比
```python
# 读取多个版本合同,让AI找出差异
contracts = []
for f in ["v1.txt", "v2.txt", "v3.txt"]:
with open(f) as fh: contracts.append(f.read())
response = model.generate_content(f"""对比三个合同版本:
1. 具体差异(逐条)2. 对甲乙方利弊变化
3. 新增/删除条款 4. 修改建议
{"|".join(contracts)}
""")
```
## 五、实战3:批量数据
### 日志分析
```python
with open("server.log") as f:
logs = f.read()
response = model.generate_content(f"""分析服务器日志:
1. 错误统计 2. 频繁错误及原因 3. 性能瓶颈
4. 可疑安全事件 5. 修复建议
{logs[:900000]}
""")
```
## 六、注意事项
### Token优化
```python
# 用上下文缓存避免重复发送大文档
from google.generativeai import caching
import datetime
cache = caching.CachedContent.create(
model="gemini-2.5-pro",
system_instruction="你是代码审查专家",
contents=[code],
ttl=datetime.timedelta(hours=2),
)
model_cached = genai.GenerativeModel.from_cached_content(cache)
response = model_cached.generate_content("有什么安全问题?")
```
### 最佳实践
- 实际使用控制在80万token以内
- 大上下文响应较慢(30秒-2分钟)
- 重要信息放前面(AI关注度更高)
- 知识库问答场景用RAG更好,全量分析场景用长上下文
## 总结
**适用场景:** 全代码库审查、长文档对比、日志分析、批量数据处理
**不适用的场景:** 知识库问答、搜索特定信息(用RAG)
> 📌 关注AI导航,第一时间获取最新AI模型动态!
*最后更新:2026年4月*