1. LangServe সংক্ষিপ্ত বিবরণ

LangServe হল এমনকি একটি লাইব্রেরি যা ডেভেলপারদের প্রোগ্রাম এবং LangChain এর শ্রেণী গুলির REST API হিসেবে চালানোর সাহায্য করে। এটি FastAPI সংযোজন করে এবং ডেটা যাচাই নিশ্চিত করার জন্য pydantic ব্যবহার করে।

2. বৈশিষ্ট্য

LangServe এর নিম্নলিখিত বৈশিষ্ট্য রয়েছে:

  • LangChain অবজেক্ট থেকে ইনপুট এবং আউটপুট মোড স্বয়ংক্রিয়ভাবে ইনফার করে এবং প্রতিটি API কলের জন্য প্রমাণীকরণ প্রদান করে, ধারাবাহিক ত্রুটির বার্তা প্রদান করে
  • JSONSchema এবং Swagger সম্মিলিত এপিআই নথি পাতা
  • একটি সিঙ্গেল সার্ভারে অনেক সংলগ্ন অনুরোধ সমর্থন করা /invoke/, /batch/, এবং /stream/ এন্ডপয়েন্টস কার্যকর হিসেবে
  • শীর্ষকের মধ্যে সমস্ত (অথবা অংশগুলি) স্ট্রীমিং এর জন্য /stream_log/ এন্ডপয়েন্ট
  • নতুন বৈশিষ্ট্য যেমন ভার্সন 0.0.40 থেকে, astream_events সমর্থন করে যাতে স্ট্রীমিং অনুপ্রেরণা করার জন্য বাক্যবিন্যাস পার্স করা লাগে না
  • স্ট্রীমিং আউটপুট এবং মধ্যবর্তী অংশ সহ ইউজার দ্বারা চালানোর জন্য /playground/ পৃষ্ঠা
  • ঐতিহাসিকভাবে যাচাই করা ওয়া পাইথন লাইব্রেরির সাথে নির্মিত যেমন FastAPI, Pydantic, uvloop, এবং asyncio
  • একটি ক্লায়েন্ট SDK ব্যবহার করে LangServe সার্ভার চালানো যেমন লোকালি চলমান Runnable (বা সরাসরি HTTP API কলিং)
  • LangServe Hub

3. সীমাবদ্ধতা

  • ক্লায়েন্ট কলব্যাক যা সার্ভার হয়ে থাকা না থাকায় এখনও সমর্থন করা হয়নি
  • Pydantic V2 ব্যবহার করতে যদি OpenAPI ডকুমেন্টেশন তৈরি না হয়, তবে ফাস্টএপি মিশ্রিত pydantic v1 এবং v2 নেমস্পেস সমর্থন করে না। বিস্তারিত তথ্যের জন্য নীচের অনুচ্ছেদটি দেখুন।

4. ইন্সটলেশন

আপনি নিম্নলিখিত কমান্ড ব্যবহার করে LangServe ইনস্টল করতে পারেন:

pip install "langserve[all]"

অথবা ক্লায়েন্ট কোড ইনস্টল করতে pip install "langserve[client]" ব্যবহার করুন, এবং সার্ভার কোড ইনস্টল করতে pip install "langserve[server]" ব্যবহার করুন।

5. নমুনা অ্যাপ্লিকেশন

নিচে, আমরা সরল API ব্যবহার করে অন্যান্য অ্যাপ্লিকেশনের জন্য এমনকি LangChain দ্বারা নির্ধারিত মডেল, চেইন, এবং এজেন্টগুলির REST API প্রকাশ করতে এবং শোধ করতে দেই। যদি আপনি FastAPI সম্পর্কে জানেন, তবে সহায়ক ক্লাস ব্যবহার করুন langserve দ্বারা প্রদান করা ইউটিলিটি ক্লাসটি টেনে fastAPI রুট রেজিস্টার করার মধ্যমে।

নিচের উদাহরণটি একটি OpenAI চ্যাট মডেল, একটি Anthropi চ্যাট মডেল, এবং একটি আন্থ্রোপিক মডেল ব্যবহার করে বিশেষ বিষয়ের উপর কৌতুক বা চটকারির স্লয় একটি চেইন প্রকাশ করে।

