0Pricing
Learn AI with Python · บทเรียน

สถาปัตยกรรม LangChain และ LCEL

องค์ประกอบของ LangChain ไวยากรณ์ไปป์ด้วย LCEL โซ่ ส่วนติดต่อแบบรันได้ และโซ่ที่ส่งข้อมูลแบบต่อเนื่อง

สถาปัตยกรรม LangChain และ LCEL เป็นบทเรียน Learn AI with Python ฟรีบน CoddyKit นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Learn AI with Python และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Learn AI with Python มีบทเรียนทั้งหมด 4 บทเรียน

LangChain คืออะไร

LangChain คือเฟรมเวิร์กสำหรับสร้างแอปพลิเคชัน LLM โดยประกอบชิ้นส่วนที่นำกลับมาใช้ได้ เช่น พรอมป์ โมเดล ตัวแยกวิเคราะห์ ตัวดึงข้อมูล และหน่วยความจำ แทนที่จะเชื่อมต่อการเรียกใช้ API ด้วยตนเอง คุณจะสร้าง เชน ที่ส่งข้อมูลจากองค์ประกอบหนึ่งไปยังองค์ประกอบถัดไป

pip install langchain langchain-openai

องค์ประกอบหลัก

มีองค์ประกอบสามอย่างปรากฏอยู่ในเชนเกือบทุกแบบ ได้แก่ PromptTemplate (จัดรูปแบบข้อมูลป้อนเข้าให้เป็นพรอมป์) โมเดลสนทนา (LLM) และ ตัวแยกวิเคราะห์ผลลัพธ์ (ทำความสะอาดผลลัพธ์) LangChain เชื่อมองค์ประกอบเหล่านี้เข้าด้วยกันเป็นกระบวนการประมวลผล

from langchain_openai import ChatOpenAI
from langchain_core.prompts import ChatPromptTemplate
from langchain_core.output_parsers import StrOutputParser

การสร้างแม่แบบพรอมป์

แม่แบบพรอมป์จะเก็บตัวยึดตำแหน่งซึ่งเติมค่าขณะทำงาน ใช้ไวยากรณ์ {variable} เมื่อคุณเรียกใช้เชนด้วยพจนานุกรม คีย์เหล่านั้นจะถูกแทนค่าลงไป

prompt = ChatPromptTemplate.from_template(
    "Explain {topic} to a {audience} in two sentences."
)

LCEL: ไวยากรณ์แบบท่อ

LCEL (ภาษานิพจน์ของ LangChain) ประกอบองค์ประกอบต่าง ๆ ด้วยตัวดำเนินการท่อ | ผลลัพธ์ของแต่ละขั้นตอนจะไหลเข้าสู่ขั้นตอนถัดไป โดยอ่านจากซ้ายไปขวาเหมือนกระบวนการประมวลผลของยูนิกซ์

model = ChatOpenAI(model="gpt-4o")

chain = prompt | model | StrOutputParser()

เหตุใดจึงต้องใช้ StrOutputParser

โมเดลสนทนาจะส่งคืนออบเจ็กต์ข้อความ ไม่ใช่สตริงธรรมดา StrOutputParser() จะแยกข้อความ .content ออกมา ทำให้เชนส่งคืนสตริงที่สะอาด หากไม่ใช้ตัวนี้ คุณจะได้รับข้อความที่มีโครงสร้างกลับมา

การเรียกใช้เชน

เรียกใช้เชนด้วย chain.invoke() โดยส่งพจนานุกรมที่เติมค่าตัวแปรในแม่แบบ ผลลัพธ์คือสตริงที่ผ่านการแยกวิเคราะห์แล้ว

result = chain.invoke({"topic": "vectors", "audience": "beginner"})
print(result)

การสตรีมเชน

หากต้องการผลลัพธ์แบบเรียลไทม์ ให้เรียกใช้ chain.stream() แทน invoke เมธอดนี้จะส่งคืนตัวสร้างผลลัพธ์ที่ทยอยส่งส่วนย่อยของผลลัพธ์ออกมาตามที่โมเดลสร้างขึ้น เช่นเดียวกับการสตรีมจาก API โดยตรง

for chunk in chain.stream({"topic": "RAG", "audience": "engineer"}):
    print(chunk, end="", flush=True)

การประมวลผลข้อมูลป้อนเข้าหลายรายการเป็นชุด

