برنامه نویسی

استفاده از DSPY برای تقویت مهندسی سریع با API های OpenAI

مقدمه

مهندسی سریع پایه و اساس ساخت برنامه های کاربردی مؤثر با مدل های بزرگ زبان (LLM) مانند GPT-4 OpenAi است. این که آیا شما در حال ایجاد یک چت بابات ، اتوماسیون گردش کار و یا استخراج بینش از متن هستید ، تهیه دستورالعمل های دقیق ضروری است. با این حال ، تنظیم سریع دستی می تواند برای مقیاس خسته کننده ، متناقض و چالش برانگیز باشد.

اینجاست DSPY، یک چارچوب پایتون که توسط دانشگاه استنفورد ساخته شده است ، بازی می شود. DSPY مهندسی سریع را با فعال کردن ساده می کند

  • تعاریف کار برنامه ای ،
  • خطوط لوله مدولار ، و
  • گردش کار خود بهبود می یابد.

این پیچیدگی های ساخت و کار سریع و بهینه سازی را از بین می برد و به توسعه دهندگان این امکان را می دهد تا بر حل مشکلات دنیای واقعی تمرکز کنند.

در این آموزش ، ما بررسی خواهیم کرد که چگونه DSPY می تواند به شما کمک کند:

  1. با API Openai شروع کنید.
  2. اتوماسیون صفر ، چند عکس و سریع و چند شات.
  3. یک برنامه در دنیای واقعی قانع کننده بسازید: یک دستیار سفر شخصی این پاسخ به پرس و جو در مورد مقصد ، برنامه های برنامه ریزی می کند و توصیه هایی را ارائه می دهد.

با پایان این آموزش ، شما می فهمید که چگونه DSPY می تواند سفر AI تولیدی شما را تقویت کرده و مهندسی سریع را مقیاس پذیر و کارآمد کند.


مرحله 1: تنظیم محیط خود

DSPY را نصب کنید

با نصب DSPY و وابستگی های آن شروع کنید:

pip install dspy openai mlflow
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

کلید API OpenAi را پیکربندی کنید

DSPY یکپارچه با مدل های GPT OpenAi ادغام می شود. کلید API خود را به عنوان یک متغیر محیط تنظیم کنید:

export OPENAI_API_KEY="your-api-key"
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

از طرف دیگر ، آن را به صورت برنامه ای پیکربندی کنید:

import dspy
dspy.configure(lm=dspy.LM("openai/gpt-4", api_key="your-api-key"))
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

اختیاری: MLFlow را برای ردیابی آزمایش فعال کنید

DSPY با MLFlow برای پیگیری پیشرفت بهینه سازی سریع ادغام می شود:

import mlflow

mlflow.set_tracking_uri("http://localhost:5000")
mlflow.set_experiment("DSPy Tutorial")
mlflow.dspy.autolog()
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

UI MLFLOW را در یک ترمینال جداگانه شروع کنید:

mlflow ui --port 5000
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید


مرحله 2: فوریت صفر

صفر شات ساده ترین شکل تعامل با LLMS است-این شامل ارائه فقط دستورالعمل های بدون نمونه است. این رویکرد به خوبی برای کارهای ساده مانند طبقه بندی متن یا خلاصه کار می کند.

بیایید با ساختن یک اساسی شروع کنیم جمع کننده مقصد سفر با استفاده از ماژول پیش بینی DSPY.

مثال کد: خلاصه کننده مقصد سفر صفر

from dspy import Predict

# Define a zero-shot task
destination_summary = Predict("destination -> summary")

# Run the task on an input
response = destination_summary(destination="Tell me about Paris.")
print(f"Summary: {response.summary}")
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

خروجی:

Summary: Paris is known as the City of Light, famous for its art,
 fashion, gastronomy, and landmarks like the Eiffel Tower.
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

مزایای اصلی:

  • نیازی به نمونه های برچسب خورده نیست.
  • ایده آل برای کارهای ساده که در آن LLM ها به دانش از پیش آموزش داده می شوند.

مرحله 3: سوابق چند عکس

با ارائه 2-5 نمونه ای که خروجی مدل را راهنمایی می کند ، تعداد کمی از شات باعث بهبود دقت می شود. این رویکرد برای کارهایی که نیاز به درک ظریف یا قالب بندی خاص دارند ، به خوبی کار می کند.

بیایید دستیار مسافرتی خود را گسترش دهیم تا فعالیتهای خود را بر اساس ترجیحات کاربر توصیه کنیم.

مثال کد: توصیه فعالیت چند شات

from dspy import Task

# Define a task with few-shot examples
activity_recommendation_task = Task(
    name="Activity Recommendation",
    signature={
        "input": "User preferences and destination",
        "output": "Recommended activities"
    },
    examples=[
        {
            "input": "User loves art and history; Destination: Paris",
            "output": ["Visit the Louvre", "Explore Notre-Dame Cathedral"]
        },
        {
            "input": "User enjoys nature; Destination: Kyoto",
            "output": ["Walk through Arashiyama Bamboo Grove", "Visit Kinkaku-ji Temple"]
        }
    ]
)

# Compile the task into a few-shot module
few_shot_module = activity_recommendation_task.compile()

# Run the module on new input
response = few_shot_module.run("User loves food; Destination: Rome")
print(f"Recommended Activities: {response}")
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

