Architektura LangChain i LCEL
Komponenty LangChain, składnia potoków LCEL, łańcuchy, interfejsy runnable, łańcuchy z przesyłaniem strumieniowym.
Architektura LangChain i LCEL to bezpłatna lekcja Learn AI with Python na CoddyKit. To lekcja 1 z 4. Możesz przeczytać całą lekcję poniżej za darmo — a potem ćwiczyć ją interaktywnie w przeglądarce z wbudowanym edytorem kodu i tutorem AI dostępnym 24/7. To część ścieżki edukacyjnej Learn AI with Python, a Twój postęp synchronizuje się między webem a aplikacją CoddyKit. Kurs Learn AI with Python zawiera 4 lekcji w sumie.
Czym jest LangChain?
LangChain to framework do tworzenia aplikacji wykorzystujących LLM przez komponowanie wielokrotnego użytku elementów: promptów, modeli, parserów, retrieverów i pamięci. Zamiast ręcznie łączyć wywołania API, tworzą Państwo łańcuchy, które przekazują dane z jednego komponentu do następnego.
pip install langchain langchain-openaiPodstawowe elementy składowe
W niemal każdym łańcuchu występują trzy komponenty: PromptTemplate (formatuje dane wejściowe w prompt), model czatu (LLM) oraz parser wyjścia (porządkuje wynik). LangChain łączy je w potok.
from langchain_openai import ChatOpenAI
from langchain_core.prompts import ChatPromptTemplate
from langchain_core.output_parsers import StrOutputParserTworzenie szablonu promptu
Szablon promptu zawiera symbole zastępcze, które są uzupełniane w czasie działania programu. Należy używać składni {variable}. Podczas wywoływania łańcucha ze słownikiem klucze tego słownika są podstawiane w odpowiednie miejsca.
prompt = ChatPromptTemplate.from_template(
"Explain {topic} to a {audience} in two sentences."
)LCEL: składnia potoku
LCEL (LangChain Expression Language) służy do komponowania komponentów za pomocą operatora potoku |. Wynik każdego kroku jest przekazywany do następnego. Całość czyta się od lewej do prawej, podobnie jak potok Unix.
model = ChatOpenAI(model="gpt-4o")
chain = prompt | model | StrOutputParser()Dlaczego StrOutputParser?
Model czatu zwraca obiekt wiadomości, a nie zwykły ciąg znaków. StrOutputParser() wyodrębnia tekst .content, dzięki czemu łańcuch zwraca czysty ciąg znaków. Bez tego otrzymaliby Państwo ustrukturyzowany obiekt wiadomości.
Wywoływanie łańcucha
Łańcuch uruchamia się za pomocą chain.invoke(), przekazując słownik uzupełniający zmienne szablonu. Wynikiem jest sparsowany ciąg znaków.
result = chain.invoke({"topic": "vectors", "audience": "beginner"})
print(result)Strumieniowanie łańcucha
Aby otrzymywać dane w czasie rzeczywistym, należy wywołać chain.stream() zamiast invoke. Zwraca ono generator, który udostępnia fragmenty wyniku w miarę ich generowania przez model, podobnie jak strumieniowanie z surowego API.
for chunk in chain.stream({"topic": "RAG", "audience": "engineer"}):
print(chunk, end="", flush=True)Przetwarzanie wielu danych wejściowych
Wiele danych wejściowych można przetwarzać wydajnie za pomocą chain.batch(). Należy przekazać listę słowników wejściowych, a LangChain uruchomi je współbieżnie i zwróci listę wyników w tej samej kolejności.
inputs = [
{"topic": "loops", "audience": "kid"},
{"topic": "recursion", "audience": "kid"}
]
results = chain.batch(inputs)RunnablePassthrough
RunnablePassthrough przekazuje dane wejściowe bez zmian. Jest niezbędny, gdy łańcuch musi zachować oryginalne dane wejściowe obok przekształconej wartości. Jest to częste w systemach RAG, w których przekazują Państwo zarówno pytanie, jak i pobrany kontekst.
from langchain_core.runnables import RunnablePassthrough
chain = (
{"context": retriever, "question": RunnablePassthrough()}
| prompt | model | StrOutputParser()
)Komponowanie za pomocą słowników
Gdy krok jest słownikiem, każda wartość jest przetwarzana równolegle, a wyniki tworzą dane wejściowe dla następnego kroku. W ten sposób powstają prompty z wieloma danymi wejściowymi, które napędzają potoki wyszukiwania: każdy klucz jest mapowany na element wykonywalny lub przekazanie bez zmian.
parallel = {
"context": retriever,
"question": RunnablePassthrough()
}
# parallel feeds {"context": ..., "question": ...} downstreamDlaczego LCEL ma znaczenie
Łańcuchy LCEL zapewniają bez dodatkowej pracy strumieniowanie, przetwarzanie wsadowe i operacje asynchroniczne, są łatwe do odczytania i można je łączyć jak klocki Lego. Ta sama składnia potoku skaluje się od jednolinijkowego promptu po kompletny system RAG.
Szybki test
Sprawdźcie Państwo swoją znajomość LCEL.
Podsumowanie: architektura i LCEL
Połączyli Państwo komponenty LangChain za pomocą operatora potoku: prompt | model | StrOutputParser(). Uruchamiali Państwo łańcuchy za pomocą invoke, strumieniowali wyniki za pomocą stream i przetwarzali wiele danych wejściowych za pomocą batch. RunnablePassthrough oraz komponowanie słowników pozwalają budować potoki z wieloma danymi wejściowymi na potrzeby RAG.
Często zadawane pytania
Czy lekcja „Architektura LangChain i LCEL” jest bezpłatna?
Tak — pełny tekst „Architektura LangChain i LCEL” jest dostępny za darmo tutaj w sieci. Aby ćwiczyć ją interaktywnie (wbudowany edytor kodu i tutor AI dostępny 24/7) i odblokować resztę kursu Learn AI with Python, przejdź na CoddyKit PRO. Kurs Learn AI with Python zawiera 4 lekcji w sumie.
Co nauczysz się w „Architektura LangChain i LCEL”?
Komponenty LangChain, składnia potoków LCEL, łańcuchy, interfejsy runnable, łańcuchy z przesyłaniem strumieniowym. Ćwiczysz Learn AI with Python z praktycznym kodem, który uruchamiasz bezpośrednio w przeglądarce, a tutor AI dostępny 24/7 odpowiada na Twoje pytania podczas pracy nad lekcją.
Czy potrzebuję doświadczenia, aby zacząć Learn AI with Python?
Nie wymagamy żadnego doświadczenia. Learn AI with Python w CoddyKit jest strukturyzowany dla początkujących i zaawansowanych użytkowników, więc możesz zacząć tutaj lub od początku i uczyć się w swoim tempie. To lekcja 1 z 4.
Ile czasu zajmuje lekcja „Architektura LangChain i LCEL”?
Większość lekcji CoddyKit trwa około 5–10 minut. Każda lekcja to mały, interaktywny krok, dzięki czemu robisz systematyczne postępy i zawsze wracasz dokładnie do tego samego miejsca — na webie i w aplikacji.
Czy mogę pisać i uruchamiać kod w tej lekcji Learn AI with Python?
Tak. Każda lekcja Learn AI with Python zawiera wbudowany edytor kodu, więc piszesz i uruchamiasz prawdziwy kod bezpośrednio w przeglądarce i od razu otrzymujesz sprzężenie zwrotne od AI — bez konfiguracji na komputerze.
Wszystkie lekcje w tym kursie
- Architektura LangChain i LCEL
- Wczytywanie, dzielenie i osadzanie dokumentów
- Bazy wektorowe: Chroma i FAISS
- Tworzenie systemu pytań i odpowiedzi RAG od początku do końca