Courses
Năng lực của các mô hình ngôn ngữ lớn (LLM) như GPT-3 của OpenAI, BERT của Google và LLaMA của Meta đang thay đổi nhiều ngành bằng cách cho phép tạo ra nhiều loại văn bản, từ nội dung marketing và mã khoa học dữ liệu đến thơ ca. Mặc dù ChatGPT đã thu hút nhiều sự chú ý nhờ giao diện trò chuyện thân thiện, vẫn còn vô số khả năng chưa được khai phá để tận dụng LLM bằng cách tích hợp chúng vào các ứng dụng phần mềm khác nhau.
Nếu bạn bị cuốn hút bởi sức mạnh chuyển đổi của Generative AI và LLM, hướng dẫn này là dành cho bạn. Tại đây, chúng ta khám phá LangChain - một framework Python mã nguồn mở để xây dựng các ứng dụng dựa trên các Mô hình Ngôn ngữ Lớn như GPT.
Tìm hiểu thêm về cách xây dựng ứng dụng AI với LangChain trong AI Code Along: Xây dựng Ứng dụng AI Đa phương thức với LangChain & OpenAI API nơi bạn sẽ khám phá cách chuyển giọng nói thành văn bản nội dung video YouTube với Whisper và sau đó dùng GPT để đặt câu hỏi về nội dung đó.
Mô hình Ngôn ngữ Lớn (LLM) là gì?
Mô hình Ngôn ngữ Lớn (LLM) là các hệ thống trí tuệ nhân tạo tiên tiến được thiết kế để hiểu và tạo ra văn bản giống như con người. Những mô hình này được huấn luyện trên lượng dữ liệu khổng lồ, giúp chúng nắm bắt các mẫu phức tạp, hiểu sắc thái ngôn ngữ và tạo phản hồi mạch lạc. LLM có khả năng thực hiện nhiều tác vụ liên quan đến ngôn ngữ, bao gồm dịch thuật, hoàn thành văn bản, tóm tắt, và thậm chí tham gia tương tác hội thoại. GPT là một ví dụ về LLM.
LLM là một loại của Generative AI. Nếu bạn muốn tìm hiểu về Generative AI và cách nó có thể thúc đẩy sự sáng tạo của bạn, hãy xem các bài viết về Sử dụng Generative AI để thúc đẩy sáng tạo và podcast Bên trong cuộc cách mạng Generative AI. Bạn cũng có thể đăng ký khóa học sắp tới về Các khái niệm về Mô hình Ngôn ngữ Lớn.
Giới thiệu về LangChain
LangChain là một framework mã nguồn mở được thiết kế để hỗ trợ phát triển các ứng dụng vận hành bởi các mô hình ngôn ngữ lớn (LLM). Nó cung cấp bộ công cụ, thành phần và giao diện giúp đơn giản hóa việc xây dựng các ứng dụng lấy LLM làm trung tâm. Với LangChain, việc quản lý tương tác với mô hình ngôn ngữ, liên kết liền mạch các thành phần khác nhau và tích hợp tài nguyên như API và cơ sở dữ liệu trở nên dễ dàng. Bạn có thể đọc thêm về LangChain cho Kỹ thuật Dữ liệu và Ứng dụng Dữ liệu trong một bài viết riêng.
Nền tảng LangChain đi kèm với một tập hợp API mà nhà phát triển có thể nhúng vào ứng dụng của mình, cho phép bổ sung năng lực xử lý ngôn ngữ mà không cần xây dựng mọi thứ từ đầu. Vì vậy, LangChain giúp đơn giản hóa hiệu quả quá trình tạo ứng dụng dựa trên LLM, phù hợp với nhà phát triển ở mọi mức độ kinh nghiệm.
Các ứng dụng như chatbot, trợ lý ảo, công cụ dịch thuật và công cụ phân tích cảm xúc đều là ví dụ của ứng dụng vận hành bởi LLM. Nhà phát triển tận dụng LangChain để tạo các ứng dụng dựa trên mô hình ngôn ngữ tùy biến đáp ứng nhu cầu cụ thể.
Với những tiến bộ liên tục và mức độ ứng dụng rộng rãi của xử lý ngôn ngữ tự nhiên, phạm vi ứng dụng của công nghệ này được kỳ vọng gần như không giới hạn. Dưới đây là một số đặc điểm đáng chú ý của LangChain:
1. Tùy biến prompt để đáp ứng yêu cầu cụ thể của bạn
2. Xây dựng các thành phần chuỗi (chain) cho các kịch bản nâng cao
3. Tích hợp mô hình để tăng cường dữ liệu và truy cập năng lực mô hình ngôn ngữ hàng đầu như GPT và HuggingFace Hub.
4. Các thành phần linh hoạt cho phép kết hợp phù hợp với nhu cầu
5. Điều phối ngữ cảnh để thiết lập và dẫn dắt ngữ cảnh nhằm tăng độ chính xác và sự hài lòng của người dùng
Cài đặt LangChain trong Python
Cài đặt LangChain trong Python khá đơn giản. Bạn có thể cài bằng pip hoặc conda.
Cài đặt bằng pip
pip install langchain
Cài đặt bằng conda
install langchain -c conda-forge
Điều này sẽ thiết lập các thành phần cơ bản của LangChain. Phần lớn giá trị của LangChain thể hiện khi nó được tích hợp với nhiều nhà cung cấp mô hình, kho dữ liệu, v.v.
Theo mặc định, các phụ thuộc cần cho những tích hợp này KHÔNG được bao gồm trong bản cài đặt. Để cài tất cả phụ thuộc, bạn có thể chạy lệnh sau:
pip install langchain[all]
Tùy chọn cuối cùng là xây dựng thư viện từ mã nguồn. Khi đó, bạn có thể clone dự án từ repo GitHub.
Thiết lập môi trường
Sử dụng LangChain thường yêu cầu tích hợp với nhiều nhà cung cấp mô hình, kho dữ liệu, API và các thành phần tương tự. Như với mọi tích hợp, chúng ta phải cung cấp các khóa API phù hợp để LangChain hoạt động. Có hai cách thực hiện:
1. Thiết lập khóa dưới dạng biến môi trường
OPENAI_API_KEY="..."
Nếu bạn không muốn đặt biến môi trường, bạn có thể truyền khóa trực tiếp qua tham số có tên openai_api_key khi khởi tạo lớp OpenAI LLM:
2. Thiết lập trực tiếp khóa trong lớp liên quan
from langchain.llms import OpenAI
llm = OpenAI(openai_api_key="...")
Các thành phần chính của LangChain
LangChain nổi bật nhờ nhấn mạnh vào tính linh hoạt và mô-đun. Nó tách rời pipeline xử lý ngôn ngữ tự nhiên thành các thành phần riêng lẻ, cho phép nhà phát triển điều chỉnh quy trình làm việc theo nhu cầu. Tính thích ứng này khiến LangChain lý tưởng để xây dựng ứng dụng AI trong nhiều kịch bản và lĩnh vực.
Thành phần và chuỗi (chains)
Trong LangChain, thành phần là các mô-đun thực hiện chức năng cụ thể trong pipeline xử lý ngôn ngữ. Các thành phần này có thể được liên kết thành "chuỗi" cho quy trình làm việc tùy biến, ví dụ chuỗi chatbot chăm sóc khách hàng với các mô-đun phân tích cảm xúc, nhận diện ý định và tạo phản hồi.
Mẫu prompt
Mẫu prompt là các prompt được định nghĩa sẵn và có thể tái sử dụng trên các chuỗi. Những mẫu này có thể trở nên động và thích ứng bằng cách chèn các "giá trị" cụ thể. Ví dụ, một prompt hỏi tên người dùng có thể được cá nhân hóa bằng cách chèn một giá trị cụ thể. Tính năng này hữu ích để tạo prompt dựa trên tài nguyên động.
Kho vector
Đây là nơi lưu trữ và tìm kiếm thông tin thông qua embeddings, về bản chất là phân tích các biểu diễn số của ý nghĩa tài liệu. VectorStore đóng vai trò kho lưu trữ các embedding này, cho phép tìm kiếm hiệu quả dựa trên độ tương đồng ngữ nghĩa.
Chỉ mục và bộ truy xuất
Chỉ mục hoạt động như cơ sở dữ liệu lưu trữ chi tiết và metadata về dữ liệu huấn luyện của mô hình, trong khi bộ truy xuất nhanh chóng tìm trong chỉ mục này để lấy thông tin cụ thể. Điều này cải thiện phản hồi của mô hình bằng cách cung cấp ngữ cảnh và thông tin liên quan.
Bộ phân tích đầu ra
Bộ phân tích đầu ra được sử dụng để quản lý và tinh chỉnh phản hồi do mô hình tạo ra. Chúng có thể loại bỏ nội dung không mong muốn, điều chỉnh định dạng đầu ra hoặc bổ sung dữ liệu thêm vào phản hồi. Nhờ đó, bộ phân tích đầu ra giúp trích xuất kết quả có cấu trúc, như các đối tượng JSON, từ phản hồi của mô hình ngôn ngữ.
Bộ chọn ví dụ
Bộ chọn ví dụ trong LangChain dùng để nhận diện những trường hợp phù hợp từ dữ liệu huấn luyện của mô hình, nhờ đó cải thiện độ chính xác và tính phù hợp của phản hồi được tạo. Những bộ chọn này có thể được điều chỉnh để ưu tiên một số loại ví dụ nhất định hoặc lọc những ví dụ không liên quan, cung cấp phản hồi AI phù hợp dựa trên đầu vào của người dùng.
Tác tử (Agents)
Tác tử là các thể hiện LangChain đặc thù, mỗi cái có prompt, bộ nhớ và chuỗi riêng cho một trường hợp sử dụng cụ thể. Chúng có thể được triển khai trên nhiều nền tảng, bao gồm web, di động và chatbot, phục vụ đối tượng rộng rãi.
Cách xây dựng ứng dụng mô hình ngôn ngữ trong LangChain
LangChain cung cấp lớp LLM được thiết kế để giao tiếp với nhiều nhà cung cấp mô hình ngôn ngữ như OpenAI, Cohere và Hugging Face. Chức năng cơ bản nhất của một LLM là tạo văn bản. Việc xây dựng một ứng dụng với LangChain nhận một prompt dạng chuỗi và trả về kết quả là rất trực quan.
API_KEY ="..."
from langchain.llms import OpenAI
llm = OpenAI(model_name="text-ada-001", openai_api_key=API_KEY)
print(llm("Tell me a joke about data scientist"))
Đầu ra:
>>> "What do you get when you tinker with data? A data scientist!"
Trong ví dụ trên, chúng ta dùng mô hình text-ada-001 của OpenAI. Nếu bạn muốn thay bằng bất kỳ mô hình mã nguồn mở nào từ HuggingFace, chỉ cần thay đổi đơn giản:
API_KEY ="..."
from langchain import HuggingFaceHub
llm = HuggingFaceHub(repo_id = "google/flan-t5-xl", huggingfacehub_api_token = API_KEY)
print(llm("Tell me a joke about data scientist"))
Bạn có thể lấy token Hugging Face hub từ tài khoản HF của mình.
Nếu bạn có nhiều prompt, bạn có thể gửi danh sách prompt cùng lúc bằng phương thức generate:
llm_response = llm.generate(['Tell me a joke about data scientist',
'Tell me a joke about recruiter',
'Tell me a joke about psychologist'])
Đầu ra:

