ایجاد گردش کار 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)
مزایای اصلی
-
توسعه مدل محور با LLM داخلی
- Docstrings در مدل های Pydantic ما به عنوان اعلان مستقیم برای LLM عمل می کند
- با به روزرسانی Docstring مدل ، ما به طور خودکار نحوه تفسیر LLM و تولید محتوا را به روز می کنیم
- مثال:
StoryForBabies
Docstring مدل صریحاً LLM را برای استفاده از توضیحات زبان ساده و حسی راهنمایی می کند
-
منبع واحد حقیقت
- به جای حفظ دستورالعمل های جداگانه و ساختار داده ها ، مدل Pydantic هر دو هدف را ارائه می دهد
- هنگامی که شما نیاز به تغییر نحوه رفتار AI دارید ، فقط باید Docstring مدل را به روز کنید
- هنگامی که شما نیاز به تغییر ساختار داده دارید ، فقط باید زمینه های مدل را به روز کنید
- این مسئله مشکل رایج در خارج شدن و کدگذاری کد را از بین می برد
-
ایمنی و اعتبار سنجی را تایپ کنید
- Pydantic به طور خودکار تمام داده های جریان از طریق گردش کار AI شما را تأیید می کند
- اگر LLM خروجی نامعتبر تولید کند ، بلافاصله می دانید
- این قبل از رسیدن به تولید ، خطاها را در اوایل روند توسعه به وجود می آورد
- مثال: اگر LLM شامل نام شخصیت ها باشد ، Pydantic خطایی ایجاد می کند
-
معماری خود مستند
- مدل ها به وضوح ساختار داده های شما و رفتار مورد نظر هوش مصنوعی را نشان می دهند
- اعضای تیم جدید می توانند با خواندن مدل ها کل گردش کار را درک کنند
- Docstrings به عنوان مستندات و کد عملکردی خدمت می کند
- مثال:
StoryForChildren
Docstring مدل به وضوح دامنه سن هدف را نشان می دهد
تمرین تمرین
این کد را کپی کرده و سعی کنید یک نوع داستان جدید به نام StoryForteenagers ایجاد کنید و گردش کار را برای تولید محتوای مناسب سن برای نوجوانان تغییر دهید. به این فکر کنید که چه زمینه های خاص یا قوانین اعتبار سنجی ممکن است برای این مخاطب مرتبط باشد.