Frissítve: 2025. szept 25.
8 perc
# pip install langchain langchain-openaifrom langchain_openai import ChatOpenAIfrom langchain_core.prompts import ChatPromptTemplate# 1) Modellllm = ChatOpenAI(model="gpt-4o-mini", temperature=0)# 2) Promptprompt = ChatPromptTemplate.from_messages( and streaming guide.---## Építőkövek, amiket 80%-ban használsz### 1) Promptok és Kimenet Feldolgozás- Használd a `ChatPromptTemplate`-et strukturált promptokhoz.- A kimeneteket parserekkel, például `StrOutputParser` vagy JSON parsert használj típusos válaszokhoz.```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("""Foglalja össze a következő szöveget 3 pontban:---{text}""")parser = StrOutputParserchain = prompt | llm | parsersummary = chain.invoke({"text": "A LangChain segít LLM alkalmazások építésében RAG-gal és eszközökkel."})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# Dokumentumok előkészítésetexts = .---## Prototípustól a gyártásig: lépésről-lépésre terv### 1. lépés: Határozd meg a felhasználói sztorit- Ki a felhasználó? Milyen feladatot akar elvégezni?- Példa: „Egy ügyfélszolgálati ügynök, aki termékkérdéseket válaszol meg belső dokumentumok és friss jegyek alapján.”### 2. lépés: Válaszd ki a minimális működőképességű stack-et- Modell: Válassz megfizethető, megbízható modellt (pl. GPT-4o-mini vagy egy frontier nyílt modellt).- Adatok: Döntsd el, kell-e most RAG. Ha igen, kezdd lokálisan FAISS-szal.- Bemenet/kimenet: Használj LCEL-t gyors iterációhoz; kerüld a saját ragasztó kódot.### 3. lépés: Valósíts meg egy tiszta RAG ciklust- Oszd fel megfelelően a dokumentumokat.- Indexeld a beágyazásokat.- Használj promptot kontextussal és hivatkozásokkal.- Adj be korlátokat a hallucináció elkerüléséhez, ha nincs releváns kontextus.```pythonfrom langchain_core.output_parsers import StrOutputParserfrom langchain_core.prompts import ChatPromptTemplateqa_prompt = ChatPromptTemplate.from_template("""Válaszolj a kérdésre KIZÁRÓLAG az alábbi KONTEXTUS alapján. Ha a válasz nemtalálható a kontextusban, mondd azt, hogy "Nem tudom." Tüntesd fel a hivatkozott dokumentum ID-kat.KONTEXTUS:{context}KÉRDÉS: {question}""")parser = StrOutputParserrag_chain = (RunnableParallel(context=retriever, question=RunnableLambda(lambda x: x.### 5. lépés: Típusos kimenetek és validálás- Használj `PydanticOutputParser`-t vagy JSON séma alapú validálást az API válaszok struktúrájának biztosításához.- Ellenőrizd a mezőket a modell eltérésének felismeréséhez.### 6. lépés: Eszközök és függvényhívás valós feladatokhoz- Eszközöket csak mértékkel adj hozzá.- Gyakori eszközök: számológép, web kereső, SQL lekérdező, kód futtató.- Világosan dokumentáld az eszközök képességeit docstringekben.### 7. lépés: Megerősítés- Korlátozd a hívásokat és alkalmazz újrapróbálkozási stratégiákat.- Időkorlátok és kikapcsolók (circuit breakers).- Biztonsági szűrők és tartalom ellenőrzések.### 8. lépés: Értékelés és folyamatos fejlesztés- Tesztelj arany készletekkel (bemenet → elvárt kimenet).- Értékeld a válasz hűségét, teljességét és a hivatkozások pontosságát.- Mérd a lekérdezés találati arányát és késleltetését.---## Gyakori minták és buktatók- Kezdd egyszerűen: láncok az ügynökök előtt. Így kiszámíthatóbb és olcsóbb lesz a fejlesztés.- Chunkolás fontos: a chunk mérete és átfedése nagyobb hatással lehet a RAG minőségére, mint a modell cseréje.- Prompt szivárgás: Ne zsúfold tele a rendszer promptokat mindenféle kéréssel, tartsd fókuszáltan.- Determinizmus: Értékeléshez és kritikus munkafolyamatokhoz állítsd a `temperature=0`-ra.- Streaming UX: A tokeneket streameld a felhasználói felületre, miközben a rendszer a háttérben előkészíti a kontextust vagy adatokat.- Strukturált kimenetek: Használj parsereket, hogy az integráció gördülékeny legyen.---## Egy Teljes Mini Projekt: Dokumentáció kérdések és válaszok hivatkozásokkalEz a példa összeköti a teljes folyamatot: bevitel, RAG, válaszgenerálás és 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) Beviteli lépéscorpus = {"pricing": "A Pro csomagunk 1 millió kontextus tokent támogat és elsőbbségi támogatást kínál.","limits": "Az API híváskorlát Pro felhasználóknak percenként 60 kérést engedélyez.","security": "A naplókat 30 napig tároljuk, hacsak az admin nem tiltja le a naplózást.",}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) Indexelésdb = FAISS.from_texts(all_chunks, OpenAIEmbeddings)retriever = db.as_retriever(k=4)# 3) Promptprompt = ChatPromptTemplate.from_template("""Ön egy támogatási asszisztens. Használja a KONTEXTUST a válaszadáshoz.Ha bizonytalan, mondja azt, hogy "Nem tudom." Tartalmazza az eredeti forrás ID-kat.KONTEXTUS:{context}KÉRDÉS: {question}""")# 4) Modell és parserllm = ChatOpenAI(model="gpt-4o-mini", temperature=0)parser = StrOutputParser# 5) Láncolás összeállításarag = ( RunnableParallel( context=retriever, question=RunnableLambda(lambda x: x["question"]) # pass-through ) | prompt | llm | parser)# 6) Kérdés feltevésefor chunk in rag.stream({"question": "Mik a Pro felhasználói API híváskorlátok és a naplómegőrzési idő?"}): print(chunk, end="", flush=True)batch segítségével a Runnables-on a teljesítmény növeléséhez.prompt | llm lánc összeállítására, és teszteld az .invoke vagy .stream metódusokkal. A hivatalos oktatóanyagok végigvezetnek egyszerű chat, RAG és ügynök lépéseken a gyors induláshoz.Runnable lánc támogatja az .stream (szinkron) és .astream (aszinkron) metódusokat, hogy apró részekben adja át a választ. A streaming útmutatóban találod a használati útmutatót és legjobb gyakorlatokat.
Hogyan sajátítsuk el a ChatPDF használatát: Gyorsabb betekintés sűrű dokumentumokból

A legjobb X automatikus fordítási alternatíva gyors és pontos dokumentumokhoz

Samsung AI fordítás nem elérhető Iránban? Gyakorlati megoldások

Perzsa fordító eszközök: gyakorlati útmutató a gyorsabb, pontosabb munkához

A legjobb Grok alternatíva mély, hivatkozott kutatáshoz

A 15 legfontosabb funkció, amit egy AI kép generátorban ténylegesen használni fogsz