کوڈ کا تقسیم

اس باب میں LangChain کا کوڈ ٹیکسٹ سپلٹر معرف کروایا گیا ہے۔ اگر آپ کوڈ کو کوڈ سنیپیٹس میں تقسیم کرنا چاہتے ہیں تو آپ کو اس باب کی مواد کو دھیان سے پڑھنا چاہئے۔ CodeTextSplitter متعدد پروگرامنگ زبانوں کے لئے کوڈ کو تقسیم کرنے کی مدد کرتا ہے۔

Dependencies کا انسٹال کریں

%pip install -qU langchain-text-splitters

اب "Language" enumeration داخل کریں اور دیکھیں کہ کوڈ کو تقسیم کے لئے کون سی پروگرامنگ زبانیں معاون ہیں۔

from langchain_text_splitters import (
    Language,
    RecursiveCharacterTextSplitter,
)
[e.value for e in Language]
['cpp',
     'go',
     'java',
     'js',
     'php',
     'proto',
     'python',
     'rst',
     'ruby',
     'rust',
     'scala',
     'swift',
     'markdown',
     'latex',
     'html',
     'sol',]
RecursiveCharacterTextSplitter.get_separators_for_language(Language.PYTHON)
['\\nclass ', '\\ndef ', '\\n\\tdef ', '\\n\\n', '\\n', ' ', '']

Python

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

PYTHON_CODE = """
def hello_world():
    print("Hello, World!")

hello_world()
"""
python_splitter = RecursiveCharacterTextSplitter.from_language(
    language=Language.PYTHON, chunk_size=50, chunk_overlap=0
)
python_docs = python_splitter.create_documents([PYTHON_CODE])
python_docs
    [Document(page_content='def hello_world():\\\\n    print("Hello, World!")', metadata={}),     Document(page_content='# Call the function\\\\nhello_world()', metadata={})]

JS

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

JS_CODE = """
function helloWorld() {
  console.log("Hello, World!");
}

// Call the function
helloWorld();
"""

js_splitter = RecursiveCharacterTextSplitter.from_language(
    language=Language.JS, chunk_size=60, chunk_overlap=0
)
js_docs = js_splitter.create_documents([JS_CODE])
js_docs
[Document(page_content='function helloWorld() {\n  console.log("Hello, World!");\n}', metadata={}),
     Document(page_content='// Call the function\nhelloWorld();', metadata={})]

Markdown

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

markdown_text = """

⚡ Building applications with LLMs through composability ⚡


\`\`\`bash
pip install langchain
\`\`\`

As an open source project in a rapidly developing field, we are extremely open to contributions.
"""
md_splitter = RecursiveCharacterTextSplitter.from_language(
    language=Language.MARKDOWN, chunk_size=60, chunk_overlap=0
)
md_docs = md_splitter.create_documents([markdown_text])
md_docs
[Document(page_content='# ?️? LangChain', metadata={}),
     Document(page_content='⚡ Building applications with LLMs through composability ⚡', metadata={}),
     Document(page_content='## Quick Install', metadata={}),
     Document(page_content="```bash\n# Hopefully this code block isn't split", metadata={}),
     Document(page_content='pip install langchain', metadata={}),
     Document(page_content='```', metadata={}),
     Document(page_content='As an open source project in a rapidly developing field, we', metadata={}),
     Document(page_content='are extremely open to contributions.', metadata={})]
لیٹیکس ٹیکسٹ کی تقسیم کا مثال

latex_text = """ \documentclass{article}

\begin{document}

\maketitle

\section{Introduction} بڑے زبان ماڈلز (LLMs) وہ مشین لرننگ ماڈلز کی ایک قسم ہیں جو بہت زیادہ متنی ڈیٹا پر تربیت دی جا سکتی ہے تاکہ انسان جیسی زبان پیدا کی جا سکے۔ حال ہی میں, بڑے زبان ماڈلز نے مختلف قسم کے طبیعی زبان کی پروسیسنگ کاموں میں, زبان کا ترجمہ, متن کی تخلیق, اور جذباتی تجزیے میں نمایاں پیشرفت کی ہے۔

\subsection{LLMs کی تاریخ} پہلے LLMs 1980ء اور 1990ء میں تیار ہوئے تھے, لیکن ان کی تربیت کرنے کی دی گئی ڈیٹا اور اس وقت دستیاب کمپیوٹیشنل طاقت کے محدود ہونے کی وجہ سے وہ محدود تھے۔ لیکن پچھلے دہائی میں, ہارڈوئیر اور سافٹوئیر میں پیشرفت نے ہمیں محدود ڈیٹا پر LLMs کو تربیت دینے کا مواصل کر دیا, جس سے کام کی قدرت میں اہم بہتری آئی۔

\subsection{LLMs کی استعمالات} LLMs کا کئی صنون میں استعمال ہوتا ہے, جیسے کہ چیٹ بٹس, مواد تخلیق, اور ورچوئل اسسٹنٹس۔ ان کو علمی تحقیقات میں بھی استعمال کیا جا سکتا ہے جیسے کہ زبانیات, نفسیات, اور کمپیوٹیشنل زبانیات۔

\end{document} """



latex_splitter = RecursiveCharacterTextSplitter.from_language( language=Language.MARKDOWN, chunk_size=60, chunk_overlap=0 ) latex_docs = latex_splitter.create_documents([latex_text]) latex_docs


