fenic

LLM驱动的DataFrame语义查询工具,用自然语言替代SQL/pandas探索数据,464★开源免费

📅 收录: 2026-07-01 🔄 更新: 2026-07-07

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/豆包)未内置适配。

准备工作

  1. Python 3.10+ 环境(推荐使用 venv 或 conda 创建虚拟环境)
  2. LLM API Key:OpenAI / Anthropic / Google / Cohere / OpenRouter 任一即可
  3. 安装 fenic:pip install fenic
  4. (可选)配置 Agent 技能:fenic skill install 让 Claude Code / Cursor / Codex 写出正确的 fenic 代码
  5. 设置环境变量(如 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() 查看执行计划。

初级用法

  1. 探索陌生数据集:拿到一个不熟悉的 CSV 或日志文件后,用 extract(Schema) 快速将自由文本转为类型化列,无需手写正则。
  2. 语义分类:用 classify 算子将文本按自定义类别自动打标,比关键词匹配更准确。
  3. 批量摘要:用 summarize 算子对长文本列生成一句话摘要,适合工单、用户反馈等场景。
  4. 向量嵌入:用 embed 算子将文本列转为向量,直接用于相似度搜索。
  5. 语义 Join:用 semantic join 将两个 DataFrame 按语义相似度合并,不依赖精确键匹配。

高级玩法

  1. 链式语义管道:extract → filter → classify → agg,像写 PySpark 一样串联语义算子。
  2. 提升为 MCP Tool:将 fenic 管道提升为 MCP tool,Agent(Claude Code/Cursor)可直接调用——管道变成可复用的数据服务。
  3. Row-Level Lineage:用 lineage() 追踪每行结果来源于哪条原始数据、哪个算子和哪个 LLM 调用。
  4. Per-Query Metrics:每次查询自动输出 token 消耗和成本,配合 explain() 做性能优化。
  5. Response Caching:相同输入自动缓存 LLM 响应,重复查询零额外 token 消耗。
  6. 多模型编排:在一个 Session 中配置多个 LLM 模型(如 GPT-4o-mini 做分类、Claude Sonnet 做摘要),按算子粒度指定模型。

小技巧

  1. 先用 df.show() 和 df.schema() 了解数据结构,再构建语义管道——Schema 定义越精确,extract 输出越可靠。
  2. 对关键数值字段进行二次验证——LLM 输出存在概率性误差,lineage() 可帮助定位问题来源。
  3. 使用 tickets.explain() 在运行前预览执行计划,避免不必要的 LLM 调用。
  4. 复杂分析拆分成多个小管道,每个管道只做一件事——比一个大管道更容易调试和复用。
  5. fenic check 命令可对管道代码做静态检查,CI 中集成可防止引入错误的算子用法。

常见踩坑

  1. API Key 未设置:如果未在环境变量中配置对应 Provider 的 API Key,Session 初始化不会报错但首次调用算子时抛出 AuthenticationError。
  2. 大 DataFrame 全量处理:语义算子对每一行都会调用 LLM,10 万行数据会产生 10 万次 API 调用。建议先 filter 缩小范围,或先 group_by 聚合后再处理。
  3. Pydantic Schema 设计不当:Field description 写得太模糊会导致 extract 输出不稳定。description 应具体描述期望的内容格式和边界。
  4. 多模型 Session 的 Cost 管理:不同模型价格差异大(GPT-4o vs GPT-4o-mini),用 per-query metrics 监控每个算子的实际消耗。
  5. 版本兼容: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开发平台 分类下的其他工具

)}