typedef-ai/fenic

Semantic DataFrames for humans and agents

fenic – 人間とエージェント向けの意味的DataFrame

何であるか

  • 大規模言語モデル(LLM)によって駆動される意味的演算子(extract、classify、summarize、embed、および意味的結合など)を、馴染み深いDataFrame/SQLスタイルAPI(pandas、PySpark、Spark SQLなどを想定)に拡張するPythonライブラリ。
  • 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="問題の1行要約")

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": "ReportsのCSVエクスポートがタイムアウトし続ける。"},
    {"id": 2, "text": "新しいダッシュボードは好きだが、モバイルでのSSOログインが壊れている。"},
])

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

tickets.show()

LLMはTicketで定義されたフィールドを抽出し、クエリ可能で、結合やエクスポートが可能な通常のDataFrameを返す。

主な機能

  • 意味的結合 – 自然言語で関係を記述して2つのテーブルを結合。
  • 埋め込みベースの結合 (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エージェント間で共有可能なものにしている。

関連

  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト
  • プロジェクト