← 返回列表
数据处理工作流

open311-pipeline:芝加哥 311 市民服务请求的流式 LLM 紧迫度分类与数据仓库流水线

tjromack/open311-pipeline · Streaming civic-data pipeline: Chicago 311 → Kafka → Claude urgency classification (Langfuse-traced) → DuckDB or Snowflake via idempotent MERGE → dbt SLA marts. Runs with no accounts: make demo-local.

GitHub原文发布 未知首次收录 2026-10-08上架 2026-10-08 07:02

☆ 收藏查看项目 ↗

ELI5:它是什么,解决什么问题

该项目是一个可复用的「流 → 分类 → 数据仓库 → 建模」市民数据流水线模板:轮询 Open311(芝加哥 311)请求,写入按 service_request_id 分键的 Kafka,用 Claude Haiku 4.5 对请求做结构化输出的紧迫度分级(每次调用在 Langfuse 中留有 trace),失败进入死信队列,再通过幂等 MERGE 写入 DuckDB(默认)或 Snowflake,最后由 dbt 构建部门 SLA 合规度数据模型。项目提供无需账号、无需 API key 的本地演示(make demo-local / make demo-local-nokafka),演示回放 300 条真实芝加哥 311 请求及其由 Claude Haiku 4.5 标注的标签;另有一条路径可从城市数据门户加载整个财年(约 212 万行)并测量整体队列的 SLA 合规度。仓库含 61 个 pytest 测试与 45 个 dbt 数据测试,覆盖 schema 漂移、DLQ、MERGE 幂等性等失效模式。README 明确指出其 SLA 阈值为项目自设而非芝加哥官方标准。

核心能力与快速开始

★ 0 · Python

能做什么
支持「流 → 分类 → 数据仓库 → 建模」全流程:轮询 Open311 并发布到 Kafka(按 service_request_id 分键);使用 Claude Haiku 4.5 进行结构化输出的紧迫度分类,每次调用记录为 Langfuse trace(含 prompt、结构化输出、token 计数与 prompt_version),trace ID 存回仓库行;分类或解析失败路由到 civic.requests.dlq 而非中断消费者;通过幂等 MERGE 写入 DuckDB(默认)或 Snowflake;用 dbt 构建 staging / intermediate / marts,产出部门 SLA 合规度模型。附带无需账号与 API key 的本地演示:回放 300 条真实芝加哥 311 请求及其实际模型标签(CLASSIFIER_MODE=replay),另加载城市门户整财年夹具并对比「仅已关闭」与「整体创建队列」的 SLA 口径。含 61 个 pytest 测试与 45 个 dbt 数据测试,覆盖上游 API 异常(429、畸形记录、重复轮询)、schema 漂移、DLQ 路由、MERGE 幂等、门户加载与标签一致性等失效模式。
适用场景
适合数据/分析工程师评估「把 LLM 分类当作带 tracing、DLQ 与数据测试的流水线阶段」这一模式;作为运营团队需要模型增强事件进入可用 SQL 审计的仓库时的可复用模板;用于演示流式 LLM 分类接入数据仓库时的幂等 MERGE、死信队列与 dbt 漂移检测实践;借助本地无账号演示快速观察「仅统计已关闭请求」对 SLA 合规度的向上偏差(README 称 FY2026 约高估 6.2 个百分点)。
项目形态
开发框架
部署方式
提供本地演示路径:make demo-local(需 Docker,夹具经 Kafka 到 DuckDB 并跑 dbt build 与 SLA 报告)与 make demo-local-nokafka(无 Docker,约 10 秒);本地分类需设置 ANTHROPIC_API_KEY 以接入 Claude 实时调用。门户整财年加载命令 make portal-load FY=2026 约 22 分钟下载,仓库增至约 230 MB。README 称曾于 2026-05-27 在 Snowflake 上做过实况验证,但该 Snowflake 试用已过期,门户路径仅写入 DuckDB。
主要依赖
Python 3.12;依赖 requirements.txt(含 Kafka、DuckDB、dbt 等);本地完整演示需 Docker 运行。实时分类需 ANTHROPIC_API_KEY。README 提到每次分类约 1,290 输入 token、约 100 输出 token,按 Haiku 4.5 的每百万 token 1 美元 / 5 美元计价约每次 0.0018 美元(300 次约 0.54 美元,约每 1,000 次 1.80 美元);对 210 万行做逐请求标注预估约 3,800 美元,因此门户路径按服务类型分类。其他部署条件、硬件与 API 成本限制未说明。
使用限制
README 自述局限:仅覆盖单一城市(芝加哥)Open311 流、单一 7 天窗口与 300 条分类标签,按类别统计的 SLA 百分比样本量小(如 4 条鼠患投诉),仅为线索而非结论;该样本的 SLA 数值因只取已关闭请求而偏高(Low 的 153/153 属构造使然);门户路径的紧迫度按服务类型而非逐请求给定(与逐请求标签一致率 97%,240 条中 232 条),FY 数据为 2026-10-06 快照,仍有 1,365 条待处理,1,066 条被重复引用引到的父请求不在公开门户中;门户路径仅写 DuckDB,其模型能在 Snowflake 解析但未在其上运行;SLA 阈值是项目自设而非芝加哥官方标准,项目不派单、不预测关闭时间;分类器与盲标人工标签的精确一致率为 54%(剔除涂鸦为 39%),Cohen's κ 为 0.32。未说明其他限制。
许可证
MIT
最近推送
2026-10-07 09:03

资料检查:2026-10-08 07:00 · 卡片整理:2026-10-08 07:00
卡片由 AI 根据仓库资料整理,未进行安装或运行验证 · 本次更新未完成,保留上次成功内容

职业应用

程序员

作为可复用的「流 → 分类 → 数据仓库 → 建模」流水线模板,供数据/分析工程师评估该模式:轮询 Open311 请求、写入 Kafka、用 Claude Haiku 4.5 做结构化输出的紧迫度分级、失败进入死信队列、通过幂等 MERGE 写入 DuckDB 或 Snowflake,再由 dbt 构建 SLA 数据模型;仓库含 61 个 pytest 测试与 45 个 dbt 数据测试,覆盖 schema 漂移、DLQ、MERGE 幂等性等失效模式,可用于参考实现与测试设计。

查看内容依据
A working civic-data pipeline and a reusable template for **stream → classify → warehouse → model**

官方使用入口 ↗

由 AI 根据来源材料整理,未进行安装或运行验证

产品经理

用于数据分析与 SLA 合规度衡量:项目提供无需账号、无需 API key 的本地演示,回放 300 条真实芝加哥 311 请求及其由 Claude Haiku 4.5 标注的标签,并可从城市数据门户加载整个财年(约 212 万行)测量整体队列的 SLA 合规度,输出部门 SLA 合规度数据模型,供产品经理参考市民请求的紧迫度分级与合规度分析。

查看内容依据
dbt turns them into department SLA-compliance marts

官方使用入口 ↗

由 AI 根据来源材料整理,未进行安装或运行验证

这是基于来源内容整理的摘要。原文链接失效后,本页摘要和讨论仍会保留。

讨论 0

登录后参与讨论,阅读资讯无需注册。

还没有评论,来分享第一个看法。