خروجی:

Recommended Activities: ["Try authentic pasta dishes", "Visit Campo de' Fiori market"]
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید


مرحله 4: فوریت چند شات

فرکانس چند شات از نمونه های بسیاری برای رسیدگی به نمایش داده شدگان پیچیده یا بهبود تعمیم در ورودی های متنوع استفاده می کند. بیایید یک بسازیم ژنراتور سفر سفر که چندین ماژول را در یک خط لوله ترکیب می کند.

نمودار گردش کار: خط لوله برنامه سفر چند شات

+-------------------+
| User Query        |
+-------------------+
          |
          v
+-------------------+       +-------------------+
| Retrieval Module  | ----> | Relevant Context  |
+-------------------+       +-------------------+
          |                           |
          v                           v
+-------------------+
| Generation Module |
+-------------------+
          |
          v
+-------------------+
| Final Itinerary   |
+-------------------+
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

مثال کد: ژنراتور برنامه سفر چند شات

from dspy import Retrieve, Predict, Pipeline

# Retrieval module to fetch relevant travel information (mocked here)
class TravelInfoRetrieval(Retrieve):
    def forward(self, query):
        # Mocked retrieval results for simplicity
        return {"passages": ["Rome is known for its historical landmarks like the Colosseum and Vatican City."]}

# Generation module to create itineraries based on retrieved context
class GenerateItinerary(Predict):
    def __init__(self):
        super().__init__("context + preferences -> itinerary")

# Combine modules into a pipeline
travel_pipeline = Pipeline(
    steps=[
        ("retrieve", TravelInfoRetrieval()),
        ("generate", GenerateItinerary())
    ]
)

# Compile and run pipeline on user query
compiled_pipeline = travel_pipeline.compile()
response = compiled_pipeline.run("I want a 3-day itinerary for Rome focusing on food and history.")
print(f"Generated Itinerary: {response}")
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید

نمونه خروجی:

Generated Itinerary:
Day 1: Explore the Colosseum and Roman Forum; Dinner at Trattoria da Enzo.
Day 2: Visit Vatican City; Lunch at Campo de' Fiori market.
Day 3: Walk through Trastevere; Try gelato at Giolitti.
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید


مرحله 5: خودکار سازی بهینه سازی سریع

DSPY از الگوریتم هایی مانند COPRO (بهینه سازی نامزد برای اعلان ها) استفاده می کند تا بر اساس معیارهای ارزیابی ، بطور تکراری را اصلاح کند.

مثال کد: بهینه سازی اعلان ها با COPRO

from dspy.teleprompt import Teleprompter

# Define evaluation metrics (e.g., accuracy)
def itinerary_accuracy_metric(predicted_output, expected_output):
    return sum(
        predicted_output[key] == expected_output[key]
        for key in expected_output.keys()
    ) / len(expected_output)

# Optimize the task using Teleprompter and COPRO algorithm
teleprompter = Teleprompter(task=activity_recommendation_task)
optimized_task = teleprompter.optimize(metric=itinerary_accuracy_metric)

# Test optimized task on new input
response = optimized_task.run("User loves architecture; Destination: Barcelona")
print(f"Optimized Recommendations: {response}")
حالت تمام صفحه را وارد کنید

از حالت تمام صفحه خارج شوید


چرا از DSPY استفاده می کنیم؟

  1. سهولت استفاده:

    • برنامه نویسی اعلامی گردش کار پیچیده را ساده می کند.
    • طراحی مدولار امکان تکرار سریع را فراهم می کند.
  2. مقیاس پذیری:

    • بهینه سازی سریع را در جریان کار صفر ، چند عکس و چند شات خودکار می کند.
    • معیارهای عملکرد را با ادغام MLFlow دنبال می کند.
  3. انعطاف پذیری:

    • با API های OpenAi و همچنین مدل های محلی مانند بغل کردن صورت کار می کند.
  4. سیستم های بهبودی خود:

    • حلقه های بازخورد با استفاده از معیارهای ارزیابی ، به مرور زمان اصلاح می کنند.

پایان

DSPY مهندسی سریع را از آزمایش و خطای دستی به یک فرآیند برنامه نویسی ساختاری تبدیل می کند. این که آیا شما تازه با API های OpenAI شروع کرده اید یا برنامه های پیشرفته LLM را در ساختمان ایجاد می کنید ، DSPY ابزارهایی را برای خودکار سازی گردش کار به طور کارآمد فراهم می کند.

با اجرای خلاصه شات صفر ، توصیه های چند عکس و تولید برنامه سفر چند شات در این آموزش ، شما دیده اید که چگونه DSPY ضمن افزایش مقیاس پذیری ، توسعه LLM را ساده می کند. امروز آن را امتحان کنید تا سفر AI خود را به ارتفاعات جدید ببرید!


منابع

  1. مخزن DSPY GitHub: https://github.com/stanfordnlp/dspy
  2. گروه پردازش زبان طبیعی استنفورد: https://nlp.stanford.edu/
  3. مستندات API Openai: https://beta.openai.com/docs/api-ereference
  4. مستندات MLFlow: https://mlflow.org/docs/latest/index.html
  5. مستندات numpy: https://numpy.org/doc/

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا