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. 安装 fenicpip 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. 链式语义管道extractfilterclassifyagg,像写 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开发平台 分类下的其他工具

)}