Hướng Dẫn Sử Dụng LangChain Và GPT Để Phân Tích Tài Liệu Hiệu Quả
Trong khoảng một năm qua, cộng đồng lập trình viên đã chứng kiến sự phát triển mạnh mẽ của các công cụ và quy trình mới để tương tác với các mô hình ngôn ngữ lớn (LLM) và AI sinh. Một trong những công cụ nổi bật chính là dự án LangChain.
Giới Thiệu Về LangChain
LangChain là một dự án mang đến khả năng tích hợp dễ dàng với nhiều mô hình LLM khác nhau. Tại đây, bạn cũng sẽ tìm thấy nhiều dự án tiên tiến nhằm mở rộng khả năng của LLM. Bạn có thể truy cập vào trang web của LangChain để khám phá thêm về các công cụ hỗ trợ xây dựng ứng dụng mạnh mẽ.
Mục Đích Của Bài Viết
Bài viết này sẽ hướng dẫn bạn cách sử dụng LangChain để truy cập, tóm tắt và phân tích các tài liệu dài và phức tạp một cách tự động bằng mã lập trình. Để thực hiện được điều này, bạn sẽ cần một môi trường Python (như Jupyter Lab) và một khóa API OpenAI hợp lệ.
Chuẩn Bị Môi Trường Làm Việc
Để tải nhiều tệp PDF song song và yêu cầu GPT phân tích nội dung, bạn có thể sử dụng đoạn mã sau:
python
import os
os.environ['OPENAI_API_KEY'] = "sk-xxx"
from pydantic import BaseModel, Field
from langchain.chat_models import ChatOpenAI
from langchain.agents import Tool
from langchain.embeddings.openai import OpenAIEmbeddings
from langchain.text_splitter import CharacterTextSplitter
from langchain.vectorstores import FAISS
from langchain.document_loaders import PyPDFLoader
from langchain.chains import RetrievalQA
Đoạn mã này sẽ thiết lập môi trường cho bạn với các công cụ cần thiết để kích hoạt ChatOpenAI, xử lý văn bản, và quản lý một tác vụ AI.
Tạo Lớp DocumentInput
Tiếp theo, bạn cần tạo một lớp DocumentInput
và thiết lập giá trị llm
để định hình một số tham số cho GPT:
python
class DocumentInput(BaseModel):
question: str = Field()
llm = ChatOpenAI(temperature=0, model="gpt-3.5-turbo-0613")
Tải Tài Liệu Cần Phân Tích
Tiếp theo, bạn sẽ định nghĩa một mảng chứa các URL đến các báo cáo tài chính gần đây của các công ty như Alphabet, Cisco và IBM:
python
tools = []
files = [
{
"name": "alphabet-earnings",
"path": "https://abc.xyz/investor/static/pdf/2023Q1_alphabet_earnings_release.pdf",
},
{
"name": "Cisco-earnings",
"path": "https://d18rn0p25nwr6d.cloudfront.net/CIK-000858877/5b3c172d-f7a3-4ecb-b141-03ff7af7e068.pdf",
},
{
"name": "IBM-earnings",
"path": "https://www.ibm.com/investor/att/pdf/IBM_Annual_Report_2022.pdf",
},
]
Vòng lặp for sau sẽ giúp bạn tải từng tệp PDF và phân tích văn bản:
python
for file in files:
loader = PyPDFLoader(file["path"])
pages = loader.load_and_split()
text_splitter = CharacterTextSplitter(chunk_size=1000, chunk_overlap=0)
docs = text_splitter.split_documents(pages)
embeddings = OpenAIEmbeddings()
retriever = FAISS.from_documents(docs, embeddings).as_retriever()
tools.append(
Tool(
args_schema=DocumentInput,
name=file["name"],
func=RetrievalQA.from_chain_type(llm=llm, retriever=retriever),
)
)
Gửi Yêu Cầu Phân Tích
Sau khi đã chuẩn bị xong, bạn có thể khởi tạo tác vụ và gửi yêu cầu phân tích:
python
agent = initialize_agent(
agent=AgentType.OPENAI_FUNCTIONS,
tools=tools,
llm=llm,
verbose=True,
)
agent({"input": "Dựa trên các tài liệu SEC, xác định công ty nào trong ba công ty Alphabet, IBM, và Cisco có mức nợ ngắn hạn cao nhất và chi phí nghiên cứu và phát triển cao nhất."})
Kết quả nhận được sẽ rõ ràng và súc tích, giúp bạn dễ dàng phân tích thông tin:
'output': 'Dựa trên các tài liệu nộp cho SEC: - Công ty có mức nợ ngắn hạn lớn nhất là IBM, với mức nợ ngắn hạn là 4.760 triệu USD. - Công ty có chi phí nghiên cứu và phát triển cao nhất là Alphabet, với chi phí nghiên cứu và phát triển là 11.468 triệu USD.'
Kết Luận
LangChain là công cụ mạnh mẽ cho phép bạn tích hợp nhiều ứng dụng vào các hoạt động AI, giúp bạn truy cập thông tin trực tiếp từ internet và thực hiện các yêu cầu LLM phức tạp. Hãy thử nghiệm ngay hôm nay để khai thác sức mạnh của các công cụ AI cho công việc phân tích dữ liệu của bạn!
source: viblo