ہدایت نامہ کا استعمال

عموماً، LLM کو مرجحہ مثال کا مدد حاصل ہونے سے استخراج کی کوالٹی بہتر کرنی جا سکتی ہے۔

مشورہ: اس ٹیوٹوریل میں ٹول کالنگ ماڈل کے ساتھ مثال کے استعمال پر توجہ ہے، لیکن یہ تکنیک عموماً قابلِ اطلاق ہے اور یہ JSON یا دیگر طریقوں سے بھی کام کرے گی۔

from langchain_core.prompts import ChatPromptTemplate, MessagesPlaceholder

prompt = ChatPromptTemplate.from_messages(
    [
        (
            "system",
            "آپ ایک ماہر استخراج الگورتھم ہیں۔ "
            "صرف مواد سے متعلقہ معلومات نکالیں۔ "
            "اگر آپ کو کسی خصوصیت کی قیمت نہیں پتہ ہے تو خصوصیت کی قیمت کے لئے نل واپس کریں۔",
        ),
        MessagesPlaceholder("examples"),  # <-- مثالیں!
        ("human", "{text}"),
    ]
)

ٹیمپلیٹ کا ٹیسٹ کریں:

from langchain_core.messages import (
    HumanMessage,
)

prompt.invoke(
    {"text": "یہ کچھ مواد ہے", "examples": [HumanMessage(content="ٹیسٹنگ 1 2 3")]}
)
ChatPromptValue(messages=[SystemMessage(content="آپ ایک ماہر استخراج الگورتھم ہیں۔ صرف مواد سے متعلقہ معلومات نکالیں۔ اگر آپ کو کسی خصوصیت کی قیمت نہیں پتہ ہے تو خصوصیت کی قیمت کے لئے نل واپس کریں۔"), HumanMessage(content='ٹیسٹنگ 1 2 3'), HumanMessage(content='یہ کچھ مواد ہے')])

سکیما کی تعریف

چلیں، چیک پوسٹ سے شخص کی سکیما کو دوبارہ استعمال کریں۔

from typing import List, Optional

from langchain_core.pydantic_v1 import BaseModel, Field
from langchain_openai import ChatOpenAI


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]

تعریف مرجعی مثالات

مثالات کو ایک ان پٹ-آؤٹ جوڑوں کی فہرست کے طور پر تعریف کیا جا سکتا ہے۔

ہر مثال میں ایک مثال ان پٹ متن اور مثال آؤٹ پٹ شامل ہوتا ہے جو متن سے کیا نکلنا چاہئے وہ دکھاتا ہے۔

معلومات

یہ کام کھیت میں جانے والے کاموں کو دیکھ کر چھوڑ دیں، تو براہ کرم اسے نظرانداز کریں!

مثال کا فارمیٹ API کے مطابق ہونا چاہئے جو استعمال ہو رہا ہے (مثلاً ٹول کالنگ یا JSON موڈ وغیرہ)۔

یہاں، فارمیٹ کی گئی مثالیں ٹول کالنگ API کے لئے متوقع فارمیٹ سے مماثل ہوں گی کیونکہ یہی ہم استعمال کر رہے ہیں۔

ChatPromptValue(messages=[SystemMessage(content="آپ ایک ماہر نکال کاری الگورتھم ہیں۔ صرف متن سے متعلقہ معلومات نکالیں۔ اگر آپ کو کسی خصوصیت کی قیمت معلوم نہ ہو، تو خصوصیت کی قیمت کے لئے نل لوٹائیں۔"), HumanMessage(content="سمندر وسیع اور نیلا ہے۔ یہ 20,000 فٹ سے زیادہ گہرا ہے۔ اس میں بہت سے مچھلیاں ہیں۔"), AIMessage(content='', additional_kwargs={'tool_calls': [{'id': 'c75e57cc-8212-4959-81e9-9477b0b79126', 'type': 'function', 'function': {'name': 'Person', 'arguments': '{"name": null, "hair_color": null, "height_in_meters": null}'}}]}), ToolMessage(content='آپ نے ٹول کو صحیح طریقے سے بلایا ہے۔', tool_call_id='c75e57cc-8212-4959-81e9-9477b0b79126'), HumanMessage(content='فیونا نے فرانس سے دور سفر کیا۔'), AIMessage(content='', additional_kwargs={'tool_calls': [{'id': '69da50b5-e427-44be-b396-1e56d821c6b0', 'type': 'function', 'function': {'name': 'Person', 'arguments': '{"name": "فیونا", "hair_color": null, "height_in_meters": null}'}}]}), ToolMessage(content='آپ نے ٹول کو صحیح طریقے سے بلایا ہے۔', tool_call_id='69da50b5-e427-44be-b396-1e56d821c6b0'), HumanMessage(content='یہ کچھ متن ہے')])

ایک ایکسٹریکٹر تخلیق کریں

یہاں، ہم gpt-4 کا استعمال کرتے ہوئے ایک ایکسٹریکٹر بنائیں گے۔

llm = ChatOpenAI(
    model="gpt-4-0125-preview",
    temperature=0,
)

runnable = prompt | llm.with_structured_output(
    schema=Data,
    method="function_calling",
    include_raw=False,
)
/Users/harrisonchase/workplace/langchain/libs/core/langchain_core/_api/beta_decorator.py:86: LangChainBetaWarning: فنکشن `with_structured_output` بیٹا ورژن میں ہے۔ یہ فعال طور پر کام کر رہا ہے، لہذا API تبدیل ہو سکتا ہے۔
warn_beta(

مثالوں کے بغیر

دیکھیں کہ ہم gpt-4 استعمال کر رہے ہیں لیکن یہ ایک بہت ہی سادہ ٹیسٹ کیس کے ساتھ ناکام ہو رہا ہے۔

for _ in range(5):
    text = "سولر سسٹم بڑا ہے، لیکن زمین کے پاس صرف ایک چاند ہے۔"
    print(runnable.invoke({"text": text, "examples": []}))
people=[]
people=[Person(name='earth', hair_color=None, height_in_meters=None)]
people=[Person(name='earth', hair_color=None, height_in_meters=None)]
people=[]
people=[]

مثالوں کے ساتھ

حوالہ مثالیں ناکامی درست کرنے میں مدد فراہم کرتی ہیں۔

for _ in range(5):
    text = "سولر سسٹم بڑا ہے، لیکن زمین کے پاس صرف ایک چاند ہے۔"
    print(runnable.invoke({"text": text, "examples": messages}))
people=[]
people=[]
people=[]
people=[]
people=[]
runnable.invoke(
    {
        "text": "میرا نام ہیرسن ہے۔ میرے بال کالے ہیں۔",
        "examples": messages,
    }
)
Data(people=[Person(name='Harrison', hair_color='black', height_in_meters=None)])