news 2026/9/9 16:01:27

Gemini API JSON文本摘要实战指南:一次调用把长文变成结构化数据

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Gemini API JSON文本摘要实战指南:一次调用把长文变成结构化数据

Gemini API JSON文本摘要实战指南:一次调用把长文变成结构化数据

【免费下载链接】cookbookExamples and guides for using the Gemini API项目地址: https://gitcode.com/GitHub_Trending/coo/cookbook

处理小说、报告、产品描述这类长材料时,你多半要人肉通读再整理要点。cookbook 项目里的 json_capabilities 示例集,给出了用 Gemini API 做 JSON 文本摘要的现成做法:长文进去,结构化 JSON 数据出来。

🧭 先搞清楚它解决了什么问题

这个功能解决的是"长文进程序"的问题。手动从一篇十章的奇幻故事里摘出人物、地名和情节主线很耗时间;模型直接生成的摘要又是自然语言,没法做条件查询和统计。Gemini API 的 JSON 输出让你先声明要什么数据结构,模型再按结构填内容。拿到手的是一个标准字典:synopsis、genres、locations、characters 各占各的字段,可以直接写进数据库,也能喂给流水线的下一环节。

⚙️ 环境与密钥准备

先装官方 SDK:

pip install -U "google-genai>=1.0.0"

命令跑完无报错即依赖就绪。然后用环境变量初始化客户端,密钥的获取方式和 Colab 里的 Secret 配置细节,见 quickstarts/Authentication.ipynb。

import os from google import genai client = genai.Client(api_key=os.environ["GEMINI_API_KEY"])

这一步没抛异常,说明密钥配置成功;如果报 KeyError,回头检查环境变量名是否拼写正确。

📝 核心流程演示

先告诉模型要输出什么结构

第一件事是定义结果的"形状"。这里声明三个 TypedDict:每个角色带名字、描述、善恶倾向三个字段;每个地点带名字和描述;顶层 TextSummary 再挂上 synopsis 和类型列表。

from typing_extensions import TypedDict class Character(TypedDict): name: str description: str alignment: str class Location(TypedDict): name: str description: str class TextSummary(TypedDict): synopsis: str genres: list[str] locations: list[Location] characters: list[Character]

schema 只定义一次,换输入文本时这段代码完全不用动。用 TypedDict 而不是手写 JSON 字符串的原因也在这:SDK 会把它转成标准 JSON Schema 传给模型,约束是硬性的;而靠在 prompt 里请求"请输出 JSON",模型未必照办。

发起调用时只改两个参数

调用本身没什么变化,关键在 config 里的两个参数:response_mime_type设为application/json声明输出格式;response_schema传入刚定义的 TextSummary,约束字段结构。模型只允许按这个结构输出。

response = client.models.generate_content( model="gemini-3.7-flash", contents=f"Generate a summary of the following story: {story}", config={ "response_mime_type": "application/json", "response_schema": TextSummary, } )

示例 notebook 里 story 先由模型生成;本地跑的时候,把它换成你自己的长文本即可。文本特别长时,可换 notebook 备选的更大模型。

结果一行代码取出来

响应文本此时已经是合法 JSON,不需要自己解析。response.parsed会由 SDK 直接转成 Python 字典。

from pprint import pprint pprint(response.parsed)

预期看到与 schema 一一对应的四个字段,例如:

{'synopsis': 'Elara, a cartographer and adventurer, seeks the lost city of Eldoria, ...', 'genres': ['Fantasy', 'Adventure'], 'characters': [{'name': 'Elara', 'alignment': 'Good', 'description': 'A cartographer...'}], 'locations': [{'name': "Dragon's Tooth Mountains", ...}]}

检查每个字段都有值、没有混进多余的自然语言,通过后这个字典就能直接入库。

🗺️ 换个场景试试

整套流程可以平移到其他文本类型,只需要改 prompt 和 schema:

  • 新闻摘要:schema 改成 title、date、key_points,让模型抽出标题、时间节点与核心事实。
  • 研报要点:声明 conclusion、data_source、risk_notice 字段,输出可直接作为后续报告生成流程的输入。
  • 商品描述解析:声明 product_name、price、specs、target_audience,一次调用把详情页的散乱文案理清。

代码流程原封不动,变的只有 schema 类和那句 prompt。

⚠️ 踩坑速查

  1. 密钥未设置:环境变量里没有 GEMINI_API_KEY 时,genai.Client初始化会直接抛错,先查变量名和拼写。
  2. schema 类型不匹配:TypedDict 的字段类型要和内容对得上。price 是小数却声明成 str、列表字段没写成list[...]并指定元素类型,都会导致校验失败。
  3. 返回 JSON 被截断:输入文本过长时模型可能只输出部分内容,response.parsed解析会报错。把长文分片发送,或换上下文更大的模型。

🔗 延伸阅读

  • examples/json_capabilities/Text_Summarization.ipynb — 完整示例 notebook,含故事生成
  • quickstarts/JSON_mode.ipynb — JSON 输出模式基础用法
  • examples/json_capabilities/Entity_Extraction_JSON.ipynb — 实体抽取变体,同一套手法
  • quickstarts/Authentication.ipynb — 密钥获取与 Colab 配置

到这里,"声明 schema、改两个参数、parsed 取出"这条链路就能让你把长文变成结构化数据。下次再遇到文本解析需求,改一下 schema 就能开工:

git clone https://gitcode.com/GitHub_Trending/coo/cookbook

【免费下载链接】cookbookExamples and guides for using the Gemini API项目地址: https://gitcode.com/GitHub_Trending/coo/cookbook

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/9/9 15:58:58

软件测试面试深度剖析:高频考点与实战应对策略

1. 软件测试面试到底在考什么每年一到金三银四、金九银十,我后台收到最多的私信就是“测试面试题有没有整理好的版本”或者“有没有软件测试面试必背100例”。说实话,这类资料网上不缺,缺的是能把题目背后的考察逻辑讲清楚的内容。很多人背了…

作者头像 李华
网站建设 2026/9/9 15:57:21

安卓Recovery无人值守自动擦除:AOSP源码与BCB命令实战

1. 项目缘起:这需求到底要解决什么问题这段时间手头一直在做安卓设备的定制化改造,客户提了个很实际的需求:设备从产线下来,或者从租户手里收回来之后,需要保证里面的历史数据被彻底清掉。以前靠人手动进Recovery模式&…

作者头像 李华
网站建设 2026/9/9 15:56:08

C语言文件操作核心指南:流、缓冲区与读写API实战

不知不觉,文件操作成了很多C语言学习者的一道坎。数组、指针、结构体还能在终端里跑跑看,可一旦涉及文件读写,就完全进入另一套逻辑。这几天后台收到不少“C语言文件操作”相关的问题:有人问我fscanf和fprintf为什么老用不对&…

作者头像 李华
网站建设 2026/9/9 15:53:49

5分钟把数据库变成自然语言问答助手:WrenAI 新手实操教程

5分钟把数据库变成自然语言问答助手:WrenAI 新手实操教程 【免费下载链接】WrenAI GenBI (Generative BI) for AI agents, an open-source, governed text-to-SQL through an open context layer that turns natural-language questions into trusted dashboards, c…

作者头像 李华
网站建设 2026/9/9 15:52:38

测试策略制定方法:从风险分析到模板落地全指南

测试策略这个词,在软件测试领域里被提了无数次,但真正能用好的团队其实不多。多数情况是项目启动时花两天写一份几十页的策略文档,评审会上大家翻一遍,然后整个迭代里再也没人打开过它。问题出在哪?大部分策略文档写成…

作者头像 李华