Gemini Pro API接入指南:多模态AI应用开发与实战测试
这次我们来看一个关于 Gemini Pro 订阅和 Gemini 3.6 模型使用的技术话题。对于开发者、AI应用爱好者以及需要处理多模态任务的技术团队来说如何稳定、高效地获取和使用谷歌的 Gemini 系列模型始终是一个核心关切点。本文不会讨论任何网络访问的细节而是聚焦于一个核心问题如何基于官方或合规的渠道来理解、评估并尝试接入 Gemini 模型特别是其 API 服务与多模态能力。我们将重点关注几个实用维度Gemini API 的基本功能与调用方式、不同版本模型如 Gemini 1.5 Pro, Gemini 3.6的能力差异、本地或云端调用的资源考量、以及如何构建一个简单的测试流程来验证文本、图像、文档处理等核心功能。无论你是想集成AI能力到自己的应用还是单纯希望体验最新的多模态模型这篇文章都将提供一套清晰的、可落地的技术验证路径。1. 核心能力速览能力项说明与备注模型类型多模态大语言模型 (MLLM)支持文本、图像、视频、音频部分版本、文档PDF, PPT等作为输入并生成文本输出。核心功能复杂推理、多轮对话、代码生成、多语言翻译、图像/文档内容理解与描述、信息提取等。主要接口基于 HTTP 的 REST API提供同步和流式响应。通常通过 Google AI Studio 或 Vertex AI 进行管理。硬件门槛无本地部署要求。主要消耗资源在调用端网络、计算用于预处理和API服务端。本地测试仅需能发起HTTPS请求的环境。成本模式按使用量计费每千字符输入/输出。通常提供免费额度供开发者起步测试。版本关注点Gemini 1.5 Pro支持超长上下文百万token级。Gemini 3.6可能指特定版本或迭代需在API中指定模型ID。Gemini Pro通用的专业版本。启动方式无需“启动”。获取API密钥后通过代码调用或工具如curl、Postman直接请求云端服务。是否支持批量API本身支持在单次请求中处理多个内容片段大规模批量需自行管理请求队列与频率限制。适合场景应用集成、原型验证、内容分析与生成、研究测试、需要强大多模态理解而非本地算力的场景。2. 适用场景与使用边界适合谁用应用开发者希望为产品添加智能对话、内容分析、文档总结等AI功能。研究人员与学生需要多模态模型进行实验、对比或完成特定任务。内容创作者与运营用于批量生成文案草稿、分析图片内容、处理多语言材料。技术爱好者希望体验和测试前沿大模型的多模态能力。能解决什么问题复杂问答与推理基于提供的文本、图片甚至PDF文件回答深入问题。内容生成与转换根据图像生成描述、将会议纪要改写成邮件、进行多语言翻译。代码辅助解释代码、生成代码片段、在不同编程语言间转换。文档信息提取从上传的PDF、PPT中快速提取关键信息、生成摘要。多轮对话系统构建能记住上下文、支持多模态输入的聊天机器人。不适合什么场景完全离线的环境Gemini 是云端服务需要稳定的网络连接。对数据出境有严格限制的内部系统需考虑数据通过API发送至谷歌云端的合规性。极低延迟或实时性要求极高的场景API调用存在网络往返延迟。需要完全定制化模型权重或微调底层架构普通API访问不支持此操作。合规与安全边界数据隐私发送至API的数据将按照服务提供商的政策进行处理。切勿上传个人敏感信息、商业秘密或未授权的版权材料进行测试。内容安全生成的內容需符合法律法规不得用于生成违法、侵权、欺诈或有害信息。授权使用确保使用API生成内容尤其是商用时拥有所有输入素材如图片、文档的合法授权。3. 环境准备与前置条件使用 Gemini API 不需要配置复杂的本地深度学习环境但需要准备好开发环境和账户。操作系统任意Windows, macOS, Linux均可只要能运行 Python/Node.js 或能发送 HTTP 请求。编程环境可选但推荐Python 3.8使用官方google-generativeaiSDK 最方便。Node.js 18可使用对应的 Node.js SDK。也可直接使用curl命令或 Postman 等工具进行原始 API 调用。网络连接需要能够访问 Google AI 服务的网络环境。注此部分仅陈述技术事实不涉及任何具体方法Google 账户与 API 密钥拥有一个 Google 账户。访问 Google AI Studio 。按照指引创建项目并生成 API 密钥。请妥善保管此密钥不要泄露或提交到代码仓库。计费账户如需超出免费额度在 Google Cloud Console 中为项目启用结算功能但通常有免费的初始配额。4. 获取API密钥与安装SDK这是“启动”Gemini服务的关键步骤。4.1 获取API密钥打开浏览器访问 Google AI Studio (https://aistudio.google.com)。使用你的Google账户登录。在界面中找到创建或选择已有项目。进入“Get API key”页面创建一个新的API密钥。复制生成的密钥字符串将其保存在安全的地方如环境变量。4.2 安装Python SDK在终端或命令提示符中执行以下命令pip install -U google-generativeai这个库会处理认证、请求构造和响应解析。4.3 设置API密钥环境变量方式为了避免在代码中硬编码密钥推荐将其设置为环境变量。在Linux/macOS的终端export GOOGLE_API_KEYYOUR_ACTUAL_API_KEY_HERE在Windows的命令提示符set GOOGLE_API_KEYYOUR_ACTUAL_API_KEY_HERE在Windows PowerShell$env:GOOGLE_API_KEYYOUR_ACTUAL_API_KEY_HERE设置后SDK会自动读取这个环境变量。5. 功能测试与效果验证我们将通过几个核心用例来验证Gemini Pro模型的能力。请确保已完成上述环境准备。5.1 基础文本生成测试测试目的验证API连通性及模型的基础文本理解和生成能力。操作步骤创建一个Python脚本例如test_text.py。使用以下代码import google.generativeai as genai import os # 配置API密钥如果已设置环境变量 GOOGLE_API_KEY则无需此步 # genai.configure(api_keyos.environ[GOOGLE_API_KEY]) # 选择模型例如 gemini-1.5-pro-latest 或 gemini-1.0-pro-latest model genai.GenerativeModel(gemini-1.5-pro-latest) # 发起对话 response model.generate_content(用一句话解释量子计算的核心原理。) print(response.text)预期结果输出一句关于量子计算原理的、连贯的说明文字。判断成功成功收到非空的、语义合理的文本响应且无认证错误。常见失败网络错误、API密钥无效或未设置、模型名称错误。5.2 多模态图像内容理解测试目的验证模型理解图像内容的能力。操作步骤准备一张测试图片例如test_image.jpg内容可以是一杯咖啡、一座建筑或一个图表。创建脚本test_vision.py。import google.generativeai as genai import PIL.Image # 加载本地图片 img PIL.Image.open(test_image.jpg) model genai.GenerativeModel(gemini-1.5-pro-latest) # 将图片和文本问题一起传入 response model.generate_content([请详细描述这张图片里的内容。, img]) print(response.text)预期结果模型返回对图片中物体、场景、颜色、文字等元素的详细描述。判断成功描述准确与图片内容相符。常见失败图片路径错误、图片格式不支持、模型未正确识别多模态输入格式。5.3 文档处理PDF/PPT测试目的验证模型处理上传文档并提取信息的能力。操作步骤准备一个简单的PDF测试文件例如一份产品单页brochure.pdf。创建脚本test_document.py。Gemini API 支持直接上传文件需通过upload_file方法。import google.generativeai as genai import os genai.configure(api_keyos.environ[GOOGLE_API_KEY]) # 上传文件到Google的临时存储 file genai.upload_file(path./brochure.pdf) # 等待文件处理完成异步 print(f文件状态: {file.state.name}) model genai.GenerativeModel(gemini-1.5-pro-latest) # 基于文档内容提问 response model.generate_content([ 总结这个文档的主要产品特点和目标客户。, file ]) print(response.text)预期结果模型能够读取PDF中的文本内容并给出符合文档信息的总结。判断成功总结抓住了文档要点。常见失败文件上传失败权限、大小限制、文档内容为纯图片OCR能力可能有限、免费额度耗尽。5.4 多轮对话聊天测试目的验证模型在会话中保持上下文的能力。操作步骤import google.generativeai as genai model genai.GenerativeModel(gemini-1.5-pro-latest) # 开启一个聊天会话 chat model.start_chat(history[]) # 第一轮 response chat.send_message(法国的首都是哪里) print(f模型: {response.text}) # 第二轮模型应能记住上下文 response chat.send_message(它有哪些著名的艺术博物馆) print(f模型: {response.text})预期结果第一轮回答“巴黎”第二轮能列举卢浮宫等位于巴黎的博物馆。判断成功第二轮回答基于第一轮的上下文且信息正确。常见失败会话对象未正确维护历史记录。6. 接口API与批量任务6.1 直接HTTP API调用示例了解底层API有助于集成到非Python环境。以下是一个使用curl调用文本生成端点的示例# 将 YOUR_API_KEY 替换为你的真实密钥 curl -X POST \ -H Content-Type: application/json \ -d { contents: [{ parts:[{ text: 写一首关于春天的五言绝句。 }] }] } \ https://generativelanguage.googleapis.com/v1beta/models/gemini-1.5-pro-latest:generateContent?keyYOUR_API_KEY你会收到一个JSON响应从中提取text字段。6.2 批量任务处理策略API本身有速率限制大规模批量处理需要设计队列。通用策略本地队列使用Python的queue模块或Celery等任务队列将待处理任务文本、文件路径放入队列。控制并发与延迟使用asyncio或concurrent.futures控制同时发起的API请求数避免触发速率限制。在每个请求间添加短暂延迟如time.sleep(0.5)。错误处理与重试网络超时、速率限制HTTP 429、服务器错误HTTP 5xx是常见的。代码中必须包含重试逻辑例如使用tenacity库和异常捕获。结果保存将每个请求的输入和输出包括可能的错误信息关联保存到数据库或文件如JSONL格式便于追溯和续跑。简单批量示例框架import requests import json import time from concurrent.futures import ThreadPoolExecutor, as_completed API_KEY os.environ[GOOGLE_API_KEY] MODEL gemini-1.5-pro-latest URL fhttps://generativelanguage.googleapis.com/v1beta/models/{MODEL}:generateContent?key{API_KEY} headers {Content-Type: application/json} def call_api(prompt): payload { contents: [{ parts:[{text: prompt}] }] } for attempt in range(3): # 重试3次 try: resp requests.post(URL, headersheaders, jsonpayload, timeout30) resp.raise_for_status() return resp.json() except requests.exceptions.RequestException as e: print(f请求失败: {e}, 第{attempt1}次重试...) time.sleep(2 ** attempt) # 指数退避 return None # 待处理的提示词列表 prompts [提示词1, 提示词2, 提示词3, ...] results [] # 使用线程池控制并发例如最大5个并发 with ThreadPoolExecutor(max_workers5) as executor: future_to_prompt {executor.submit(call_api, p): p for p in prompts} for future in as_completed(future_to_prompt): prompt future_to_prompt[future] try: result future.result() results.append({prompt: prompt, result: result}) except Exception as e: results.append({prompt: prompt, error: str(e)}) time.sleep(0.5) # 请求间隔 # 保存结果 with open(batch_results.jsonl, w) as f: for r in results: f.write(json.dumps(r, ensure_asciiFalse) \n)7. 资源占用与性能观察由于是云端服务本地资源占用极低性能观察重点在于网络延迟、Token消耗和费用。网络延迟使用代码计时或浏览器开发者工具观察从发送请求到收到第一个响应字节的时间TTFB。这直接影响用户体验。Token 计数与成本API 调用返回的响应中通常包含usage_metadata里面有prompt_token_count和candidates_token_count。总Token数直接影响费用。长上下文模型如Gemini 1.5 Pro在处理长文本时输入Token可能很多需关注成本。在发送请求前可以用SDK的count_tokens方法预估。model genai.GenerativeModel(gemini-1.5-pro-latest) response model.count_tokens(一段需要预估token数的文本) print(response.total_tokens)速率限制免费版和付费版都有每分钟/每天的请求次数和Token数限制。超出会返回429错误。需要在控制台查看配额并在代码中做好限流。本地资源主要消耗在文件预处理如图片编码、文档加载和网络请求的序列化/反序列化上。处理大量本地文件时注意内存和CPU占用。8. 常见问题与排查方法问题现象可能原因排查方式解决方案google.generativeai导入错误或安装失败Python环境问题、pip版本过低、网络问题检查Python版本(python --version)升级pip(pip install -U pip)使用国内镜像源使用虚拟环境确保网络通畅或尝试pip install google-generativeai --trusted-host pypi.org --trusted-host files.pythonhosted.orgPermissionDenied: 403错误API密钥无效、未启用API服务、项目配额耗尽1. 检查API密钥字符串是否正确且已设置。2. 访问Google Cloud Console确保Generative Language API已启用。3. 检查配额和结算账户状态。重新生成API密钥在Cloud Console启用对应API检查并升级配额。InvalidArgument: 400错误请求格式错误、模型名称不对、输入内容违规安全策略检查请求体JSON结构、模型ID拼写。查看错误信息详情。参照官方API文档修正请求格式使用正确的模型ID如gemini-1.5-pro-latest。避免输入违规内容。ResourceExhausted: 429错误达到速率限制或配额上限查看响应头中的retry-after信息。检查Cloud Console中的配额使用情况。降低请求频率实现指数退避重试逻辑。申请提高配额或等待限制重置通常是每分钟。请求超时网络不稳定、请求内容过大如图片/文档、服务端处理慢检查本地网络。使用工具测试到generativelanguage.googleapis.com的连通性。增加请求超时时间如timeout60优化输入压缩图片、分片长文档重试请求。图片/文档处理失败文件格式不支持、文件损坏、文件过大检查文件是否正常可读。查阅官方文档支持的文件格式和大小限制。转换图片格式如JPG/PNG确保PDF是文本型而非扫描件分割大文件。响应内容为空或被拦截触发了内容安全过滤器查看完整响应可能有safety_ratings字段提示被拦截原因。调整输入的提示词或内容避免涉及敏感、有害或疑似不当的请求。无法保持多轮对话上下文未正确使用chat会话对象或每次都是新的generate_content检查代码是否使用model.start_chat()创建会话并用chat.send_message()连续发送。确保对话历史被正确维护在chat对象中而不是每次新建会话。9. 最佳实践与使用建议从免费额度开始始终先在免费配额内进行充分的功能和成本测试理解Token消耗模式。密钥安全管理永远不要将API密钥硬编码在客户端代码或公开的仓库中。使用环境变量、密钥管理服务或后端代理。设置预算警报在Google Cloud Console中为项目设置预算和警报防止意外超额消费。优化输入以减少Token对于长上下文模型清理不必要的输入文本对图片进行适当压缩在保持可识别的前提下以节省成本。实现健壮的错误处理网络服务不稳定是常态。代码必须包含重试、降级如返回默认值和详细日志记录。验证输出质量对于生产应用不能完全信任模型输出。建立人工或自动化的复核机制特别是用于事实性回答、代码生成或重要决策的场景。关注模型更新模型ID中的-latest后缀会自动指向最新版本。如需稳定性建议在测试后使用具体版本号如gemini-1.5-pro-001。合规使用内容确保你有权处理所有输入素材用户上传的图片、文档并告知用户数据将发送至第三方AI服务进行处理。对生成的内容进行合规审查。10. 总结与下一步Gemini Pro 系列API提供了一个强大、便捷的多模态AI能力入口免去了本地部署庞大模型的硬件和运维成本。对于开发者而言最快速的价值验证路径就是获取API密钥 - 用SDK跑通一个文本生成示例 - 尝试上传一张图片进行描述 - 处理一个PDF文档。这个流程能在半小时内让你对其核心能力有一个直观感受。最容易踩的坑通常是API密钥配置错误、网络问题导致的超时以及忽视速率限制。按照本文的排查清单大部分问题都能快速定位。下一步你可以深入探索高级功能函数调用Function Calling、嵌入Embeddings、自定义提示词模板。系统集成将Gemini API封装成内部微服务结合业务逻辑如客服工单分类、报告自动摘要。性能与成本优化分析不同任务下各模型版本如Pro vs. Flash的性价比设计缓存策略。安全与合规加固在API网关层添加内容过滤、用户审计和访问控制。建议将本文中的代码片段和排查方法收藏备用它们能帮助你在集成Gemini API时节省大量摸索时间。技术迭代很快但掌握与云端AI服务交互的核心方法论——认证、调用、错误处理、成本控制——是长期受益的。

相关新闻

APMCM亚太赛全流程实战:从赛题解构到论文撰写的96小时极限指南

APMCM亚太赛全流程实战:从赛题解构到论文撰写的96小时极限指南

1. 从赛题发布到实战:一次完整的亚太赛备赛与解题心路 看到“2020年第十届APMCM亚太地区大学生数学建模竞赛赛题发布”这个标题,很多同学的第一反应可能是点开链接,看看今年又出了什么“神仙题目”。但对于真正想在这个比赛中有所斩获的团队来…

2026/10/12 13:29:55 阅读更多 →
AI Agent、Agentic AI与AI工作流:概念辨析与实战选型指南

AI Agent、Agentic AI与AI工作流:概念辨析与实战选型指南

1. 概念辨析:从名词到本质最近和不少同行、客户交流,发现一个挺有意思的现象:大家嘴里都挂着“Agentic AI”、“AI Agent”、“AI工作流”这些词,但细聊下来,发现每个人理解的重点都不一样,甚至有些混淆。这…

2026/10/12 11:07:01 阅读更多 →
深入理解gpt-macro工作原理:Rust proc macro与ChatGPT API集成揭秘

深入理解gpt-macro工作原理:Rust proc macro与ChatGPT API集成揭秘

深入理解gpt-macro工作原理:Rust proc macro与ChatGPT API集成揭秘 【免费下载链接】gpt-macro ChatGPT powered Rust proc macro that generates code at compile-time. 项目地址: https://gitcode.com/gh_mirrors/gp/gpt-macro gpt-macro是一款基于ChatGPT…

2026/9/28 17:50:54 阅读更多 →

最新新闻

律师智能办案系统有哪些法律ai推荐?先看你的年预算在哪一档

律师智能办案系统有哪些法律ai推荐?先看你的年预算在哪一档

这个问题被问得很多,但脱离预算谈推荐没有意义。同样一支团队,年预算五千和年预算十万,答案完全不同。按三档来说。第一档:年预算基本为零这一档的现实约束是"能用免费的先用免费"。可关注的:通义法睿&#…

2026/10/15 4:05:46 阅读更多 →
JetBrains Rider下载和安装教程

JetBrains Rider下载和安装教程

一、JetBrains Rider下载 官网下载地址:https://www.jetbrains.com.cn/rider/ 下载完成! 二、JetBrains Rider 安装 1. 双击.exe文件 2. 点击,下一步 3. 点击浏览可以修改安装地址,然后点击下一步 4. 勾选四个选项&#xff…

2026/10/15 4:05:46 阅读更多 →
成片缺来源栏,等于把返工留给上线|数字明星日更样本

成片缺来源栏,等于把返工留给上线|数字明星日更样本

视听链路里,生成式内容要看得见来源。来源栏不是片尾口号,是观众和平台都能核对的一栏。空着交付,上线后再补,往往比省下的剪辑时间更贵。日更组容易把「好看」当成完成。对采购来说,好看只是门槛;来源说得…

2026/10/15 4:05:46 阅读更多 →
碰碰好评卡全流程开发实战 从需求梳理到上线落地完整指南

碰碰好评卡全流程开发实战 从需求梳理到上线落地完整指南

碰碰好评卡全流程开发实战 从需求梳理到上线落地完整指南 碰碰好评卡是连接线下实体商家与C端用户的评价激励数字化工具,解决了传统纸质好评卡易丢失、核销难、数据无沉淀的痛点,可广泛应用于餐饮、美业、零售、生活服务等线下场景。本文将从需求梳理、架…

2026/10/15 4:05:46 阅读更多 →
MP2642GR-Z与PIC18F46K22两串电池主动均衡系统设计

MP2642GR-Z与PIC18F46K22两串电池主动均衡系统设计

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 4:05:46 阅读更多 →
双电机项目的学习记录1

双电机项目的学习记录1

cubemx里的配置问题,为什么这样配System Core → RCC → High Speed Clock (HSE) 选 Crystal/Ceramic Resonator所以才这样配置是为了精度更高-----------------------------------------------------------------------------------------------------------------…

2026/10/15 4:04:46 阅读更多 →

日新闻

Docker Compose 容器化部署 ChirpStack LoRaWAN 网络服务器实战

Docker Compose 容器化部署 ChirpStack LoRaWAN 网络服务器实战

1. 为什么选择容器化方式部署 LoRa 网络服务LoRa 物联网项目落地时,网络服务器是整个链路的核心枢纽。它负责接收网关上报的数据包、完成去重与解密、再把有效载荷分发给上层应用。早期大家习惯把网络服务器直接装在物理机上,依赖一堆系统库和特定版本的…

2026/10/15 0:00:46 阅读更多 →
共享LLM服务下的跨模型自动扩缩容:Kubernetes实战与避坑指南

共享LLM服务下的跨模型自动扩缩容:Kubernetes实战与避坑指南

1. 共享推理服务里,扩缩容到底难在哪做过大模型推理服务部署的人,大概都经历过这样的场景:一个团队共用一套推理集群,A 业务跑的是 7B 的小模型,B 业务跑的是 72B 的大模型,C 业务白天流量高、晚上几乎归零…

2026/10/15 0:00:46 阅读更多 →
Systemd 启动阶段根文件系统只读之谜:fstab 与 remount-fs 服务深度解析

Systemd 启动阶段根文件系统只读之谜:fstab 与 remount-fs 服务深度解析

1. 引子:一次内核恐慌引发的追查先从一个真实场景说起。某次我给一台老旧的嵌入式设备折腾系统裁减,为了把启动时间压进两秒以内,我手贱地把一串自认为“没用”的 systemd 服务给 disable 了,其中就包括systemd-remount-fs.servic…

2026/10/15 0:00:46 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/14 3:30:28 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/14 16:30:29 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/14 3:29:58 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 0:14:36 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/14 22:45:47 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/14 7:53:34 阅读更多 →