تیز آغاز

اس تیز آغاز میں ہم چیٹ ماڈلز استعمال کریں گے جو فنکشن/ٹول کالنگ کرنے کی صلاحیت رکھتے ہیں تاکہ متن سے معلومات حاصل کی جا سکیں۔

فنکشن/ٹول کالنگ کا استعمال صرف اُن ماڈلز کے ساتھ کرنا ممکن ہے جو فنکشن/ٹول کالنگ کی صلاحیت فراہم کرتے ہیں۔

ترتیب دینا

ہم فنکشن/ٹول کالنگ کی صلاحیت رکھنے والے LLMs پر دستیاب منظم کرنے کا طریقہ استعمال کریں گے۔

ایک ماڈل کا انتخاب کریں، اس کے لئے dependencies کو install کریں اور API کی چابیوں کو تشکیل دیں!

!pip install langchain

سکیما

سب سے پہلے، ہمیں وضاحت دینی ہوگی کہ ہم متن سے کن معلومات کو حاصل کرنا چاہتے ہیں۔

ہم Pydantic استعمال کریں گے تاکہ ایک مثال سکیما تعین کر سکیں جس سے شخصی معلومات کو نکالا جاسکے۔

from typing import Optional

from langchain_core.pydantic_v1 import BaseModel, Field

class Person(BaseModel):
    """شخص کے بارے میں معلومات۔"""

    name: Optional[str] = Field(..., description="شخص کا نام")
    hair_color: Optional[str] = Field(
        ..., description="شخص کے بالوں کا رنگ، اگر معلوم ہو"
    )
    height_in_meters: Optional[str] = Field(
        ..., description="قد میٹر میں ناپا گیا ہے"
    )

جب سکیما کو تعین کرتے وقت دو بہترین عادات ہیں:

  1. خصوصیات اور سکیما خود کے لئے دستاویز بنائیں: یہ معلومات LLM کو بھیجی جاتی ہے اور اس سے معلومات کی معیاریت میں بہتری کرنے کے لئے استعمال ہوتی ہے۔
  2. LLM کو معلومات کی تشخیص کرنے کے لئے مجبور نہ کریں! ہم نے اوپشنل استعمال کیا ہے خصوصیات کے لئے تاکہ LLM کو اگر جواب معلوم نہ ہو تو وہ None خروج کرسکے۔

بہتر عمل کے لئے سکیما کو بہتری سے دستاویز کریں اور یہ یقینی بنائیں کہ ماڈیل کو اگر متن سے نکالنے کی معلومات نہیں ہو تو نتائج لانے پر مجبور نہیں کیا جاتا۔

نکالنے والا

چلیں ہم ہمارے تعین کردہ سکیما استعمال کرکے معلومات کا نکالنے والا بناتے ہیں۔

from typing import Optional

from langchain_core.prompts import ChatPromptTemplate, MessagesPlaceholder
from langchain_core.pydantic_v1 import BaseModel, Field
from langchain_openai import ChatOpenAI

prompt = ChatPromptTemplate.from_messages(
    [
        (
            "system",
            "آپ ایک ماہر نکالنے کے الگوریتم ہیں۔ صرف متن سے متعلقہ معلومات نکالیں۔ اگر آپ کو کسی خصوصیت کی قیمت نہیں پتا ہے جو استخراج کرنی ہے، تو خصوصیت کی قیمت کے لئے نل (null) واپس کریں۔",
        ),
        ("human", "{text}"),
    ]
)

ہمیں ایک ایسے ماڈل کا استعمال کرنا ہوگا جو فنکشن/ٹول کالنگ کو سپورٹ کرتا ہے۔

from langchain_openai import ChatOpenAI

llm = ChatOpenAI()

runnable = prompt | llm.with_structured_output(schema=Person)

آئیے یہ ٹیسٹ کریں

text = "Alan Smith is 6 feet tall and has blond hair."
runnable.invoke({"text": text})
Person(name='Alan Smith', hair_color='blond', height_in_meters='1.8288')

نکالنا پیدا کنندہ ہے 🤯 LLMs پیدا کنندہ ماڈلز ہوتے ہیں، لہذا وہ کچھ بہت ہی دلچسپ چیزیں کر سکتے ہیں، مثلاً فیٹ میں دی گئی شخص کی قد کو میٹر میں درست طریقے سے نکالنا۔

متعدد انٹٹیٹیز

اغلب الوقوعات میں، آپ کو ایک انٹٹیٹی کی بجائے انٹٹیٹیز کی فہرست حاصل کرنی چاہئیے۔

یہ آسانی سے پائی جا سکتی ہے پائی جاتی ہے پائی جاتی ہے پائی جاتی ہے با پیدانٹک کی مدد سے، ایک دوسرے کے اندر ماڈلز کو گھیرنے کے ذریعے۔

from typing import List, Optional

from langchain_core.pydantic_v1 import BaseModel, Field


class Person(BaseModel):
    """شخص کے بارے میں معلومات."""


    name: Optional[str] = Field(..., description="شخص کا نام")
    hair_color: Optional[str] = Field(
        ..., description="اگر معلوم ہو تو شخص کے بالوں کا رنگ"
    )
    height_in_meters: Optional[str] = Field(
        ..., description="میٹر میں ناپی گئی قد"
    )


class Data(BaseModel):
    """لوگوں کے بارے میں حاصل شدہ ڈیٹا."""

    people: List[Person]

یہاں استخراج ممکن ہے کہ مکمل نہ ہو۔ براہ کرم دیکھیں کے کس طرح حوالہ مثالیں کا استعمال کر کے استخراج کی کوالٹی کو بہتر بنایا جا سکتا ہے، اور ہدایات سیکشن میں دی گئی راہنمائیاں دیکھیں!

runnable = prompt | llm.with_structured_output(schema=Data)
text = "میرا نام جیف ہے، میرے بال سیاہ ہیں اور میں 6 فیٹ لمبا ہوں۔ اینا کے بھی میرے جیسے رنگ کے بال ہیں۔"
runnable.invoke({"text": text})
Data(people=[Person(name='جیف', hair_color=None, height_in_meters=None), Person(name='انا', hair_color=None, height_in_meters=None)])

جب اسکیما میں متعدد انٹٹیٹیز کا استخراج ممکن ہوتا ہے، تو یہ ماڈل کو بدلہ دینے پر مجبور نہیں کرتا اگر ٹیکسٹ میں کوئی متعلقہ معلومات نہ ہوتی ہے تو معمولاً یہ اچھی بات ہے۔

یہ ایک عام بات ہے! یہ اشیاء کی ضرورت مند امکانات کو بیان کرنے کی اجازت دیتی ہے بغیر اس انٹٹیٹی کو استخراج کرنے کے لئے ماڈل کو مجبور نہیں کرتی۔