1. Giới thiệu về LLMs
Các Mô hình Ngôn ngữ Lớn (LLMs) là các thành phần cốt lõi của LangChain. LangChain chính nó không cung cấp khả năng mô hình ngôn ngữ lớn; thay vào đó, nó đóng gói các mô hình ngôn ngữ lớn thông thường khác nhau, cung cấp một giao diện tiêu chuẩn để vận hành các mô hình ngôn ngữ lớn, mang lại sự tiện lợi cho các nhà phát triển.
Hiện tại, LangChain đóng gói nhiều mô hình ngôn ngữ lớn và cũng hỗ trợ các mô hình tùy chỉnh. Các nhà phát triển có thể đóng gói các giao diện mô hình mới của riêng họ.
- Ghi chú: Hiện nay, có nhiều mô hình lớn nguồn mở và thương mại có sẵn. Xem xét các sự khác biệt về chi phí và khả năng của mô hình, mỗi người có thể có lựa chọn khác nhau. Ngoài ra, có thể có sự thay đổi thường xuyên về mô hình và các nhà phát triển có thể không muốn sửa đổi quá nhiều mã kinh doanh khi thay đổi mô hình. Đây là nơi mà giá trị của LangChain được thể hiện.
2. Thiết lập
2.1 Cài đặt
Để sử dụng OpenAI LLM trong LangChain, người dùng cần cài đặt gói OpenAI Python bằng cách chạy lệnh sau:
pip install openai
2.2 Thiết lập API Key
Truy cập vào OpenAI API đòi hỏi một API key, mà có thể được thu được bằng cách tạo tài khoản trên nền tảng OpenAI. Khi đã có API key, có thể đặt nó làm biến môi trường bằng cách sử dụng lệnh sau:
export OPENAI_API_KEY="your-api-key"
Hoặc nếu bạn không muốn đặt một biến môi trường, bạn cũng có thể truyền trực tiếp API key khi khởi tạo lớp OpenAI LLM, như trong ví dụ dưới đây:
from langchain_openai import OpenAI
llm = OpenAI(openai_api_key="your-api-key")
3. Cài đặt LCEL
Trong LangChain, LLMs thực hiện Giao diện Chạy cho Ngôn ngữ Biểu diễn LangChain (LCEL). Điều này có nghĩa rằng chúng hỗ trợ các cuộc gọi hàm khác nhau, như invoke
, stream
, batch
, và nhiều hơn nữa.
LLMs chấp nhận đầu vào dạng chuỗi hoặc các đối tượng có thể ép buộc thành một prompt chuỗi, bao gồm List[BaseMessage]
và PromptValue
.
4. Ví dụ về Việc Sử dụng LLM
4.1 Gọi lệnh
Để gọi LLM với một prompt cụ thể, có thể sử dụng chức năng invoke
, như ví dụ dưới đây:
llm.invoke("Nhập một prompt cho LLM ở đây")
4.2 Strêming
Phương pháp nhận và xử lý đầu ra văn bản theo thời gian thực từ LLM được gọi là strêming. Dưới đây là một ví dụ về việc sử dụng LLM cho xử lý strêming:
for chunk in llm.stream("Nhập một prompt cho strêming LLM ở đây"):
print(chunk, end="", flush=True)
4.3 Xử lý hàng loạt
Xử lý hàng loạt cho phép xử lý song song nhiều đầu vào cho LLMs. Có thể xử lý một loạt các prompts như sau:
llm.batch(["prompt 1", "prompt 2", "prompt 3"])
4.4 Hoạt động Bất đồng bộ
Để tăng hiệu suất, có thể sử dụng các hoạt động bất đồng bộ phối hợp với LLMs. Các hoạt động bất đồng bộ như ainvoke
, astream
, abatch
, và astream_log
cho phép thực thi bất đồng bộ. Dưới đây là một ví dụ về việc sử dụng LLM cho xử lý strêming bất đồng bộ:
async for chunk in llm.astream("Nhập một prompt bất đồng bộ cho strêming LLM ở đây"):
print(chunk, end="", flush=True)
Những ví dụ này thể hiện cách sử dụng đa dạng của LLMs cho các nhiệm vụ xử lý ngôn ngữ tự nhiên trong khung LangChain.