[Document(page_content='\documentclass{article}\n\n\x08egin{document}\n\n\maketitle', metadata={}), Document(page_content='\section{Introduction}', metadata={}), Document(page_content='بڑے زبان ماڈلز (LLMs) وہ مشین لرننگ ماڈلز کی ایک قسم', metadata={}), Document(page_content='ہیں جو بہت زیادہ متنی ڈیٹا پر تربیت دی جا سکتی ہے تاکہ', metadata={}), Document(page_content='انسان جیسی زبان پیدا کی جا سکے۔ حال ہی میں, بڑے', metadata={}), Document(page_content='زبان ماڈلز نے مختلف قسم کے طبیعی زبان کی پروسیسنگ', metadata={}), Document(page_content='کاموں میں, زبان کا ترجمہ, متن کی تخلیق, اور جذباتی', metadata={}), Document(page_content='تجزیے میں نمایاں پیشرفت کی ہے۔\subsection{History of', metadata={}), Document(page_content='LLMs}پہلے LLMs 1980ء اور 1990ء میں تیار ہوئے', metadata={}), Document(page_content='تھے, لیکن ان کی تربیت کرنے کی دی گئی ڈیٹا اور اس', metadata={}), Document(page_content='وقت دستیاب کمپیوٹیشنل طاقت کے محدود ہونے کی وجہ سے وہ', metadata={}), Document(page_content='محدود تھے۔ لیکن پچھلے دہائی میں, ہارڈوئیر اور سافٹوئیر', metadata={}), Document(page_content='میں پیشرفت نے ہمیں محدود ڈیٹا پر LLMs کو تربیت دینے کا', metadata={}), Document(page_content='مواصل کر دیا, جس سے کام کی قدرت میں اہم بہتری آئی۔\subsection{LLMs کی استعمالات}', metadata={}), Document(page_content='LLMs کا کئی صنون میں استعمال ہوتا ہے, جیسے کہ چیٹ بٹس,', metadata={}), Document(page_content='مواد تخلیق, اور ورچوئل اسسٹنٹس۔ ان کو علمی تحقیقات', metadata={}), Document(page_content='میں بھی استعمال کیا جا سکتا ہے جیسے کہ زبانیات,', metadata={}), Document(page_content='نفسیات, اور کمپیوٹیشنل زبانیات۔\end{document}', metadata={})]

## HTML


```html
html_text = """
<!DOCTYPE html>
<html>
    <head>
        <title>🌐 LangChain</title>
        <style>
            body {
                font-family: Arial, sans-serif;
            }
            h1 {
                color: darkblue;
            }
        </style>
    </head>
    <body>
        <div>
            <h1>🌐 LangChain</h1>
            <p>⚡ LLMs کے ذریعے ترکیبیت کے ساتھ اہم ایپلیکیشنز بنانا ⚡</p>
        </div>
        <div>
            رفتاری تیزی سے ترقی پذیر میدان میں ایک کھلا سورس پراجیکٹ کے طور پر ہم بڑے خلش میں مدد کے لئے بہت کھولے ہوئے ہیں۔
        </div>
    </body>
</html>
"""
html_splitter = RecursiveCharacterTextSplitter.from_language(
    language=Language.HTML, chunk_size=60, chunk_overlap=0
)
html_docs = html_splitter.create_documents([html_text])
html_docs
[Document(page_content='<!DOCTYPE html>\n<html>', metadata={}),
     Document(page_content='<head>\n        <title>🌐 LangChain</title>', metadata={}),
     Document(page_content='<style>\n            body {\n                font-family: Arial', metadata={}),
     Document(page_content=', sans-serif;\n            }\n            h1 {', metadata={}),
     Document(page_content='color: darkblue;\n            }\n        </style>\n    </head', metadata={}),
     Document(page_content='>', metadata={}),
     Document(page_content='<body>', metadata={}),
     Document(page_content='<div>\n            <h1>🌐 LangChain</h1>', metadata={}),
     Document(page_content='<p>⚡ LLMs کے ذریعے ترکیبیت کے ساتھ اہم ایپلیکیشنز بنانا ⚡', metadata={}),
     Document(page_content='</p>\n        </div>', metadata={}),
     Document(page_content='<div>\n            رفتاری تیزی سے ترقی پذیر میدان میں ایک کھلا سورس پراجیکٹ', metadata={}),
     Document(page_content='کے طور پر ہم بڑے خلش میں مدد کے لئے بہت کھولے ہوئے ہیں۔', metadata={}),
     Document(page_content='</div>\n    </body>\n</html>', metadata={})]

Solidity

SOL_CODE = """
pragma solidity ^0.8.20;
contract HelloWorld {
   function add(uint a, uint b) pure public returns(uint) {
       return a + b;
   }
}
"""

sol_splitter = RecursiveCharacterTextSplitter.from_language(
    language=Language.SOL, chunk_size=128, chunk_overlap=0
)
sol_docs = sol_splitter.create_documents([SOL_CODE])
sol_docs
[
    Document(page_content='pragma solidity ^0.8.20;', metadata={}),
    Document(page_content='contract HelloWorld {\n   function add(uint a, uint b) pure public returns(uint) {\n       return a + b;\n   }\n}', metadata={})
]