Python调用Gemini Structured Outputs实现工单路由门禁
客服工单最怕的不是模型“答错一句话”而是它给出一段看起来合理的说明程序却从中猜错优先级。通俗做法是要求模型只交 JSONJavaScript Object Notation轻量数据格式再让代码验证它。Gemini API 的 Structured Outputs 能按 JSON Schema 生成结果本篇用 Python 把退款、账号和普通咨询分流并在模型输出越界时拒绝自动流转。你会得到一条能复制、能超时、能降级的最小链路。为什么不直接解析一段自然语言结构化输出的作用是规定“输出长什么样”不是保证事实正确。Schema 让字段和枚举更稳定业务规则仍要由服务端负责。本文把priority限在 low、normal、high把queue限在三个队列。模型若返回未知值程序转到人工队列。当前官方文档把它用于抽取、分类和 Agent 工作流并通过response_format的application/json与 schema 配置。通过失败/超时工单文本Gemini JSON Schema解析JSON枚举与业务规则进入对应队列人工复核队列环境准备使用 Python 3.10。安装依赖python -m pip install google-genai。把密钥放入环境变量export GEMINI_API_KEY你的密钥。模型名示例为文档中的gemini-3.8-flash你的账号可用模型与配额仍需在控制台确认。保存为ticket_router.py运行python ticket_router.py。示例未在本次任务中实际调用线上 API本地仅完成语法检查目标环境安装依赖后应再作一次无敏感数据的联调。importjsonimportosfromgoogleimportgenai ALLOWED_QUEUES{refund,account,general}ALLOWED_PRIORITY{low,normal,high}SCHEMA{type:object,properties:{queue:{type:string,enum:sorted(ALLOWED_QUEUES)},priority:{type:string,enum:sorted(ALLOWED_PRIORITY)},reason:{type:string}},required:[queue,priority,reason]}defsafe_route(raw:str)-dict:try:datajson.loads(raw)exceptjson.JSONDecodeError:return{queue:human_review,reason:JSON无法解析}ifdata.get(queue)notinALLOWED_QUEUES:return{queue:human_review,reason:未知队列}ifdata.get(priority)notinALLOWED_PRIORITY:return{queue:human_review,reason:未知优先级}returndatadefclassify(ticket:str)-dict:ifnotos.getenv(GEMINI_API_KEY):return{queue:human_review,reason:缺少GEMINI_API_KEY}clientgenai.Client()try:resultclient.interactions.create(modelgemini-3.8-flash,inputticket,response_format{type:text,mime_type:application/json,schema:SCHEMA},timeout20)returnsafe_route(result.output_text)exceptExceptionasexc:return{queue:human_review,reason:f调用失败:{type(exc).__name__}}if__name____main__:print(classify(订单重复扣款请尽快退款))assertsafe_route({queue:refund,priority:high,reason:重复扣款})[queue]refund代码分两层SCHEMA提前缩小模型输出空间safe_route再做独立验证不能因为 API 承诺 JSON 就省略它。timeout20是为了不让一个慢请求占住 Web 工作线程生产环境还应设置 HTTP 客户端级超时、重试次数和熔断。genai.Client()从环境读取密钥不要把密钥写进仓库。预期输出有密钥且调用成功时类似{queue: refund, priority: high, reason: ...}没配密钥则是人工复核。最常见的坑有一Schema 只约束格式不会自动核验订单真伪二枚举改了却没同步服务端白名单三超时后盲目重试造成同一工单被重复创建四把模型理由直接展示给用户而泄露内部规则。适合把“先分给谁处理”自动化不适合直接批准退款或关闭投诉。工程化时把原始文本、模型版本、schema 版本、路由结果和人工改判一起记录每周抽样计算错分率。5分钟实践新增security队列并写一个断言确保模型返回delete_database时永远进入human_review。你的工单里哪一个字段一旦分类错就不该自动流转关注「蜗牛聊AI」一起看懂技术变化背后的真正机会。本文首发于 java4u.cn转载请注明出处。

相关新闻

先xor再add反运算:逆向题加密逻辑拆解与Python脚本实现

先xor再add反运算:逆向题加密逻辑拆解与Python脚本实现

简介:这份docx文档聚焦数据恢复与逆向工程中的核心难点,面向具备一定二进制运算基础的安全从业者与逆向爱好者,系统讲解“先异或再加法”的反运算推导思路。内容围绕字节拆分、固定字节定位、二次异或消除位模式等关键技巧展开,通…

