اشتراک
فناوری برنامه نویسی هوش مصنوعی

llm-docsmith - وبلاگ سایمون ویلیسون

در یک نگاه چکیدهٔ خودکار موتور هوش مصنوعی افق آبی

مقاله موجود در وبلاگ سایمون ویلیسون به معرفی و بررسی پلاگین "llm-docsmith" می‌پردازد که توسط ماتئوس پدرونی برای افزودن داک‌استرینگ به کدهای پایتون توسعه یافته است. این پلاگین به کاربران اجازه می‌دهد تا به صورت خودکار داک‌استرینگ‌های کدهای پایتون خود را بسازند و قابلیت مشاهده پیش‌نمایش تغییرات با گزینه‌ای مانند `-o` را دارد. این پلاگین با استفاده از بسته "libcst" برای دستکاری کدها و بدون تأثیر بر امنیت و صحت کد اصلی اقدام می‌کند و می‌تواند با مدل‌های جایگزینی همچون "claude-3.7-sonnet" به جای مدل پیش‌فرض GPT-4o mini کار کند. همچنین در این پلاگین، از یک سیستم پرامپت JSON استفاده می‌شود که با اضافه کردن توضیحات مناسب، داک‌استرینگ‌ها را به صورت خودکار و با دستورالعمل‌های JSON تولید می‌کند. معرفی کلاس‌های Pydantic مانند Argument، Return، و Docstring نشان می‌دهد که چگونه ساختاردهی داده‌ها به بهبود و تسریع فرآیند مستندسازی کمک می‌کند. در نهایت، نحوه انجام ویرایشات و افزودن داک‌استرینگ‌ها با استفاده از این پلاگین توضیح داده شده است.

llm-docsmith (از طریق) ماتئوس پدرونی این پلاگین مرتب را برای LLM برای افزودن داک‌استرینگ به کد پایتون موجود منتشر کرد. می‌توانید آن را به این صورت اجرا کنید:

llm install llm-docsmith
llm docsmith ./scripts/main.py -o

گزینه -o تغییراتی را که اعمال می‌شوند پیش‌نمایش می‌کند - بدون -o فایل‌ها را مستقیماً ویرایش می‌کند.

همچنین یک پارامتر -m claude-3.7-sonnet برای استفاده از یک مدل جایگزین از مدل پیش‌فرض (GPT-4o mini) می‌پذیرد.

پیاده‌سازی از بسته "Concrete Syntax Tree" پایتون libcst برای دستکاری کد استفاده می‌کند، که به این معنی است که هیچ شانسی وجود ندارد که چیزی غیر از داک‌استرینگ‌ها را ویرایش کند.

در اینجا سیستم پرامپت کامل مورد استفاده آمده است.

یک ترفند مرتب در انتهای سیستم پرامپت این است که می‌گوید:

یک قالب JSON دریافت خواهید کرد. اسلات‌های مشخص شده با <SLOT> را با توضیحات مناسب پر کنید. به صورت JSON برگردانید.

این قالب در واقع JSON ارائه شده است که با استفاده از این کلاس‌های Pydantic تولید شده است:

class Argument(BaseModel):
    name: str
    description: str
    annotation: str | None = None
    default: str | None = None

class Return(BaseModel):
    description: str
    annotation: str | None

class Docstring(BaseModel):
    node_type: Literal["class", "function"]
    name: str
    docstring: str
    args: list[Argument] | None = None
    ret: Return | None = None

class Documentation(BaseModel):
    entries: list[Docstring]

کد یادداشت‌های <SLOT> را به این در مکان‌های مختلف اضافه می‌کند، بنابراین قالب موجود در پرامپت به این صورت در می‌آید:

{
  "entries": [
    {
      "node_type": "function",
      "name": "create_docstring_node",
      "docstring": "<SLOT>",
      "args": [
        {
          "name": "docstring_text",
          "description": "<SLOT>",
          "annotation": "str",
          "default": null
        },
        {
          "name": "indent",
          "description": "<SLOT>",
          "annotation": "str",
          "default": null
        }
      ],
      "ret": {
        "description": "<SLOT>",
        "annotation": "cst.BaseStatement"
      }
    }
  ]
}

اشتراک:
این گزارش ترجمه و بازنویسی خبری با موتور هوش مصنوعی افق آبی است و برای خوانندهٔ فارسی‌زبان بازتنظیم شده. منبع اصلی: وبلاگ سایمون ویلیسون