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エージェント間で共有可能なものにしている。
関連
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト
- プロジェクト