برنامه نویسی

ایجاد گردش کار AI قابل نگهداری با Python ، Pydantic و Langchain

بررسی اجمالی و مفاهیم اساسی

در این درس ، ما چگونگی ایجاد گردش کار AI را با استفاده از پایتون و پییدنتیک بررسی خواهیم کرد. ما بر روی ساخت یک سیستم تجزیه و تحلیل داستان تمرکز خواهیم کرد که به راحتی قابل اصلاح و گسترش است.

مفاهیم اساسی

مدل های Pydantic پایه و اساس مدیریت داده های ایمن از نوع در برنامه های مدرن پایتون هستند. آنها به ما امکان می دهند ساختار داده های خود را تعریف کرده و به طور خودکار آن را تأیید کنیم. هنگام کار با گردش کار هوش مصنوعی ، این امر بسیار مهم می شود زیرا به ما کمک می کند تا قوام و خطاهای زود هنگام را حفظ کنیم.

یک مدل در پیوتنتیک کلاس است که از Basemodel به ارث می برد و ساختار مورد انتظار داده های شما را تعریف می کند. هر زمینه در مدل می تواند نکات نوع داشته باشد ، که Pydantic برای اعتبار سنجی از آن استفاده می کند.

ساختن یک سیستم تجزیه و تحلیل داستان

بیایید یک سیستم تجزیه و تحلیل داستان ساده برای نشان دادن این مفاهیم ایجاد کنیم.

شما باید بسته های زیر را نصب کنید:

pip install pydantic langchain-openai
حالت تمام صفحه را وارد کنید

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

مدل

from pydantic import BaseModel
from typing import List

class Story(BaseModel):
    title: str
    content: str
    genre: str = "unknown"
حالت تمام صفحه را وارد کنید

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

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

لطفاً توجه داشته باشید که از مستندات مدل ها توسط AI برای تولید خروجی صحیح استفاده می شود.

معمولاً اگر نام متغیرهای خود را نام ببرید ، LLM می تواند نشانه را انتخاب کند ، اما گاهی اوقات (مانند داستانهای کودکان)
ما باید صریح باشیم و به LLM بگوییم که چه می خواهیم.

این کار با اضافه کردن یک Docstring (دقیقاً زیر “داستان کلاس (داستان):” خط) به مدل انجام می شود.

مدلهایی که از آنها استفاده خواهیم کرد:

class StoryForChildren(Story):
    """
    A story that is specifically tailored to be children's story.

    Appropriate for children aged 2-6 years old.
    """
    pass

class StoryForBabies(Story):
    """
    A story that is specifically tailored to be a baby's story.

    Appropriate for infants and toddlers aged 0-2 years old.
    Features:
    - Simple, repetitive language
    - Basic concepts
    - Short sentences
    - Sensory-rich descriptions
    """
    pass

class StoryAnalysis(BaseModel):
    # Character elements
    character_names: List[str]
    character_descriptions: List[str]

    # Theme elements
    main_theme: str
    supporting_themes: List[str]
    symbols: List[str]

    # Plot elements
    exposition: str
    climax: str
    resolution: str
    key_events: List[str]

    # Style and interpretation
    writing_techniques: List[str]
    overall_interpretation: str
حالت تمام صفحه را وارد کنید

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

ایجاد عوامل هوش مصنوعی

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

این تابع مدل ورودی ، مدل خروجی و یک پارامتر دما را می گیرد.

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

def get_agent_function(
    input_model: Union[BaseModel, str],
    output_model: BaseModel,
    temperature: float = 0.3
) -> Callable[[Union[str, BaseModel]], BaseModel]:
    llm = ChatOpenAI(
        model="gpt-4",
        temperature=temperature
    )

    def run_llm(input_data: Union[str, BaseModel]) -> BaseModel:
        if not isinstance(input_data, input_model):
            raise ValueError(f"Input must be an instance of {input_model}")

        if isinstance(input_data, BaseModel):
            input_data = input_data.model_dump_json()

        llm = llm.with_structured_output(output_model)
        response = llm.invoke(input_data)
        return response

    return run_llm
حالت تمام صفحه را وارد کنید

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

با استفاده از گردش کار

در اینجا نحوه استفاده از مدل ها و نمایندگان خود با هم آورده شده است:

# Create specialized agents
parse_story = get_agent_function(str, Story)
get_baby_friendly_story = get_agent_function(Story, StoryForBabies)
analyze_story = get_agent_function(Story, StoryAnalysis)

# Execute the workflow
story = parse_story(story_text)
baby_friendly_story = get_baby_friendly_story(story)
analysis = analyze_story(baby_friendly_story)
حالت تمام صفحه را وارد کنید

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

مزایای اصلی

  1. توسعه مدل محور با LLM داخلی

    • Docstrings در مدل های Pydantic ما به عنوان اعلان مستقیم برای LLM عمل می کند
    • با به روزرسانی Docstring مدل ، ما به طور خودکار نحوه تفسیر LLM و تولید محتوا را به روز می کنیم
    • مثال: StoryForBabies Docstring مدل صریحاً LLM را برای استفاده از توضیحات زبان ساده و حسی راهنمایی می کند
  2. منبع واحد حقیقت

    • به جای حفظ دستورالعمل های جداگانه و ساختار داده ها ، مدل Pydantic هر دو هدف را ارائه می دهد
    • هنگامی که شما نیاز به تغییر نحوه رفتار AI دارید ، فقط باید Docstring مدل را به روز کنید
    • هنگامی که شما نیاز به تغییر ساختار داده دارید ، فقط باید زمینه های مدل را به روز کنید
    • این مسئله مشکل رایج در خارج شدن و کدگذاری کد را از بین می برد
  3. ایمنی و اعتبار سنجی را تایپ کنید

    • Pydantic به طور خودکار تمام داده های جریان از طریق گردش کار AI شما را تأیید می کند
    • اگر LLM خروجی نامعتبر تولید کند ، بلافاصله می دانید
    • این قبل از رسیدن به تولید ، خطاها را در اوایل روند توسعه به وجود می آورد
    • مثال: اگر LLM شامل نام شخصیت ها باشد ، Pydantic خطایی ایجاد می کند
  4. معماری خود مستند

    • مدل ها به وضوح ساختار داده های شما و رفتار مورد نظر هوش مصنوعی را نشان می دهند
    • اعضای تیم جدید می توانند با خواندن مدل ها کل گردش کار را درک کنند
    • Docstrings به عنوان مستندات و کد عملکردی خدمت می کند
    • مثال: StoryForChildren Docstring مدل به وضوح دامنه سن هدف را نشان می دهد

تمرین تمرین

این کد را کپی کرده و سعی کنید یک نوع داستان جدید به نام StoryForteenagers ایجاد کنید و گردش کار را برای تولید محتوای مناسب سن برای نوجوانان تغییر دهید. به این فکر کنید که چه زمینه های خاص یا قوانین اعتبار سنجی ممکن است برای این مخاطب مرتبط باشد.

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

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

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

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