2026/10/11 0:01:27 阅读更多 →
企业4A数字化架构演进与治理:从身份管理到零信任的落地实践

企业4A数字化架构演进与治理:从身份管理到零信任的落地实践

最近在企业数字化的交流圈里,4A数字化架构是被反复点名的话题。一份标着“122页满分可编辑PPT——企业4A数字化架构演进与治理方案”的材料,乍看是个PPT模板,实际上更像甲方请乙方做咨询交付物时的“骨架级”参考。很多人找这份材料&#xff…

2026/10/11 0:01:27 阅读更多 →
政务API安全治理:资产测绘、低代码编排与行标对标实践

政务API安全治理:资产测绘、低代码编排与行标对标实践

政务单位这两年最头疼的事情清单里,API安全绝对排得上号。业务上云、数据共享、移动办公、“一网通办”这些事儿推进得越快,API接口数量就越失控——有的部门自己都说不清到底开了多少个接口,哪些是长期的,哪些是测试临时开的&…

2026/10/11 0:01:27 阅读更多 →

最新新闻

FastAPI和Django免写前端:用Swagger、Admin、Gradio自动生成项目首页

FastAPI和Django免写前端:用Swagger、Admin、Gradio自动生成项目首页

先说一个经常会遇到的场景。用FastAPI和Django做后端项目,接口、模型、业务逻辑都写好了,最后却卡在一个特别不起眼的地方:首页。运营要一个能看数据的面板,测试要一个能调接口的页面,领导要一个能点按钮演示的环境。手…

2026/10/11 0:54:07 阅读更多 →
Django视图选型与生产部署:FBV/CBV取舍及Nginx+uWSGI实战

Django视图选型与生产部署:FBV/CBV取舍及Nginx+uWSGI实战

很多人写Django视图,第一反应是“能用就行”。FBV随手写个函数、return一句render,项目跑起来也算顺顺利利。可一旦业务复杂起来,同一个列表页要分页、要筛选、要权限控制,你再从头手写一遍逻辑,写到第三遍就忍不住想骂…

2026/10/11 0:54:07 阅读更多 →
Python里的None差点让我加班到天亮

Python里的None差点让我加班到天亮

凌晨两点,盯着日志里那个诡异的 None,我意识到自己又栽在了这个「老熟人」手里——一个本以为是基础知识的坑,却在生产环境的异步任务中爆发,差点让整个数据 pipeline 瘫痪。 你以为的None,真的只是你以为吗&#xff1…

2026/10/11 0:54:07 阅读更多 →
Vue的computed属性居然还能这么坑?

Vue的computed属性居然还能这么坑?

上周线上环境突然报警,一个高频使用的订单汇总页面出现数据错乱。定位后发现,竟是 Vue 的 computed 属性在响应式依赖更新时出现「短路」现象——这个看似人畜无害的特性,在特定场景下会悄悄埋下定时炸弹。今天掏心窝子聊聊这个深坑&#xff…

2026/10/11 0:54:07 阅读更多 →
SpringBoot3升级后Knife4j文档请求异常:根因分析与三步入坑修复指南

SpringBoot3升级后Knife4j文档请求异常:根因分析与三步入坑修复指南

先自报一个场景:我最近把一个老项目的服务从 Spring Boot 2.7 升到 Spring Boot 3.2,顺手把接口文档组件也换成了 Knife4j 的最新版。原本以为只是改个依赖、重启就完事,结果打开/doc.html时直接白屏,控制台刷了一堆Failed to loa…

2026/10/11 0:54:07 阅读更多 →
DeepSeekHarness 接入 TaoToken 统一 Key 通道:CSDN 场景下的配置与验证

DeepSeekHarness 接入 TaoToken 统一 Key 通道:CSDN 场景下的配置与验证

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

2026/10/11 0:53:07 阅读更多 →

日新闻

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

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

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

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

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

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

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

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

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

2026/10/11 0:00:27 阅读更多 →

周新闻

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

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

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

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

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

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

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

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

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

2026/10/11 0:00:27 阅读更多 →

月新闻

我发现了一个新思路:用 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/10 5:23:50 阅读更多 →
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/9 21:32:20 阅读更多 →
黑夜航拍船只数据集训练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/10 10:38:42 阅读更多 →