Đây là ứng dụng đơn giản nhất bạn có thể tạo bằng LangChain. Nó nhận prompt, gửi tới mô hình ngôn ngữ bạn chọn và trả về câu trả lời. Có nhiều tham số bạn có thể điều khiển, chẳng hạn như `temperature`. Tham số temperature điều chỉnh độ ngẫu nhiên của đầu ra, mặc định là 0.7.
Quản lý mẫu Prompt cho LLM trong LangChain
LLM có các API đặc thù. Dù có vẻ trực quan khi nhập prompt bằng ngôn ngữ tự nhiên, thực tế cần điều chỉnh prompt để đạt đầu ra như mong muốn từ LLM. Quá trình điều chỉnh này được gọi là kỹ thuật prompt. Khi bạn có một prompt tốt, bạn có thể muốn dùng nó làm mẫu cho mục đích khác.
Một PromptTemplate trong LangChain cho phép bạn dùng kỹ thuật templating để tạo prompt. Điều này hữu ích khi bạn muốn dùng cùng một khung prompt ở nhiều nơi nhưng thay đổi một số giá trị.
USER_INPUT = 'Paris'
from langchain.llms import OpenAI
from langchain import PromptTemplate
llm = OpenAI(model_name="text-davinci-003", openai_api_key=API_KEY)
template = """ I am travelling to {location}. What are the top 3 things I can do while I am there. Be very specific and respond as three bullet points """
prompt = PromptTemplate(
input_variables=["location"],
template=template,
)
final_prompt = prompt.format(location=USER_INPUT )
print(f"LLM Output: {llm(final_prompt)}")
Đầu ra:
1. Leo lên Tháp Eiffel và ngắm nhìn quang cảnh ngoạn mục của thành phố
2. Thưởng thức chuyến du ngoạn lãng mạn dọc sông Seine và chiêm ngưỡng kiến trúc tuyệt đẹp dọc hai bờ
3. Khám phá Louvre và chiêm ngưỡng các tác phẩm nghệ thuật trứ danh trưng bày tại đây
Nếu giờ bạn muốn tái sử dụng prompt này cho một thành phố khác, bạn chỉ cần thay biến USER_INPUT. Tôi đã đổi từ Paris sang Cancun, Mexico. Xem cách đầu ra thay đổi:
Đầu ra:
1. Thư giãn trên bãi biển: Tận hưởng bãi cát trắng và làn nước trong vắt của biển Caribe.
2. Khám phá phế tích người Maya: Thăm các địa điểm khảo cổ cổ như Chichen Itza, Tulum và Coba để tìm hiểu lịch sử và văn hóa Maya.
3. Tham gia tour ẩm thực: Nếm thử hương vị truyền thống và tìm hiểu ẩm thực địa phương qua một tour ẩm thực ở Cancun.
Kết hợp LLM và Prompt trong quy trình nhiều bước
Chaining trong ngữ cảnh LangChain đề cập đến việc tích hợp LLM với các thành phần khác để xây dựng ứng dụng. Một số ví dụ gồm:
- Kết hợp tuần tự nhiều LLM bằng cách dùng đầu ra của LLM thứ nhất làm đầu vào cho LLM thứ hai (xem phần này)
- Tích hợp LLM với mẫu prompt
- Kết hợp LLM với dữ liệu bên ngoài, chẳng hạn để hỏi đáp
- Kết hợp LLM với bộ nhớ dài hạn, như lịch sử trò chuyện
Hãy xem ví dụ đầu tiên, nơi chúng ta dùng đầu ra từ LLM thứ nhất làm đầu vào cho LLM thứ hai.
from langchain.llms import OpenAI
from langchain.chains import LLMChain, SimpleSequentialChain
from langchain import PromptTemplate
llm = OpenAI(model_name="text-davinci-003", openai_api_key=API_KEY)
# first step in chain
template = "What is the most popular city in {country} for tourists? Just return the name of the city"
first_prompt = PromptTemplate(
input_variables=["country"],
template=template)
chain_one = LLMChain(llm = llm, prompt = first_prompt)
# second step in chain
second_prompt = PromptTemplate(
input_variables=["city"],
template="What are the top three things to do in this: {city} for tourists. Just return the answer as three bullet points.",)
chain_two = LLMChain(llm=llm, prompt=second_prompt)
# Combine the first and the second chain
overall_chain = SimpleSequentialChain(chains=[chain_one, chain_two], verbose=True)
final_answer = overall_chain.run("Canada")
Đầu ra:

