Ažurirano 25. Sep. 2025.
8 min
# pip install langchain langchain-openaifrom langchain_openai import ChatOpenAIfrom langchain_core.prompts import ChatPromptTemplate# 1) Modelllm = ChatOpenAI(model="gpt-4o-mini", temperature=0)# 2) Promptprompt = ChatPromptTemplate.from_messages( and streaming guide.---## Građevinski blokovi koje ćete koristiti 80% vremena### 1) Promptovi i parsiranje izlaza- Koristite `ChatPromptTemplate` za strukturisane promptove.- Parsirajte izlaze pomoću `StrOutputParser` ili JSON parsera za tipizovane odgovore.```pythonfrom langchain_core.output_parsers import StrOutputParserfrom langchain_core.prompts import ChatPromptTemplatefrom langchain_openai import ChatOpenAIllm = ChatOpenAI(model="gpt-4o-mini")prompt = ChatPromptTemplate.from_template("""Sažmite sledeći tekst u 3 ključne tačke:---{text}""")parser = StrOutputParserchain = prompt | llm | parsersummary = chain.invoke({"text": "LangChain pomaže u pravljenju LLM aplikacija sa RAG i alatima."})print(summary)# pip install faiss-cpu tiktokenfrom langchain_openai import OpenAIEmbeddings, ChatOpenAIfrom langchain_community.vectorstores import FAISSfrom langchain_text_splitters import RecursiveCharacterTextSplitterfrom langchain_core.prompts import ChatPromptTemplate# Priprema dokumenatatexts = .---## Od prototipa do produkcije: korak-po-korak plan### Korak 1: Definišite korisničku priču- Ko je korisnik? Koji posao želi da obavi?- Primer: "Agent podrške koji odgovara na pitanja o proizvodu iz internih dokumenata i nedavnih tiketa."### Korak 2: Izaberite minimalni mogući stek- Model: Izaberite pristupačan i pouzdan model (npr. GPT-4o-mini ili neki open model iz frontijera).- Podaci: Odlučite da li vam je sada potreban RAG. Ako jeste, počnite sa FAISS lokalno.- Ulaz/izlaz: Koristite LCEL za brzu iteraciju; izbegavajte prilagođene glue kodove.### Korak 3: Implementirajte čist RAG ciklus- Ispravno podelite dokumente.- Indeksirajte ugradnje.- Koristite prompt sa kontekstom i citatima.- Dodajte zaštitu da izbegnete halucinacije kada nema relevantnog konteksta.```pythonfrom langchain_core.output_parsers import StrOutputParserfrom langchain_core.prompts import ChatPromptTemplateqa_prompt = ChatPromptTemplate.from_template("""Odgovorite na pitanje koristeći SAMO DONJI KONTEKST. Ako odgovor nijeu kontekstu, recite "Ne znam." Uključite citate ID-ova dokumenata.KONTEKST:{context}PITANJE: {question}""")parser = StrOutputParserrag_chain = (RunnableParallel(context=retriever, question=RunnableLambda(lambda x: x.### Korak 5: Tipizirani izlazi i validacija- Koristite `PydanticOutputParser` ili JSON šeme za osiguranje strukture API odgovora.- Validirajte polja kako biste otkrili promene u modelu.### Korak 6: Alati i pozivanje funkcija za realne zadatke- Uvodite alate štedljivo.- Uobičajeni alati: kalkulator, web pretraga, izvršavanje SQL upita, pokretanje koda.- Jasno opišite mogućnosti alata u docstringovima.### Korak 7: Ojačavanje- Ograničenja brzine i strategije ponovnih pokušaja.- Timeout-i i prekidači kola.- Filteri bezbednosti i provere sadržaja.### Korak 8: Evaluacija i kontinuirano poboljšanje- Testirajte sa zlatnim skupovima podataka (ulaz → očekivani izlaz).- Procena verodostojnosti, potpunosti odgovora i tačnosti citata.- Merite stopu uspeha pretraživanja i latenciju.---## Uobičajeni obrasci i zamke- Počnite jednostavno: prvo lanci, pa agenti. Tako dobijate predvidivost i niže troškove.- Podela na delove je važna: podešavanje veličine i preklapanja delova može promeniti kvalitet pretraživanja više nego zamena modela.- Propuštanje prompta: Nemojte pretrpavati sistemske promtove; držite ih fokusiranim.- Determinizam: Za evaluaciju i kritične tokove rada koristite `temperature=0`.- Streaming korisničko iskustvo: Streamujte tokene u UI dok ostatak sistema preuzima resurse ili predmemorira kontekst.- Strukturisani izlazi: Koristite parsere kako bi integracija u sledeće korake bila bezbolna.---## Celokupan mini projekat: Pitanja i odgovori sa citatima iz dokumenataOvaj primer povezuje sve segmente: unos, RAG, generisanje odgovora i streaming.```python# pip install langchain langchain-openai faiss-cpu tiktokenfrom langchain_openai import ChatOpenAI, OpenAIEmbeddingsfrom langchain_text_splitters import RecursiveCharacterTextSplitterfrom langchain_community.vectorstores import FAISSfrom langchain_core.prompts import ChatPromptTemplatefrom langchain_core.output_parsers import StrOutputParserfrom langchain_core.runnables import RunnableParallel, RunnableLambda# 1) Unoscorpus = {"pricing": "Naš Pro plan podržava 1M tokena konteksta i uključuje prioritetnu podršku.","limits": "Ograničenje API poziva je 60 zahteva u minuti za Pro korisnike.","security": "Čuvamo logove 30 dana osim ako administrator ne onemogući logovanje.",}splitter = RecursiveCharacterTextSplitter(chunk_size=300, chunk_overlap=50)all_chunks, ids = [], []for doc_id, text in corpus.items(): for i, chunk in enumerate(splitter.split_text(text)): all_chunks.append(chunk) ids.append(f"{doc_id}-{i}")# 2) Indeksdb = FAISS.from_texts(all_chunks, OpenAIEmbeddings())retriever = db.as_retriever(k=4)# 3) Promptprompt = ChatPromptTemplate.from_template("""Vi ste asistent za podršku. Koristite KONTEKST za odgovor.Ako niste sigurni, recite "Ne znam." Uključite izvore sa citatima ID-ova.KONTEKST:{context}PITANJE: {question}""")# 4) Model i parserllm = ChatOpenAI(model="gpt-4o-mini", temperature=0)parser = StrOutputParser()# 5) Napravite lanacrag = (RunnableParallel( context=retriever, question=RunnableLambda(lambda x: x["question"]) # prosljeđivanje pitanja)| prompt| llm| parser)# 6) Postavite pitanjefor chunk in rag.stream({"question": "Koja su Pro ograničenja brzine i koliko dugo se čuvaju logovi?"}): print(chunk, end="", flush=True)batch na Runnables radi veće propusnosti.prompt | llm lanca i testirajte sa .invoke ili .stream. Zvanični tutorijali korak po korak pokrivaju jednostavan chat, RAG i agente za brz početak.Runnable lanci podržavaju .stream za sinhroni i .astream za asinhroni rad kojim vraćaju delove po dolasku. Streaming vodič objašnjava upotrebu i najbolje prakse.
Kako savladati ChatPDF: Brže do uvida iz složenih dokumenata

Najbolja alternativa za X Auto-Translation za brze i precizne dokumente

Samsung AI Prevod Nije Dostupan u Iranu? Praktična Rešenja

Alati za prevođenje na persijski: praktičan vodič za brži i tačniji rad

Najbolja Grok alternativa za dubinsko, citirano istraživanje

Top 15 Funkcija AI Generatora Slika Koje Ćete Zaista Koristiti