fenic 快速入门
一句话卖点:把 LLM 推理变成 DataFrame 的 extract / classify / summarize / embed / semantic join 算子——不用胶水代码,不用手搓 prompt chain,一次写成,可复现、可检查、可复用。
这是什么?适合谁?
fenic 是一个语义 DataFrame 引擎。它把 PySpark/SQL 风格的 DataFrame 操作(select、filter、join、group_by、agg)与 LLM 驱动的语义算子(extract、classify、summarize、embed、semantic join)融合在同一个查询模型中。你定义 Pydantic Schema 描述想要的输出结构,fenic 在 plan time 做类型校验,运行时自动批处理、限速、重试、缓存和成本计量。
与市面上其他”自然语言查 DataFrame”工具的本质区别:fenic 的 LLM 调用是 DataFrame 管道的一部分,不是副作用。pandas-ai 把 LLM 作为对话引擎粘在 pandas 上,Vanna.AI 专注 text-to-SQL,而 fenic 把语义推断提升为带有类型、Schema 和执行计划的一等查询算子。结果是:人类和数据 Agent 共享同一套管道——都能编写、检查、复用。
适合人群:
- 需要频繁从非结构化文本(日志、工单、用户反馈、eval traces)中提取结构化信息的数据工程师
- 希望在 Claude Code / Cursor / Codex 中让 Agent 写出正确 fenic 代码的 AI 开发者(
fenic skill install一键配置) - 需要把一次性的 prompt 探索固化为可复现、可审计的 DataFrame 管道的团队
当前局限:仍在 v0.x 阶段,单团队维护,社区贡献者有限;语义算子依赖云端 LLM API,国内模型(DeepSeek/Qwen/豆包)未内置适配。
准备工作
- Python 3.10+ 环境(推荐使用 venv 或 conda 创建虚拟环境)
- LLM API Key:OpenAI / Anthropic / Google / Cohere / OpenRouter 任一即可
- 安装 fenic:
pip install fenic - (可选)配置 Agent 技能:
fenic skill install让 Claude Code / Cursor / Codex 写出正确的 fenic 代码 - 设置环境变量(如
export OPENAI_API_KEY=sk-xxx)
3步快速上手
第 1 步:安装并配置 Session
pip install fenic
import fenic as fc
from pydantic import BaseModel, Field
# 定义你想要的输出 Schema
class Ticket(BaseModel):
product: str = Field(description="用户咨询的产品")
sentiment: str = Field(description="positive / neutral / negative")
issue: str = Field(description="一句话总结用户问题")
# 创建 Session,绑定 LLM 模型
session = fc.Session.get_or_create(
fc.SessionConfig(
app_name="quickstart",
semantic=fc.SemanticConfig(
language_models={
"mini": fc.OpenAILanguageModel(
model_name="gpt-4o-mini", rpm=500, tpm=200_000
)
},
),
)
)
第 2 步:加载数据并构建语义管道
# 模拟一条非结构化文本
df = session.create_dataframe([
{"id": 1, "text": "CSV导出功能在上次更新后一直超时"},
{"id": 2, "text": "新仪表盘很棒,但移动端SSO登录坏了"},
])
# extract 算子:自由文本 → 类型化、可查询的列
tickets = (
df.select("id", fc.semantic.extract("text", Ticket).alias("t"))
.unnest("t")
)
第 3 步:运行并查看结果
tickets.show()
# id | product | sentiment | issue
# 1 | Reports | negative | CSV导出超时
# 2 | Auth | negative | SSO登录损坏
验证:上述代码运行后,应看到类型化的结构化行输出,而非原始文本或 JSON blob。管道本身是惰性构建的,可以用 tickets.explain() 查看执行计划。
初级用法
- 探索陌生数据集:拿到一个不熟悉的 CSV 或日志文件后,用
extract(Schema)快速将自由文本转为类型化列,无需手写正则。 - 语义分类:用
classify算子将文本按自定义类别自动打标,比关键词匹配更准确。 - 批量摘要:用
summarize算子对长文本列生成一句话摘要,适合工单、用户反馈等场景。 - 向量嵌入:用
embed算子将文本列转为向量,直接用于相似度搜索。 - 语义 Join:用
semantic join将两个 DataFrame 按语义相似度合并,不依赖精确键匹配。
高级玩法
- 链式语义管道:
extract→filter→classify→agg,像写 PySpark 一样串联语义算子。 - 提升为 MCP Tool:将 fenic 管道提升为 MCP tool,Agent(Claude Code/Cursor)可直接调用——管道变成可复用的数据服务。
- Row-Level Lineage:用
lineage()追踪每行结果来源于哪条原始数据、哪个算子和哪个 LLM 调用。 - Per-Query Metrics:每次查询自动输出 token 消耗和成本,配合
explain()做性能优化。 - Response Caching:相同输入自动缓存 LLM 响应,重复查询零额外 token 消耗。
- 多模型编排:在一个 Session 中配置多个 LLM 模型(如 GPT-4o-mini 做分类、Claude Sonnet 做摘要),按算子粒度指定模型。
小技巧
- 先用
df.show()和df.schema()了解数据结构,再构建语义管道——Schema 定义越精确,extract 输出越可靠。 - 对关键数值字段进行二次验证——LLM 输出存在概率性误差,
lineage()可帮助定位问题来源。 - 使用
tickets.explain()在运行前预览执行计划,避免不必要的 LLM 调用。 - 复杂分析拆分成多个小管道,每个管道只做一件事——比一个大管道更容易调试和复用。
fenic check命令可对管道代码做静态检查,CI 中集成可防止引入错误的算子用法。
常见踩坑
- API Key 未设置:如果未在环境变量中配置对应 Provider 的 API Key,Session 初始化不会报错但首次调用算子时抛出
AuthenticationError。 - 大 DataFrame 全量处理:语义算子对每一行都会调用 LLM,10 万行数据会产生 10 万次 API 调用。建议先
filter缩小范围,或先group_by聚合后再处理。 - Pydantic Schema 设计不当:Field description 写得太模糊会导致 extract 输出不稳定。description 应具体描述期望的内容格式和边界。
- 多模型 Session 的 Cost 管理:不同模型价格差异大(GPT-4o vs GPT-4o-mini),用
per-query metrics监控每个算子的实际消耗。 - 版本兼容:fenic 依赖 pandas 和 pydantic,确保
pip install fenic时检查依赖版本冲突。推荐在虚拟环境中安装。
常见问题 FAQ
Q1: fenic 和 pandas-ai 有什么区别?
pandas-ai 把 LLM 作为”对话层”粘在 pandas 上——你用自然语言问问题,它翻译成 pandas 代码执行。fenic 的 LLM 推理是 DataFrame 管道的一部分——extract(Schema) 是类型化算子,有 Schema、有执行计划、有 lineage。两者定位不同:pandas-ai 侧重交互式问答,fenic 侧重可复现的语义管道。来源:fenic README
Q2: fenic 支持哪些 LLM?
5 大海外 Provider 开箱即用:OpenAI(GPT-4o / GPT-4o-mini)、Anthropic(Claude Sonnet / Opus)、Google(Gemini)、Cohere(Command R)、OpenRouter(聚合多模型)。国内模型(DeepSeek、Qwen、豆包)需通过 OpenRouter 或自定义 endpoint 接入,暂无内置适配。来源:fenic README
Q3: fenic 是免费的吗?
fenic 本身是 Apache-2.0 开源免费库(本地部署无订阅费),但运行语义算子需要调用 LLM API,这部分按各 Provider 的定价付费(如 GPT-4o-mini:输入 $0.15/M tokens,输出 $0.60/M tokens)。fenic 内置 response caching 和 batching 减少 API 调用次数。来源:fenic LICENSE / OpenAI Pricing
Q4: fenic 能处理多大的数据集?
取决于 LLM 上下文窗口和 API 调用频率。GPT-4o-mini 单次调用可处理数千字文本。对于百万行级数据,建议先 filter 聚合或采样。fenic 内置 rate limiting 和 batching 防止 API 超额。来源:fenic README
Q5: fenic 能替代传统 ETL 工具吗?
fenic 定位是语义数据处理(非结构化→结构化),不是通用 ETL。它适合 ETL 管道中的”语义转换”环节——将自由文本转为类型化字段。传统 ETL 的确定性计算(如数值运算、精确 Join)仍用 pandas/PySpark 更合适。来源:产品定位分析
📊 评分与标签
评分说明
总分 6.5/10 · S_入选
📊 可观测社区指标(数据核验日期:2026-07-06)
- GitHub: typedef-ai/fenic ★527, 🔱29, 245 commits, 7 open issues, 6 open PRs
- PyPI: fenic v0.10.0 发布于 2026-06-26
- 许可证: Apache-2.0,商用友好
- 项目年龄: 约 12 个月,持续活跃(最近 commit: 上周)
⚙️ 功能完整度 1.7/2.5
- 6 大语义算子覆盖核心场景:extract(Pydantic Schema 强类型抽取)、classify(分类)、summarize(摘要)、embed(向量嵌入)、semantic join(语义合并),全部在 PySpark 风格的 DataFrame API 之上做语义推断
- 内置 inference query engine:自动 batching、rate limiting、retries、token/cost 计量、response caching;支持将管道提升为 MCP tool 供 Agent 调用;
fenic skill install让 Claude Code/Cursor/Codex 写出正确代码 - 对比 pandas-ai:功能更全面(图表、对话、数据清洗)但 LLM 调用是副作用而非类型化算子,fenic 专精语义管道且带编译期类型校验;对比 Vanna.AI:仅 text-to-SQL,fenic 覆盖文本抽取、分类、摘要、嵌入、语义 join 5 个垂直场景
✨ 输出质量 1.6/2.5
- 语义算子在 plan time 完成 Pydantic Schema 校验,运行时通过自动 batching 和 response caching 避免重复 LLM 调用,重复 query 场景下显著节省 token 消耗
- v0.10.0 提供 row-level lineage 追踪每行结果来源、per-query metrics 输出 token 用量与成本、explain() 输出可读执行计划——这些是可观测性能力在 LLM 管道中的首次系统化实现
- 输出质量根本上取决于底层 LLM——GPT-4o-mini 对复杂分类任务准确率有限,Claude Sonnet 更好但成本更高;对比 pandas-ai:LLM 输出不经 Schema 校验直接返回,易出现格式漂移;对比 Vanna.AI:SQL 生成准确率受限于 RAG 检索质量
🖐️ 易用性 1.2/1.5
pip install fenic单命令安装,API 风格兼容 PySpark 大幅降低 Python 数据工程师迁移成本;fenic skill install一键配置 Claude Code/Cursor/Codex 的 fenic 编码技能- 5 大 LLM Provider 开箱即用:OpenAI、Anthropic、Google、Cohere、OpenRouter;Session 配置统一模型管理,算子粒度指定模型
- 学习曲线:需理解 Pydantic Schema 定义和 PySpark 风格 API,对纯数据分析师有门槛;对比 pandas-ai:用自然语言直接提问,零学习成本但输出不稳定;对比 Vanna.AI:需先建向量库训练 RAG,fenic 零预训练直接用
💰 性价比 1.2/1.5
- Apache-2.0 开源免费,本地部署无订阅费用;每次语义算子调用消耗 LLM tokens 需自付 API 成本(如 GPT-4o-mini 输入 $0.15/M tokens、输出 $0.60/M tokens)
- 内置 response caching 减少重复调用、自动 batching 合并请求、rate limiting 避免超额计费、per-query metrics 实时展示 token/cost 消耗——成本控制在框架层面解决
- 对比商业 SaaS(DataRobot/Adept):fenic 本地架构零边际云成本,仅付 LLM API 费;对比 Vanna.AI:开源但需自行搭建向量库产生额外基础设施成本
🔒 稳定性 0.5/1.0
- 约 12 个月持续迭代到 v0.10.0,245 次 commit,最近提交在上周,维护活跃;527 Stars、29 Forks、7 open issues
- 单团队(typedef-ai)维护,暂无公开 Roadmap 和 SLA 承诺,企业级可靠性存疑;v0.x 版本 API 可能 breaking change
- 对比 pandas-ai:23.6K Stars + 多年沉淀 + 庞大社区,稳定性和生态远超 fenic;对比 Vanna.AI:商业化运营,有企业支持通道
🛡️ 隐私安全 0.3/1.0
- Apache-2.0 开源,源代码公开可审计;本地部署数据不出用户环境——数据处理本身在本地
- 支持 5 大海外 LLM Provider,但缺少国内模型(DeepSeek/Qwen/豆包)内置适配,数据需出境到海外 endpoint 完成推理——国内合规场景落地成本高
- 对比 Mem0/Zep 等支持本地 LLM(Ollama/LlamaCpp)的工具:fenic 强制依赖云端 LLM API,数据敏感场景不友好;对比国产开源 DataFrame 工具:自带国内 LLM 适配,fenic 需额外配置 OpenRouter 中转
评分依据可追溯至公开来源,每项分数均有明确理由和数据支撑。
🏷️ 标签说明
- 开源免费: Apache-2.0 协议开源,源码公开可商用,本地部署无订阅费用。来源:typedef-ai/fenic LICENSE
- 开发平台: 面向 AI 开发和数据工程的 typed semantic operator 平台,支持 MCP tool promotion。来源:typedef-ai/fenic README
- 开源可部署:
pip install fenic单命令本地部署,数据在用户环境内运行。来源:PyPI fenic
📋 来源与核验记录
- ✅ 已核验: typedef-ai/fenic GitHub(527 Stars、29 Forks、245 commits、7 issues、6 PRs、Apache-2.0 许可证确认)
- ✅ 已核验: PyPI fenic v0.10.0(发布于 2026-06-26、Apache-2.0、Python >=3.10,<3.13、typedef-ai 维护)
- ✅ 已核验: OpenAI 定价(GPT-4o-mini: 输入 $0.15/M、输出 $0.60/M tokens)
- ✅ 已核验: typedef-ai/fenic README(语义算子列表、inference engine 特性、MCP tool promotion、skill install 功能确认)
- ✅ 已核验: typedef-ai/fenic LICENSE(Apache-2.0 确认)
- ❌ 死链: 无
同分类推荐
AI开发平台 分类下的其他工具