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": "보고서의 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 (파이프라인의 정적 린트), fenic skill install (Claude Code, Cursor 등 코딩 에이전트용 스킬 정의 설치).

예시 사용 사례

  • 평가 트레이스 분석 – 실패 유형 분류, 근본 원인 요약 집계, MCP 도구로 결과 공개.
  • 고객 지원 – 티켓 텍스트를 대시보드 및 하류 자동화용 구조화된 행으로 변환.
  • 연구 에이전트 – 뉴스 기사, 팟캐스트, 회의 녹취록을 읽어 엔티티 추출, 요약, 검색 가능한 테이블로 저장.
  • 로그 트리지 – 자유형 로그에서 의미적 추출, 유사 사건 클러스터링, 사건 보고서 생성.

설치

pip install fenic               # 핵심
pip install "fenic[pdf,cluster,sim-join]"  # PDF 파싱, 클러스터링 등 옵션 기능

적절한 제공자 API 키 설정 (예: OPENAI_API_KEY).

커뮤니티 및 기여

  • 지원용 디스코드 커뮤니티.
  • 다양한 분야를 다루는 노트북이 포함된 예제 리포지토리 fenic-examples.
  • 오픈 기여 가이드라인; PR 환영합니다.

결론 fenic은 진정한 오픈소스 프로젝트로, LLM 기반 의미적 처리를 DataFrame 추상화에 통합하여 비구조화된 데이터 파이프라인을 재현 가능하고, 검사 가능하며, 인간과 AI 에이전트 간에 공유 가능한 것으로 만듭니다.

관련

  • 프로젝트
  • 프로젝트
  • 프로젝트
  • 프로젝트
  • 프로젝트