fenic؛ دیتافریم معنایی برای کار با دادههای نامنظم
خلاصهٔ کاملتر
به گفتهٔ صفحهٔ معرفی این پروژه، fenic یک موتور دیتافریمِ معناییـه که کاوش دادههای ساختارمند و نامنظم رو به پایپلاینهای قابلاستفادهٔ دوباره و قابلبازرسی تبدیل میکنه. تو این موتور، عملگرهای هوش مصنوعی مثل extract، classify، summarize، embed و join معنایی مستقیم داخل مدل کوئری تعبیه شدن.
نکتهٔ اصلی اینـه که چیزی که کار دادهایات تولید میکنه عوض میشه. بهجای یک پرامپت یکبارمصرف یا یک اسکریپت regex شکننده که بعداً باید مهندسی معکوسش کنی، خروجی یک محصول ماندگاره: تایپدار، قابلبازرسی، قابلاجرای دوباره و قابلفراخوانی. هم آدم و هم ایجنت میتونن روی همون پایپلاین کار کنن.
طرز کارش اینـه که همون عملیات آشنای سبک PySpark یا SQL مثل select، filter، join، group_by و agg رو مینویسی، ولی کنارش عملگرهای معنایی هم داری که مدل زبانی رو بهعنوان بخش درجهیک کوئری صدا میزنن. مدلها رو یک بار روی Session تنظیم میکنی، پایپلاین بهشکل تنبل ساخته میشه و fenic اون رو روی موتوری اجرا میکنه که برای inference ساخته شده: دستهبندی خودکار درخواستها، محدودیت نرخ، تلاش دوباره، حسابوکتاب توکن و هزینه، و کش کردن پاسخها.
مثلاً برای تبدیل متن آزاد به ردیفهای تایپدار، اول شکل دادهای که میخوای رو با یک مدل Pydantic تعریف میکنی و بعد با عملگر semantic.extract ستونهای ساختارمند میگیری:
class Ticket(BaseModel):
product: str = Field(description="The product the user is asking about")
sentiment: str = Field(description="positive, neutral, or negative")
issue: str = Field(description="One-line summary of the user's problem")
tickets = df.select("id", fc.semantic.extract("text", Ticket).alias("t")).unnest("t")دو ایده اون رو از «چسبوندن ساده یک مدل زبانی به pandas» جدا میکنه. اول اینکه inference داخل خودِ مدل کوئری زندگی میکنه؛ استخراج و دستهبندی و خلاصهسازی عملگرهایی با اسکیما و تایپ هستن، نه تماسهای جانبی که خودت باید هماهنگشون کنی. دوم اینکه خود پایپلاین همون محصول نهاییـه؛ چون کار بهشکل عملگرهای تایپدار بیان شده، از همون اول قابلبازرسیـه (با explain و ردیابی ردیفبهردیف و متریک هر کوئری) و قابلاجرای دوباره.
یک قابلیت مهم اینه که یک جدول یا view در fenic میتونه از طریق MCP (پروتکل Model Context Protocol) به یک ابزار تبدیل بشه؛ یعنی همون پایپلاینی که آدم بازرسی میکنه، همونیـه که ایجنت با پارامترهای تایپدار و اندازهٔ نتیجهٔ محدود صداش میزنه. نویسنده روی تحلیل eval بهعنوان یک نمونهٔ عالی تأکید میکنه: دادههای نیمهساختارمند رو یک بار کاوش میکنی و عملیات مفید تبدیل به پایپلاینی میشه که روی هر دستهٔ تازه دوباره اجرا میشه.
fenic از چند ارائهدهنده مثل OpenAI، Anthropic، Google، Cohere و OpenRouter پشتیبانی میکنه و انواع منطقی درجهیک برای دادههای متنی داره؛ مثل Markdown، Transcript، JSON، HTML و PDF. چون تازهست، دو ابزار fenic check (برای lint کردن استاتیک کد بدون اجراش) و fenic skill install هم دارن تا ایجنتهای کدنویسی مثل Claude Code و Cursor و Codex بتونن API درستش رو بنویسن.
نکات کلیدی:
- fenic یک موتور دیتافریم معناییـه که عملگرهای هوش مصنوعی مثل extract و classify و summarize و join معنایی رو داخل کوئری داره
- مدلها رو یک بار روی Session تنظیم میکنی و پایپلاین تنبل با دستهبندی خودکار، محدودیت نرخ، کش و حساب هزینه اجرا میشه
- خروجی بهجای پرامپت یکبارمصرف، یک محصول تایپدار و قابلبازرسی و قابلاجرای دوبارهست که هم آدم و هم ایجنت باهاش کار میکنن
- یک جدول یا view رو میشه از طریق MCP به ابزار ایجنت تبدیل کرد و از OpenAI، Anthropic، Google و چند ارائهدهندهٔ دیگه پشتیبانی میکنه




