Актуализирано на 25 сеп 2025
8 мин
# 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( и ръководство за поточно предаване.---## Основни градивни елементи, които ще използвате в 80% от случаите### 1) Подкани и парсване на изхода- Използвайте `ChatPromptTemplate` за структурирани подкани.- Парсвайте изходите с `StrOutputParser` или JSON парсери за типизирани отговори.```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("""Обобщете следния текст в 3 основни точки:---{text}""")parser = StrOutputParserchain = prompt | llm | parsersummary = chain.invoke({"text": "LangChain helps build LLM apps with RAG and tools."})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# Подготовка на документиtexts = .---## От прототип до производство: Стъпка по стъпка план### Стъпка 1: Определете потребителската история- Кой е потребителят? Каква работа се опитва да свърши?- Пример: „Агент за поддръжка, който отговаря на продуктови въпроси от вътрешни документи и скорошни билети.“### Стъпка 2: Изберете минималния жизнеспособен стек- Модел: Изберете разумно ценоразпределен, надежден модел (напр. GPT-4o-mini или граничен отворен модел).- Данни: Решете дали имате нужда от RAG сега. Ако да, започнете с FAISS локално.- I/O: Използвайте LCEL за бърза итерация; избягвайте потребителски код за свързване.### Стъпка 3: Внедрете чист RAG цикъл- Разделете правилно документите.- Индексирайте вгражданията.- Подканете с контекст и цитати.- Добавете предпазна мярка, за да избегнете халюцинации, когато не е намерен подходящ контекст.```pythonfrom langchain_core.output_parsers import StrOutputParserfrom langchain_core.prompts import ChatPromptTemplateqa_prompt = ChatPromptTemplate.from_template("""Отговорете на въпроса, като използвате САМО КОНТЕКСТА по-долу. Ако отговорът не ев контекста, кажете „Не знам.“ Включете цитирани идентификатори на документи.КОНТЕКСТ:{context}ВЪПРОС: {question}""")parser = StrOutputParserrag_chain = (RunnableParallel(context=retriever, question=RunnableLambda(lambda x: x.### Стъпка 5: Типизирани изходи и валидиране- Използвайте `PydanticOutputParser` или JSON схема, за да наложите структура за API отговори.- Валидирайте полетата, за да уловите отклонения на модела.### Стъпка 6: Инструменти и извикване на функции за реални задачи- Въвеждайте инструменти пестеливо.- Обичайни инструменти: калкулатор, търсене в мрежата, изпълнител на SQL заявки, изпълнител на код.- Ясно опишете възможностите на инструментите в docstrings.### Стъпка 7: Укрепване- Ограничение на скоростта и стратегии за повторен опит.- Тайм-аути и прекъсвачи.- Филтри за безопасност и проверки на съдържанието.### Стъпка 8: Оценка и непрекъснато подобрение- Тествайте със златни набори от данни (вход → очакван изход).- Оценете верността, пълнотата на отговорите и точността на цитиране.- Измерете процента на успеваемост на извличане и латентността.---## Често срещани модели и клопки- Започнете просто: Вериги преди агенти. Ще получите предвидимост и по-ниска цена.- Разделянето на части е важно: Настройването на размера/припокриването на частите може да промени качеството на извличане повече от смяната на модела.- Изтичане на подкани: Не пъхайте всичко в системните подкани; поддържайте ги фокусирани.- Детерминизъм: Задайте `temperature=0` за оценка и критични работни процеси.- Поточно предаване на UX: Предавайте поточно токени към потребителския интерфейс, докато останалата част от системата извлича активи или предварително зарежда контекст.- Структурирани изходи: Използвайте парсери, за да направите интеграцията надолу по веригата безболезнена.---## Пълен мини проект: Въпроси и отговори с цитати от документиТози пример обединява всичко: поглъщане, RAG, генериране на отговори и поточно предаване.```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) Поглъщанеcorpus = {"pricing": "Нашият Pro план поддържа 1M контекстни токени и включва приоритетна поддръжка.","limits": "Ограничението на скоростта на API е 60 заявки в минута за Pro потребители.","security": "Съхраняваме логове за 30 дни, освен ако регистрирането не е деактивирано от администратора.",}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) Индексdb = FAISS.from_texts(all_chunks, OpenAIEmbeddings)retriever = db.as_retriever(k=4)# 3) Подканаprompt = ChatPromptTemplate.from_template("""Вие сте асистент за поддръжка. Използвайте КОНТЕКСТА, за да отговорите.Ако не сте сигурни, кажете „Не знам.“ Включете цитати от идентификатори на източници.КОНТЕКСТ:{context}ВЪПРОС: {question}""")# 4) Модел и парсерllm = ChatOpenAI(model="gpt-4o-mini", temperature=0)parser = StrOutputParser# 5) Съставете веригаrag = (RunnableParallel(context=retriever,question=RunnableLambda(lambda x: x["question"]) # пропускане)| prompt| llm| parser)# 6) Задайте въпросfor chunk in rag.stream({"question": "Какви са Pro ограниченията на скоростта и задържането на логове?"}):print(chunk, end="", flush=True)batch на Runnables за пропускателна способност.prompt | llm и тествайте с .invoke или .stream. Официалните уроци преминават през прост чат, RAG и агенти стъпка по стъпка за бърз старт.Runnable вериги поддържат .stream за синхронно и .astream за асинхронно, за да генерират части, докато пристигат. Ръководството за поточно предаване обхваща използването и най-добрите практики.
Как да овладеете ChatPDF: По-бързи прозрения от обемисти документи

Най-добрата алтернатива на X Auto-Translation за бързи и точни документи

Преводът с AI на Samsung не е наличен в Иран? Практически решения

Инструменти за превод на персийски: практическо ръководство за по-бърза и точна работа

Най-добрата алтернатива на Grok за задълбочени, цитирани изследвания

Топ 15 функции на AI генератор на изображения, които наистина ще използвате