from fastapi import FastAPI
from langchain.prompts import ChatPromptTemplate
from langchain.chat_models import ChatAnthropic, ChatOpenAI
from langserve import add_routes

app = FastAPI(
    title="LangChain Server",
    version="1.0",
    description="LangChain এর রানবল ইন্টারফেস ব্যবহার করে সাধারণ API সার্ভার",
)

add_routes(
    app,
    ChatOpenAI(),
    path="/openai",
)

add_routes(
    app,
    ChatAnthropic(),
    path="/anthropic",
)

model = ChatAnthropic()
prompt = ChatPromptTemplate.from_template("tell me a joke about {topic}")
add_routes(
    app,
    prompt | model,
    path="/joke",
)

if __name__ == "__main__":
    import uvicorn

    uvicorn.run(app, host="localhost", port=8000)

আপনি একটি ব্রাউজার থেকে এন্ডপয়েন্টগুলি কল করতে ইচ্ছুক হলে, আপনাকে এইমধ্যেত্বকের মাধ্যমে অনুমতি প্রদান করার জন্য CORS হেডার সেট করতে হবে। আপনি FastAPI এর নির্মিত middleware ব্যবহার করে এটি সাধন করতে পারেন।

from fastapi.middleware.cors import CORSMiddleware

app.add_middleware(
    CORSMiddleware,
    allow_origins=["*"],
    allow_credentials=True,
    allow_methods=["*"],
    allow_headers=["*"],
    expose_headers=["*"],
)

5. নথিপত্র

উপরোক্ত উদাহরণটি চালানোর পরে, LangServe স্বয়ংক্রিয়ভাবে সমস্ত নিবন্ধিত রুটগুলির জন্য API নথি তৈরি করে। আপনি নিবন্ধিত OpenAPI নথি চেক করতে পারেন নিম্নলিখিত ঠিকানায়:

http://localhost:8000/docs

দ্রষ্টব্যঃ যদি পাইডান্টিক V2 ব্যবহার করেন, তবে যদি ডকুমেন্টেশন কিছু জায়গায় তৈরি না করে তবে তা অনুমোদন করা হবে না invoke, batch, stream, এবং stream_log. যদি বিস্তারিত তথ্য প্রয়োজন হয়, তবে নীচের দিকে দেখুন।

6. API রুট সম্পর্কে পরিচিতি

নিচের টেক্সটটি দেখুন, এটি হল LangServe দ্বারা API রুট নিবন্ধন করার পরে তৈরি হওয়া API ইন্টারফেসের পরিচয়।

উদাহরণস্বরূপ, নিম্নলিখিত কোডটি মনে করুন:

add_routes(
    app,
    runnable,
    path="/my_runnable",
)

LangServe নিম্নলিখিত ইন্টারফেস তৈরি করবে:

  • POST /my_runnable/invoke - মডেল আহ্বানের ইন্টারফেস
  • POST /my_runnable/batch - ব্যাচ মডেল আহ্বানের ইন্টারফেস
  • POST /my_runnable/stream - স্ট্রিমিং মডেল আহ্বানের ইন্টারফেস
  • POST /my_runnable/stream_log - লগ আউটসহ স্ট্রিমিং মডেল আহ্বানের ইন্টারফেস
  • POST /my_runnable/astream_events - ইভেন্ট আউটপুটসহ অ-সিঞ্চ্রোনাস স্ট্রিমিং মডেল আহ্বানের ইন্টারফেস
  • GET /my_runnable/input_schema - মডেল আহ্বানের ইন্টারফেস প্যারামিটার বিবরণ
  • GET /my_runnable/output_schema - মডেল আউটপুটের ইন্টারফেস প্যারামিটার বিবরণ
  • GET /my_runnable/config_schema - মডেলের কনফিগারেশন বিবরণ

7. প্লেগ্রাউন্ড

LangServe প্রতিটি নিবন্ধিত রুটের জন্য UI ডিবাগিং পেজ সরবরাহ করে, যা আমরা আমাদের নির্ধারিত Chain, Agent, এবং অন্যান্য LangChain সেবা ডিবাগ করতে কর্তৃপক্ষ করে।

আপনি নিম্নলিখিত ফর্ম্যাটে Playground উদাহরণে অ্যাক্সেস করতে পারেন: /my_runnable/playground/.