← 返回教程
教程教程

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月*

相关教程