Atnaujinta 2025 m. rugsėjo 25 d.
8 min
# pip install langchain langchain-openaifrom langchain_openai import ChatOpenAIfrom langchain_core.prompts import ChatPromptTemplate# 1) Modelisllm = ChatOpenAI(model="gpt-4o-mini", temperature=0)# 2) Ragavimasprompt = ChatPromptTemplate.from_messages( ir srautinio perdavimo vadovą.---## Statybiniai blokai, kuriuos naudosite 80% laiko### 1) Ragavimai ir išvesties analizavimas- Naudokite `ChatPromptTemplate` struktūrizuotiems ragavimams.- Analizuokite išvestis su `StrOutputParser` arba JSON analizatoriais, kad gautumėte tipizuotus atsakymus.```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("""Apibendrinkite šį tekstą 3 punktais:---{text}""")parser = StrOutputParserchain = prompt | llm | parsersummary = chain.invoke({"text": "LangChain padeda kurti LLM programas su RAG ir įrankiais."})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# Paruoškite dokumentustexts = .---## Nuo prototipo iki gamybos: žingsnis po žingsnio planas### 1 žingsnis: apibrėžkite vartotojo istoriją- Kas yra vartotojas? Kokį darbą jis bando atlikti?- Pavyzdys: „Pagalbos agentas, kuris atsako į produktų klausimus iš vidaus dokumentų ir naujausių bilietų.“### 2 žingsnis: pasirinkite minimalų perspektyvų rinkinį- Modelis: pasirinkite prieinamą, patikimą modelį (pvz., GPT-4o-mini arba atvirą ribinį modelį).- Duomenys: nuspręskite, ar jums dabar reikia RAG. Jei taip, pradėkite nuo FAISS vietoje.- I/O: naudokite LCEL greitai iteracijai; venkite pasirinktinio klijavimo kodo.### 3 žingsnis: įdiekite švarų RAG ciklą- Tinkamai padalinkite dokumentus.- Indeksuokite įterpimus.- Ragaukite su kontekstu ir citatomis.- Pridėkite apsaugą, kad išvengtumėte haliucinacijų, kai nerandama jokio atitinkamo konteksto.```pythonfrom langchain_core.output_parsers import StrOutputParserfrom langchain_core.prompts import ChatPromptTemplateqa_prompt = ChatPromptTemplate.from_template("""Atsakykite į klausimą naudodami TIK žemiau esantį KONTEKSTĄ. Jei atsakymo nėrakontekste, pasakykite „Aš nežinau.“ Įtraukite cituojamus dokumentų ID.KONTEKSTAS:{context}KLAUSIMAS: {question}""")parser = StrOutputParserrag_chain = (RunnableParallel(context=retriever, question=RunnableLambda(lambda x: x.### 5 žingsnis: tipizuotos išvestys ir patvirtinimas- Naudokite `PydanticOutputParser` arba JSON schemą, kad priverstumėte struktūrą API atsakymams.- Patvirtinkite laukus, kad sugautumėte modelio dreifą.### 6 žingsnis: įrankiai ir funkcijų iškvietimas realioms užduotims- Įrankius įveskite saikingai.- Įprasti įrankiai: skaičiuotuvas, paieška internete, SQL užklausų vykdytojas, kodo vykdymo įrankis.- Aiškiai aprašykite įrankio galimybes dokumentacijos eilutėse.### 7 žingsnis: stiprinimas- Tarifų apribojimas ir pakartotinio bandymo strategijos.- Laiko apribojimai ir grandinės pertraukikliai.- Saugos filtrai ir turinio patikrinimai.### 8 žingsnis: įvertinimas ir nuolatinis tobulinimas- Išbandykite su auksiniais duomenų rinkiniais (įvestis → tikėtina išvestis).- Įvertinkite patikimumą, atsakymo išsamumą ir citavimo tikslumą.- Išmatuokite paieškos pataikymo dažnį ir delsą.---## Dažni modeliai ir klaidos- Pradėkite paprastai: grandinės prieš agentus. Jūs gausite nuspėjamumą ir mažesnę kainą.- Dalijimas į dalis yra svarbus: derinant dalies dydį/sutapimą, paieškos kokybė gali pasikeisti labiau nei pakeitus modelį.- Ragavimo nutekėjimas: nekiškite visko į sistemos raginimus; laikykite juos sutelktus.- Determinizmas: nustatykite `temperature=0` įvertinimui ir svarbioms darbo eigoms.- Srautinio perdavimo UX: srautu perduokite žetonus į UI, kol likusi sistema paima išteklius arba iš anksto įkelia kontekstą.- Struktūrizuotos išvestys: naudokite analizatorius, kad integracija žemyn būtų neskausminga.---## Pilnas mini projektas: dokumentų klausimai ir atsakymai su citatomisŠis pavyzdys apjungia viską: įvedimą, RAG, atsakymų generavimą ir srautinį perdavimą.```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) Įveskitecorpus = {"pricing": "Mūsų Pro planas palaiko 1M konteksto žetonų ir apima prioritetinį palaikymą.","limits": "API tarifo apribojimas yra 60 užklausų per minutę Pro vartotojams.","security": "Mes saugome žurnalus 30 dienų, nebent administratorius išjungia registravimą.",}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) Indeksasdb = FAISS.from_texts(all_chunks, OpenAIEmbeddings)retriever = db.as_retriever(k=4)# 3) Ragavimasprompt = ChatPromptTemplate.from_template("""Jūs esate pagalbos asistentas. Naudokite KONTEKSTĄ, kad atsakytumėte.Jei nesate tikri, pasakykite „Aš nežinau.“ Įtraukite šaltinio ID citatas.KONTEKSTAS:{context}KLAUSIMAS: {question}""")# 4) Modelis ir analizatoriusllm = ChatOpenAI(model="gpt-4o-mini", temperature=0)parser = StrOutputParser# 5) Sudėkite grandinęrag = (RunnableParallel(context=retriever,question=RunnableLambda(lambda x: x["question"]) # perduoti)| prompt| llm| parser)# 6) Užduokite klausimąfor chunk in rag.stream({"question": "Kokie yra Pro tarifų apribojimai ir žurnalų saugojimas?"}):print(chunk, end="", flush=True)batch ant "Runnables" pralaidumui.prompt | llm grandinę ir išbandykite su .invoke arba .stream. Oficialios mokymo programos žingsnis po žingsnio aprašo paprastus pokalbius, RAG ir agentus, kad greitai pradėtumėte.Runnable grandinės palaiko .stream sinchroniniam ir .astream asinchroniniam, kad gautumėte dalis, kai jos atkeliauja. Srautinio perdavimo vadovas apima naudojimą ir geriausią praktiką.
Kaip įvaldyti ChatPDF: Greitesnės įžvalgos iš sudėtingų dokumentų

Geriausia X automatinio vertimo alternatyva greitiems ir tiksliems dokumentams

„Samsung“ AI vertimas neprieinamas Irane? Praktiniai sprendimai

Persų kalbos vertimo įrankiai: praktiškas vadovas greitesniam ir tikslesniam darbui

Geriausia Grok alternatyva giluminiams, cituojamiems tyrimams

15 geriausių AI vaizdų generatoriaus funkcijų, kurias iš tikrųjų naudosite