Cập nhật vào 25 Th09 2025
8 phút
# 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(---## Các khối xây dựng bạn sẽ sử dụng 80% thời gian### 1) Lời nhắc và phân tích cú pháp đầu ra- Sử dụng `ChatPromptTemplate` cho các lời nhắc có cấu trúc.- Phân tích cú pháp đầu ra bằng `StrOutputParser` hoặc trình phân tích cú pháp JSON cho các phản hồi được nhập.`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("""Tóm tắt văn bản sau trong 3 gạch đầu dòng:---{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# Chuẩn bị tài liệutexts = .---## Từ nguyên mẫu đến sản xuất: Bản thiết kế từng bước### Bước 1: Xác định User Story- Người dùng là ai? Họ đang cố gắng hoàn thành công việc gì?- Ví dụ: “Một nhân viên hỗ trợ trả lời các câu hỏi về sản phẩm từ các tài liệu nội bộ và các ticket gần đây.”### Bước 2: Chọn Minimum Viable Stack- Mô hình: Chọn một mô hình đáng tin cậy, giá cả hợp lý (ví dụ: GPT-4o-mini hoặc một mô hình mở tiên phong).- Dữ liệu: Quyết định xem bạn có cần RAG ngay bây giờ không. Nếu có, hãy bắt đầu với FAISS cục bộ.- I/O: Sử dụng LCEL để lặp lại nhanh chóng; tránh mã kết dính tùy chỉnh.### Bước 3: Triển khai vòng lặp RAG sạch- Chia tài liệu đúng cách.- Chỉ mục các embedding.- Gợi ý với ngữ cảnh và trích dẫn.- Thêm một biện pháp bảo vệ để tránh ảo giác khi không tìm thấy ngữ cảnh liên quan.`pythonfrom langchain_core.output_parsers import StrOutputParserfrom langchain_core.prompts import ChatPromptTemplateqa_prompt = ChatPromptTemplate.from_template("""Trả lời câu hỏi CHỈ sử dụng NGỮ CẢNH bên dưới. Nếu câu trả lời không cótrong ngữ cảnh, hãy nói "Tôi không biết." Bao gồm ID tài liệu được trích dẫn.NGỮ CẢNH:{context}CÂU HỎI: {question}""")parser = StrOutputParserrag_chain = (RunnableParallel(context=retriever, question=RunnableLambda(lambda x: x.### Bước 5: Đầu ra và xác thực được nhập- Sử dụng `PydanticOutputParser` hoặc lược đồ JSON để thực thi cấu trúc cho các phản hồi API.- Xác thực các trường để nắm bắt sự trôi dạt của mô hình.### Bước 6: Công cụ và gọi hàm cho các tác vụ thực- Giới thiệu các công cụ một cách tiết kiệm.- Các công cụ phổ biến: máy tính, tìm kiếm trên web, trình thực thi truy vấn SQL, trình chạy mã.- Mô tả rõ ràng khả năng của công cụ trong docstring.### Bước 7: Làm cứng- Giới hạn tốc độ và các chiến lược thử lại.- Thời gian chờ và bộ ngắt mạch.- Bộ lọc an toàn và kiểm tra nội dung.### Bước 8: Đánh giá & Cải tiến liên tục- Kiểm tra bằng các bộ dữ liệu vàng (đầu vào → đầu ra dự kiến).- Đánh giá độ trung thực, tính đầy đủ của câu trả lời và độ chính xác của trích dẫn.- Đo lường tỷ lệ truy xuất và độ trễ.---## Các mẫu và Gotchas phổ biến- Bắt đầu đơn giản: Chuỗi trước các agent. Bạn sẽ có được khả năng dự đoán và chi phí thấp hơn.- Chunking matters: Điều chỉnh kích thước/độ chồng chéo của chunk có thể thay đổi chất lượng truy xuất nhiều hơn so với việc hoán đổi mô hình.- Rò rỉ lời nhắc: Không nhồi nhét bồn rửa nhà bếp vào các lời nhắc hệ thống; giữ cho chúng tập trung.- Tính tất định: Đặt `temperature=0` để đánh giá và quy trình làm việc quan trọng.- UX phát trực tuyến: Truyền trực tuyến các token tới giao diện người dùng trong khi phần còn lại của hệ thống tìm nạp tài sản hoặc tải trước ngữ cảnh.- Đầu ra có cấu trúc: Sử dụng trình phân tích cú pháp để tích hợp xuôi dòng dễ dàng.---## Một dự án mini đầy đủ: Hỏi & Đáp tài liệu với trích dẫnVí dụ này gắn kết mọi thứ lại với nhau: ingestion, RAG, tạo câu trả lời và phát trực tuyến.`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) Ingestcorpus = {"pricing": "Gói Pro của chúng tôi hỗ trợ 1 triệu token ngữ cảnh và bao gồm hỗ trợ ưu tiên.","limits": "Giới hạn tỷ lệ API là 60 yêu cầu mỗi phút cho người dùng Pro.","security": "Chúng tôi lưu trữ nhật ký trong 30 ngày trừ khi tính năng ghi nhật ký bị quản trị viên tắt.",}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) Indexdb = FAISS.from_texts(all_chunks, OpenAIEmbeddings)retriever = db.as_retriever(k=4)# 3) Promptprompt = ChatPromptTemplate.from_template("""Bạn là một trợ lý hỗ trợ. Sử dụng NGỮ CẢNH để trả lời.Nếu không chắc chắn, hãy nói "Tôi không biết." Bao gồm các trích dẫn ID nguồn.NGỮ CẢNH:{context}CÂU HỎI: {question}""")# 4) Model and parserllm = ChatOpenAI(model="gpt-4o-mini", temperature=0)parser = StrOutputParser# 5) Compose chainrag = (RunnableParallel(context=retriever,question=RunnableLambda(lambda x: x["question"]) # pass-through)| prompt| llm| parser)# 6) Ask a questionfor chunk in rag.stream({"question": "What are Pro rate limits and log retention?"}):print(chunk, end="", flush=True)batch trên Runnables để có thông lượng.prompt | llm và kiểm tra với .invoke hoặc .stream. Các hướng dẫn chính thức hướng dẫn từng bước trò chuyện đơn giản, RAG và agent để bắt đầu nhanh chóng.Runnable đều hỗ trợ .stream cho đồng bộ và .astream cho không đồng bộ để tạo ra các chunk khi chúng đến. Hướng dẫn phát trực tuyến bao gồm cách sử dụng và các phương pháp hay nhất.
Cách Thành Thạo ChatPDF: Tìm Kiếm Thông Tin Nhanh Hơn Trong Tài Liệu Dày

Giải pháp thay thế X Auto-Translation tốt nhất cho tài liệu nhanh chóng, chính xác

Dịch thuật AI Samsung không khả dụng tại Iran? Các giải pháp thực tế

Công cụ dịch tiếng Ba Tư: hướng dẫn thực tiễn để làm việc nhanh hơn, chính xác hơn

Lựa chọn thay thế Grok tốt nhất cho nghiên cứu sâu và có trích dẫn

15 Tính Năng Hàng Đầu Của Trình Tạo Ảnh AI Mà Bạn Sẽ Thực Sự Sử Dụng