typedef-ai/fenic

Semantic DataFrames for humans and agents

fenic – 为人类和智能体设计的语义DataFrame

是什么

  • 一个Python库,将大语言模型(LLM)驱动的语义操作符(如 extract、classify、summarize、embed,以及语义连接等)扩展到熟悉的DataFrame/SQL风格API(如pandas、PySpark或Spark SQL)中。
  • extract、classify、summarize、embed 和 语义连接等操作符作为查询计划的一等公民,LLM调用可自动管理(批量处理、速率限制、缓存、成本核算)。

为何重要

  • 非结构化文本(工单、日志、转录文本、PDF等)通常使用临时的正则表达式或一次性提示处理,难以复现。
  • fenic将这种探索过程转变为类型化、可检查的流水线,支持版本控制、重跑,并可由人类和AI智能体调用。
  • 流水线本身成为可交付物:你可以使用 explain() 查看逻辑计划,追踪行的血缘关系,查看令牌/成本指标,并通过Model Context Protocol(MCP)将结果暴露为工具。

核心概念

概念 描述
会话 保存配置(应用名称、模型提供者、速率限制)。所有DataFrame均从会话创建。
语义操作符 (fc.semantic.*) 在查询中调用LLM的函数:extract(col, PydanticSchema)、classify(col, classes)、predicate(prompt, …)、reduce(prompt, column)、embed(col) 等。
延迟流水线 操作以逻辑计划形式记录,仅在需要时执行,支持LLM响应的自动批处理和缓存。
类型化输出 结果经过Pydantic模型验证,确保列具有保证的类型。
MCP集成 表/视图可发布为类型化工具,供智能体调用,将DataFrame结果转化为可重用的AI工具。

典型工作流(60秒演示)

import fenic as fc
from pydantic import BaseModel, Field

class Ticket(BaseModel):
    product: str = Field(description="提及的产品")
    sentiment: str = Field(description="positive, neutral, or negative")
    issue: str = Field(description="问题的一行摘要")

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)}
        ),
    )
)

df = session.create_dataframe([
    {"id": 1, "text": "报告中的CSV导出总是超时。"},
    {"id": 2, "text": "喜欢新的仪表板,但移动端SSO登录有问题。"},
])

tickets = (
    df.select("id", fc.semantic.extract("text", Ticket).alias("t"))
      .unnest("t")
)

tickets.show()

LLM会提取 Ticket 中定义的字段,并返回一个可查询、可连接或导出的普通DataFrame。

主要特性

  • 语义连接 – 通过自然语言描述关系来连接两个表。
  • 基于嵌入的连接 (sim_join) 和聚类 (with_cluster_labels)。
  • 内置对多种源类型的支持 – CSV、Parquet、Markdown、转录文本、PDF、JSON、S3、Hugging Face数据集。
  • 可观测性 – explain()、lineage()、每查询的令牌/成本指标、响应缓存。
  • 可扩展的提供者层 – OpenAI、Anthropic、Google、Cohere、OpenRouter;可注册多个模型并按操作符选择。
  • CLI助手 – fenic check(流水线的静态lint)、fenic skill install(为Claude Code、Cursor等编码智能体安装技能定义)。

使用场景示例

  • 评估轨迹分析 – 分类失败模式,聚合根本原因摘要,并将结果作为MCP工具发布。
  • 客户支持 – 将工单文本转换为结构化行,用于仪表板和下游自动化。
  • 研究智能体 – 接收新闻文章、播客或会议转录,提取实体,生成摘要,并存储为可查询的表格。
  • 日志排查 – 从自由格式日志中进行语义提取,对相似事件聚类,并生成事件报告。

安装

pip install fenic               # 核心
pip install "fenic[pdf,cluster,sim-join]"  # 可选扩展,用于PDF解析、聚类等

设置适当的提供者API密钥(例如 OPENAI_API_KEY)。

社区与贡献

  • 支持用的Discord社区。
  • 示例仓库 fenic-examples 包含覆盖多个领域的笔记本。
  • 开放贡献指南;欢迎PR。

总结 fenic是一个真正的开源项目,将LLM驱动的语义处理引入DataFrame抽象,使非结构化数据流水线可复现、可检查,并可在人类与AI智能体之间共享。

相关

  • 项目
  • 项目
  • 项目
  • 项目
  • 项目