llm-fragment-symbex - وبلاگ سایمون ویلیسون

llm-fragment-symbex . من یک پلاگین بارگذارنده قطعه LLM جدید منتشر کردم که بر پایه پروژه Symbex من ساخته شده است.

Symbex یک ابزار خط فرمان (CLI) است که من نوشتم که می‌تواند بر روی یک پوشه پر از کد پایتون اجرا شود و توابع، کلاس‌ها، متدها یا فقط مستندات و امضاهای آن‌ها را با استفاده از ماژول AST پایتون برای تجزیه کد، خروجی دهد.

llm-fragments-symbex این قابلیت را مستقیماً به LLM می‌آورد. این به شما امکان می‌دهد کارهایی مانند این را انجام دهید:

llm install llm-fragments-symbex
llm -f symbex:path/to/project -s 'این کد را توضیح بده'

من این را روی پروژه LLM خودم به این صورت اجرا کردم:

cd llm
llm -f symbex:. -s 'حدس بزن این کد چه کار می‌کند'

خروجی کامل اینجاست که به این صورت شروع می‌شود:

به نظر می‌رسد این فهرست کد، یک فهرست یا تخلیه از توابع، کلاس‌ها و متدهای پایتون باشد که عمدتاً متعلق به یک پایگاه کد مرتبط با مدل‌های زبانی بزرگ (LLMها) است. این فهرست، مجموعه گسترده‌ای از قابلیت‌ها را پوشش می‌دهد که مربوط به مدیریت LLMها، جاسازی‌ها (embeddings)، الگوها، پلاگین‌ها، گزارش‌گیری و ابزارهای رابط خط فرمان (CLI) برای تعامل با مدل‌های زبانی است. [...]

همچنین در آن صفحه ورودی تولید شده توسط قطعه نیز نشان داده شده است - در اینجا یک نمونه آورده شده است:

# from llm.cli import resolve_attachment
def resolve_attachment(value):
    ""Resolve an attachment from a string value which could be:
    - "-" for stdin
    - A URL
    - A file path

    Returns an Attachment object.
    Raises AttachmentError if the attachment cannot be resolved."""

# from llm.cli import AttachmentType
class AttachmentType:

    def convert(self, value, param, ctx):

# from llm.cli import resolve_attachment_with_type
def resolve_attachment_with_type(value: str, mimetype: str) -> Attachment:

اگر کد پایتون شما مستندات (docstrings) و حاشیه‌نویسی‌های نوع (type annotations) خوبی داشته باشد، امیدوارم این یک میانبر برای ارائه مستندات API کامل به یک مدل بدون نیاز به تخلیه کل پایگاه کد باشد.

در مثال بالا از 13471 توکن ورودی و 781 توکن خروجی با استفاده از openai/gpt-4.1-mini استفاده شد. این مدل بسیار ارزان است، بنابراین کل هزینه 0.6638 سنت بود - کمتر از یک سنت.

خود پلاگین بیشتر توسط o4-mini با استفاده از پلاگین llm-fragments-github برای بارگیری مخازن simonw/symbex و simonw/llm-hacker-news به عنوان کد نمونه نوشته شده است:

llm \
  -f github:simonw/symbex \
  -f github:simonw/llm-hacker-news \
  -s "یک پلاگین جدید به عنوان یک فایل llm_fragments_symbex.py بنویس که
  یک بارگذارنده سفارشی ارائه می‌دهد که می‌تواند به این صورت استفاده شود:
  llm -f symbex:path/to/folder - سپس تمام امضاهای تابع پایتون را با docstringهای آن‌ها از آن پوشه با استفاده از
  همان ترفندی که symbex استفاده می‌کند، به طور موثر مانند اجرای
  symbex . '*' '*.*' --docs --imports -n" \
   -m openai/o4-mini -o reasoning_effort high"

پاسخ اینجاست. 27819 ورودی، 2918 خروجی = 4.344 سنت.

در حین کار بر روی این پروژه، من یک نقص جزئی ظاهری در خود Symbex شناسایی و برطرف کردم. از نظر فنی، این یک تغییر مخرب است (خروجی را تغییر می‌دهد)، بنابراین من آن را به عنوان Symbex 2.0 منتشر کردم.