Trong ví dụ cụ thể này, chúng ta tạo một chuỗi gồm hai thành phần. Thành phần đầu tiên chịu trách nhiệm xác định thành phố phổ biến nhất tương ứng với một quốc gia do người dùng nhập. Ngược lại, thành phần thứ hai tập trung cung cấp thông tin về ba hoạt động hoặc điểm tham quan hàng đầu cho du khách khi đến thăm thành phố đó.
Nếu bạn muốn tìm hiểu các khái niệm nâng cao hơn về xây dựng ứng dụng trong LangChain, hãy xem khóa học trực tiếp Xây dựng Ứng dụng AI với LangChain và GPT trên DataCamp.
Kết luận và Hướng học tiếp
Mới không lâu trước đây, tất cả chúng ta đều ấn tượng mạnh với khả năng của ChatGPT. Tuy nhiên, bối cảnh đã thay đổi nhanh chóng và giờ đây chúng ta có các công cụ dành cho nhà phát triển như LangChain, cho phép tạo những nguyên mẫu ấn tượng tương tự ngay trên máy cá nhân chỉ trong vài giờ.
LangChain, một framework Python mã nguồn mở, cho phép mọi người tạo các ứng dụng vận hành bởi LLM (Language Model Models). Framework này cung cấp giao diện linh hoạt tới nhiều mô hình nền tảng, hỗ trợ quản lý prompt và đóng vai trò là trung tâm cho các thành phần khác như mẫu prompt, LLM bổ sung, dữ liệu bên ngoài và các công cụ khác thông qua tác tử (tại thời điểm viết).
Nếu bạn đang cố gắng theo kịp mọi tiến bộ trong Generative AI và LLM, hãy xem webinar Xây dựng Ứng dụng AI với LangChain và GPT của chúng tôi. Tại đây, bạn sẽ học những điều cơ bản về sử dụng LangChain để phát triển ứng dụng AI, cách cấu trúc một ứng dụng AI và cách nhúng dữ liệu văn bản để đạt hiệu năng cao. Bạn cũng có thể xem cheat sheet về bức tranh công cụ Generative AI để khám phá các nhóm công cụ, ứng dụng và tác động của chúng trong nhiều lĩnh vực. Cuối cùng, xem danh sách các LLM mã nguồn mở hàng đầu để tìm hiểu về những công cụ mạnh mẽ khác.
FAQs
LangChain là gì?
LangChain là một framework mã nguồn mở được thiết kế để hỗ trợ phát triển các ứng dụng vận hành bởi các mô hình ngôn ngữ lớn (LLM). Nó đơn giản hóa việc xây dựng các ứng dụng lấy LLM làm trung tâm bằng cách cung cấp công cụ, thành phần và giao diện.
LangChain có miễn phí không?
Có. LangChain là framework miễn phí, mã nguồn mở, nhưng việc sử dụng một số LLM có thể yêu cầu đăng ký.
LangChain có làm việc với các nhà cung cấp mô hình khác nhau không?
Có. LangChain tương thích với nhiều nhà cung cấp mô hình ngôn ngữ như OpenAI, Cohere và Hugging Face, cho phép linh hoạt trong phát triển ứng dụng.
Làm thế nào dùng LangChain với các mô hình OpenAI?
Sau khi cài đặt LangChain, bạn có thể tích hợp với các mô hình OpenAI bằng cách thiết lập khóa API OpenAI của mình và sử dụng các giao diện được cung cấp để tương tác với mô hình.
Làm thế nào quản lý mẫu prompt trong LangChain?
LangChain sử dụng PromptTemplate để quản lý các mẫu prompt, cho phép tạo prompt động và tái sử dụng có thể điều chỉnh cho các trường hợp sử dụng cụ thể bằng cách thay đổi biến đầu vào.
Chaining trong LangChain là gì?
Chaining đề cập đến việc tích hợp LLM với các thành phần khác để xây dựng ứng dụng, như kết hợp tuần tự nhiều LLM, tích hợp LLM với mẫu prompt hoặc kết hợp dữ liệu bên ngoài.
LangChain có xử lý dữ liệu tài liệu từ nhiều nguồn không?
Có. LangChain hỗ trợ bộ nạp tài liệu từ nhiều nguồn dữ liệu, bao gồm tệp văn bản, CSV, PDF và các nền tảng như Slack và Figma để đưa vào ứng dụng LLM.