ประมวลผลข้อมูลป้อนเข้าจำนวนมากอย่างมีประสิทธิภาพด้วย chain.batch() ส่งรายการพจนานุกรมข้อมูลป้อนเข้า แล้ว LangChain จะเรียกใช้พร้อมกันและส่งคืนรายการผลลัพธ์ตามลำดับเดิม

inputs = [
    {"topic": "loops", "audience": "kid"},
    {"topic": "recursion", "audience": "kid"}
]
results = chain.batch(inputs)

RunnablePassthrough

RunnablePassthrough จะส่งต่อข้อมูลป้อนเข้าโดยไม่เปลี่ยนแปลง สิ่งนี้จำเป็นเมื่อเชนต้องเก็บข้อมูลป้อนเข้าต้นฉบับไว้พร้อมกับค่าที่ผ่านการแปลงแล้ว ซึ่งพบได้บ่อยใน RAG ที่ต้องส่งทั้งคำถามและบริบทที่ดึงมา

from langchain_core.runnables import RunnablePassthrough

chain = (
    {"context": retriever, "question": RunnablePassthrough()}
    | prompt | model | StrOutputParser()
)

การประกอบด้วยพจนานุกรม

เมื่อขั้นตอนหนึ่งเป็นพจนานุกรม ค่าทุกค่าจะทำงานแบบขนานกัน และผลลัพธ์จะรวมกันเป็นข้อมูลป้อนเข้าสำหรับขั้นตอนถัดไป วิธีนี้ใช้สร้างพรอมป์ที่รับข้อมูลป้อนเข้าหลายรายการสำหรับกระบวนการดึงข้อมูล โดยจับคู่แต่ละคีย์กับสิ่งที่เรียกใช้ได้หรือการส่งต่อข้อมูลเดิม

parallel = {
    "context": retriever,
    "question": RunnablePassthrough()
}
# parallel feeds {"context": ..., "question": ...} downstream

เหตุผลที่ LCEL สำคัญ

เชนของ LCEL มี การสตรีม การประมวลผลเป็นชุด และการทำงานแบบอะซิงโครนัส ให้โดยอัตโนมัติ อ่านเข้าใจง่าย และนำมาต่อกันได้เหมือนตัวต่อเลโก้ ไวยากรณ์แบบท่อเดียวกันนี้ขยายได้ตั้งแต่พรอมป์บรรทัดเดียวไปจนถึงระบบ RAG แบบเต็มรูปแบบ

ตรวจสอบความเข้าใจ

ทดสอบความเข้าใจเกี่ยวกับ LCEL ของคุณ

ทบทวน: สถาปัตยกรรมและ LCEL

คุณประกอบองค์ประกอบของ LangChain ด้วย ตัวดำเนินการท่อ: prompt | model | StrOutputParser() คุณเรียกใช้เชนด้วย invoke สตรีมผลลัพธ์ด้วย stream และประมวลผลข้อมูลป้อนเข้าจำนวนมากด้วย batch การใช้ RunnablePassthrough และการประกอบพจนานุกรมช่วยให้คุณสร้างกระบวนการประมวลผลหลายข้อมูลป้อนเข้าสำหรับ RAG ได้

คำถามที่พบบ่อย

บทเรียน “สถาปัตยกรรม LangChain และ LCEL” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “สถาปัตยกรรม LangChain และ LCEL” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Learn AI with Python ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Learn AI with Python มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “สถาปัตยกรรม LangChain และ LCEL”

องค์ประกอบของ LangChain ไวยากรณ์ไปป์ด้วย LCEL โซ่ ส่วนติดต่อแบบรันได้ และโซ่ที่ส่งข้อมูลแบบต่อเนื่อง คุณปฏิบัติ Learn AI with Python ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Learn AI with Python หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน Learn AI with Python บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 1 จากทั้งหมด 4 บทเรียน

บทเรียน “สถาปัตยกรรม LangChain และ LCEL” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน Learn AI with Python นี้ได้ไหม

ได้ บทเรียน Learn AI with Python ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. สถาปัตยกรรม LangChain และ LCEL
  2. การโหลด แบ่ง และสร้างเวกเตอร์ฝังสำหรับเอกสาร
  3. คลังเวกเตอร์: Chroma และ FAISS
  4. การสร้างระบบถาม–ตอบ RAG ตั้งแต่ต้นจนจบ
← กลับไปที่ Learn AI with Python