कोड विभाजन
इस अध्याय में LangChain का कोड पाठ विभाजक पेश किया गया है। यदि आपको कोड को कोड स्निपेट में विभाजित करना हो, तो आपको इस अध्याय की सामग्री को ध्यान से पढ़ना चाहिए। CodeTextSplitter ने कई प्रोग्रामिंग भाषाओं के लिए कोड विभाजन का समर्थन किया है।
आवश्यकताओं की डाला बांटें
%pip install -qU langchain-text-splitters
अगले, "Language" अनुक्रमणिका को आयात करें और देखें कि कोड विभाजन के लिए कौन-कौन सी प्रोग्रामिंग भाषाएं समर्थित हैं।
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
यहां एक उदाहरण है कि PythonTextSplitter का उपयोग कैसे कोड को विभाजित करने के लिए किया जाता है।
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 = """
⚡ लैंगचेन के माध्यम से एलएलएम्स के साथ एप्लिकेशन बनाना ⚡
\`\`\`bash
pip install langchain
\`\`\`
एक तेजी से विकसित क्षेत्र में एक ओपन सोर्स परियोजना के रूप में, हम सहयोगों के लिए बहुत खुले हैं।
"""
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) एक प्रकार के मशीन लर्निंग मॉडल है जिसे व्यापक मात्रा में पाठ संकलित डेटा पर प्रशिक्षित किया जा सकता है ताकि मानव जैसी भाषा उत्पन्न की जा सके। हाल के वर्षों में, LLMs ने भाषा अनुवाद, पाठ उत्पन्न करना, और भावना विश्लेषण जैसे विभिन्न प्राकृतिक भाषा प्रसंस्करण कार्यों में काफी अग्रसर होते देखे गए हैं।
\subsection{LLMs का इतिहास} सबसे पहले LLMs को 1980 और 1990 के दशक में विकसित किया गया था, लेकिन उस समय उपलब्ध डेटा की मात्रा और कम्प्यूटेशनल पावर की सीमा के कारण उनकी सीमित थी। हाल के दशक में, हालात ने हार्डवेयर और सॉफ्टवेयर में प्रगति कराई है, जिससे LLMs को विशाल डेटासेट पर प्रशिक्षण देना संभव हो गया है, जिससे प्रदर्शन में महत्वपूर्ण सुधार हुए हैं।
\subsection{LLMs के अनुप्रयोग} LLMs के कई उदाहरण हैं, जैसे चैटबॉट्स, सामग्री निर्माण, और वर्चुअल सहायक। इन्हें शिक्षा क्षेत्र में भाषाविज्ञान, मानोविज्ञान, और संगणकीय भाषाविज्ञान में शोध के लिए भी प्रयोग किया जा सकता है।
\end{document} """
## 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='</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={})
]