1. معرفی مدلهای زبان بزرگ
مدلهای زبان بزرگ (LLMs) از اجزای اصلی LangChain هستند. خود LangChain قابلیت ارائه مدلهای زبان بزرگ را ندارد؛ به جای آن، انواع مختلفی از مدلهای زبان بزرگ را بستهبندی کرده و رابط استانداردی برای عملکرد با این مدلها فراهم میکند تا برای توسعه دهندگان راحتتر باشد.
در حال حاضر، LangChain انواع مختلفی از مدلهای زبان بزرگ را بستهبندی کرده و همچنین از مدلهای سفارشی پشتیبانی میکند. توسعه دهندگان میتوانند رابطهای مدل خود را بستهبندی کنند.
- توجه: در حال حاضر، انواع مختلفی از مدلهای زبان بزرگ متنباز و تجاری موجود هستند. با توجه به تفاوتهای هزینه و قابلیتهای مدل، هر کس ممکن است انتخابهای متفاوتی داشته باشد. علاوه بر این، ممکن است تغییرات مکرر در مدلها صورت گیرد و توسعه دهندگان ممکن است وقتی مدلها را تغییر میدهند، نخواهند خواست تا کدهای تجاری خود را زیاد تغییر دهند. اینجاست که ارزش LangChain مشخص میشود.
2. راهاندازی
2.1 نصب
برای استفاده از OpenAI LLM در LangChain، کاربران باید بسته OpenAI پایتون را با اجرای دستور زیر نصب کنند:
pip install openai
2.2 راهاندازی کلید API
دسترسی به API OpenAI نیازمند یک کلید API است که میتوان آن را با ایجاد یک حساب کاربری در پلتفرم OpenAI دریافت کرد. یک بار که کلید API دریافت شود، میتوان آن را به عنوان یک متغیر محیطی با استفاده از دستور زیر تنظیم کرد:
export OPENAI_API_KEY="کلید-شما"
همچنین، اگر نمیخواهید یک متغیر محیطی تنظیم کنید، میتوانید همچنین کلید API را بصورت مستقیم هنگام مقداردهی اولیه کلاس OpenAI LLM استفاده کنید؛ همانطور که در زیر نمایش داده شده است:
from langchain_openai import OpenAI
llm = OpenAI(openai_api_key="کلید-شما")
3. اجرای LCEL
در LangChain، LLMها رابط Runnable را برای زبان بیان LangChain (LCEL) پیاده سازی میکنند. این به این معنی است که آنها انواع توابعی را پشتیبانی میکنند، از جمله invoke
، stream
، batch
و غیره.
LLMها ورودی رشتهای یا اشیاء را که میتوانند به یک ورودی رشته تبدیل شوند، از جمله List[BaseMessage]
و PromptValue
را قبول میکنند.
4. مثال استفاده از LLM
4.1 فراخوانی
برای فراخوانی یک LLM با یک پراکند مشخص، میتوان از تابع invoke
استفاده کرد، همانطور که در زیر نمایش داده شده است:
llm.invoke("در اینجا یک پراکند برای LLM وارد کنید")
4.2 استریمینگ
روش بدست آوردن و پردازش خروجی متن به صورت زمان واقعی از LLMها، استریمینگ نام دارد. در زیر مثالی از استفاده از LLM برای پردازش استریمینگ نشان داده شده است:
for chunk in llm.stream("در اینجا یک پراکند برای استریمینگ LLM وارد کنید"):
print(chunk, end="", flush=True)
4.3 پردازش دستهای
پردازش دستهای اجازه پردازش موازی ورودیهای مختلف برای LLMها را میدهد. میتوانید یک دسته از پراکندها را مانند این بگیرید:
llm.batch(["پراکند ۱", "پراکند ۲", "پراکند ۳"])
4.4 عملیات ناهمگام
برای بهبود کارایی، میتوان از عملیات ناهمگام در ارتباط با LLMها استفاده کرد. عملیات ناهمگام مانند ainvoke
، astream
، abatch
و astream_log
اجرا ناهمگام را فراهم میکنند. در زیر یک مثال از استفاده از LLM برای پردازش ناهمگام استریمینگ نشان داده شده است:
async for chunk in llm.astream("در اینجا یک پراکند ناهمگام برای استریمینگ LLM وارد کنید"):
print(chunk, end="", flush=True)
این مثالها نشان دهنده روشهای متنوع بهرهبرداری از LLMها برای وظایف پردازش زبان طبیعی در چارچوب LangChain میباشد.