如何用自然语言过滤DataFrame?fenic semantic.predicate与semantic.map实战
发布时间:2026/11/4 11:55:09 锦皓数字建站

【免费下载链接】fenicSemantic DataFrames for humans and agents项目地址https://gitcode.com/gh_mirrors/fe/fenic点击查看免费下载fenic 是一个为 LLM 推理而生的 Semantic DataFrames 框架它让你用一句自然语言就能完成 DataFrame 的过滤与转换。本文带你上手 fenic 最常用的两个语义算子semantic.predicate自然语言过滤行和semantic.map自然语言生成新列并给出完整实战思路、参数速查表和常见坑点帮助新手快速把模糊需求变成可执行的数据管道。 顺带一提fenic 的测试数据里就有这样一张图片puppy_image.png。像挑出所有含动物的图片并写一句描述这类需求正是predicatemap的典型应用场景。为什么需要自然语言过滤传统过滤只能做精确匹配status urgent、category bug。但真实数据里更常见的是模糊判断——语气很生气、像功能需求、这段报错说明数据库连不上。fenic 的思路是把 LLM 的判断力直接嵌进 DataFrame 操作里算子一句话理解输出fc.semantic.predicate用一句自然语言判断每行是否满足条件布尔列配合df.filter()使用fc.semantic.map用一句自然语言模板为每行生成内容文本或结构化新列两者都使用 Jinja2 模板语法{{ 列名 }}引用列值定义在 semantic.py 中。第一步用 semantic.predicate 按语义筛选行predicate接收一个是/否问题模板模型逐行判断并返回 True/False因此可以直接放进filter源码见 semantic.py#L283-L386frustrated feedback.filter( fc.semantic.predicate( Customer message: {{ message }}\n This customer sounds frustrated, angry, or upset about a problem, messagefc.col(message), model_aliasfilter ) )注意模板变量名如message必须与后面传入的命名列参数一一对应。官方 Demo 10_smart_filtering.ipynb 用这套逻辑从混杂的客户反馈中分别筛出愤怒客户、隐藏的功能需求和忠诚用户。小技巧用 examples 校准判断尺度模型对什么算严重投诉的判断可能和你想的不一样可以传 few-shot 例子examples PredicateExampleCollection() examples.create_example(PredicateExample(input{ticket: 我被重复扣费了快帮我处理}, outputTrue)) examples.create_example(PredicateExample(input{ticket: 怎么重置密码}, outputFalse))这样 True/False 的边界就稳定了。第二步用 semantic.map 自然语言生成新列predicate负责选行semantic.map负责造内容——把生成提示词套用到一列或多列上源码见 semantic.py#L108-L209final_df df.select( fc.semantic.map( 根据以下日志给出 2-3 条排查步骤: {{message}} | 服务: {{service}}, messagefc.col(message), servicefc.col(service) ).alias(remediation_steps) )map的核心参数promptJinja2 模板{{ 变量名 }}引用列值**columns命名列参数变量名必须匹配examplesfew-shot 例子统一输出风格response_format传一个 Pydantic 模型强制结构化输出temperature/max_output_tokens控制随机性与长度官方示例 enrichment.py#L136-L144 里map直接把每条错误日志变成值班团队排查步骤podcast_summarization.py#L349-L359 则用map对播客转录分段逐块生成摘要再递归合并出全文总结。组合实战先过滤再生成两个算子天然可以串联成管道——先用predicate把无关行剔除省 token、省钱再用map只对命中行做昂贵生成result df.filter( fc.semantic.predicate(Ticket: {{ ticket }}\nThis ticket is about billing, ticketfc.col(ticket)) ).with_column( reply, fc.semantic.map(用一句话安抚这位用户并说明退款流程: {{ ticket }}, ticketfc.col(ticket)) )fenic 的查询是惰性的logical plan链式操作最终由执行引擎统一做批量推理比逐行调 API 高效得多。相关执行实现位于 semantic_operators/predicate.py 和 semantic_operators/map.py。常见坑点速查现象原因与处理报 ValidationError 提示缺少命名列参数predicate/map必须至少传一个xxxfc.col(...)形式参数不能只传模板含 None 的行输出为 None默认strictTrue含空值行不渲染模板需要时传strictFalse判断尺度不稳定用examples传 few-shot 例子temperature默认 0.0别随手调高想指定便宜模型在SessionConfig里配置language_models再传model_alias参见 10_smart_filtering.ipynb想控制单请求超时传request_timeout默认 120 秒安装只需pip install fenic并配置好一家 LLM 提供商的 API KeyOpenAI / Anthropic / Google / Cohere 均可详细说明见 docs/index.md。更多资料函数定义src/fenic/api/functions/semantic.py智能过滤 Demoexamples/fenic_in_120_seconds/10_smart_filtering.ipynb日志富化predicate/map 组合examples/enrichment/enrichment.py行为测试test_semantic_predicate.py、test_semantic_map.py一句话总结semantic.predicate管选哪些行semantic.map管每行说什么两者组合就能把自然语言需求变成可批量执行的 DataFrame 管道 赞分享【免费下载链接】fenicSemantic DataFrames for humans and agents项目地址https://gitcode.com/gh_mirrors/fe/fenic点击查看免费下载相关推荐LlamaIndex PandasQueryEngine 实战指南用自然语言直接查询 Pandas DataFrameLlamaIndex PandasQueryEngine 实战指南用自然语言直接查询 Pandas DataFrame 导读 PandasQueryEngin人工智能大模型AI 应用RAGAI AgentTypeChat音乐应用如何通过自然语言控制SpotifyTypeChat音乐应用如何通过自然语言控制Spotify 痛点直击当语音助手遇上音乐控制的尴尬 你是否也曾经历过这样的场景对着智能音箱大喊播放周杰伦的大模型AI 应用后端7分钟掌握PandasAI语义搜索零基础实现自然语言查询数据的终极指南7分钟掌握PandasAI语义搜索零基础实现自然语言查询数据的终极指南 PandasAI是一款基于大型语言模型 LLM 的智能数据分析工具它突破性地实现了用人工智能AI 应用RAG数据分析上一篇RAI强化后训练详解Qwen2.5-Coder-7B-Instruct_rai_1.8.0_medusa_1.0_npu的代码能力是如何增强的下一篇NoteLite 自带 MIDI 导出的完整实现MusicXML 到 .mid 的源码级解读创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
锦
锦皓数字建站
深耕本土企业品牌数字化升级,专注原创端正雅致商务官网,从视觉设计到稳定运维全程保驾护航。