0
0
Lập trình
Harry Tran
Harry Tran106580903228332612117

Tìm hiểu về LangChain: Framework mạnh mẽ cho ứng dụng LLMs

Đăng vào 1 tháng trước

• 3 phút đọc

Chủ đề:

AILangChain

LangChain là gì?

LangChain là một framework linh hoạt được phát triển bằng Python và JavaScript, dành riêng cho việc xây dựng và tương tác với các ứng dụng sử dụng mô hình ngôn ngữ lớn (LLMs). Framework này giúp lập trình viên giải quyết nhiều thách thức khi làm việc với LLMs, đồng thời cung cấp các công cụ dễ sử dụng để phát triển ứng dụng hiệu quả hơn. Hướng dẫn cài đặt LangChain có thể tìm thấy tại đây.

Các thành phần cơ bản của LangChain

Model I/O

LangChain cung cấp một giao diện linh hoạt để bạn có thể dễ dàng kết nối và sử dụng nhiều loại mô hình LLM khác nhau, bao gồm cả OpenAI và Hugging Face. Ví dụ, bạn có thể dễ dàng sử dụng mô hình OpenAI bằng cách cung cấp API key:

python Copy
from langchain_openai import ChatOpenAI
from langchain_openai import OpenAI

llm = OpenAI(openai_api_key="...")
chat_model = ChatOpenAI()

Ngoài ra, bạn cũng có thể tương tác trực tiếp với các mô hình chạy trên máy local thông qua Ollama - một dự án mã nguồn mở hỗ trợ người dùng tương tác với LLMs mà không cần kết nối internet:

python Copy
from langchain_community.llms import Ollama
from langchain_community.chat_models import ChatOllama

llm = Ollama(model="llama2")
chat_model = ChatOllama()

Với các đối tượng llmchat_model, bạn đã sẵn sàng để bắt đầu tương tác với mô hình LLMs.

Prompts

LangChain cung cấp các mẫu prompt giúp bạn dễ dàng cấu trúc đầu vào cho LLMs theo cách hiệu quả. Bạn có thể tạo ra các prompt động với các tham số tùy biến phù hợp với nhu cầu sử dụng:

python Copy
prompt = PromptTemplate(
    template="Tell me a joke in {language}", input_variables=["language"]
)

print(prompt.format(language="spanish"))

Output Parsers

Khi kết quả đầu ra của mô hình là văn bản, có thể bạn muốn chuyển đổi nó sang định dạng khác như JSON hay CSV. LangChain cung cấp các output parsers để hỗ trợ bạn thực hiện điều này:

python Copy
template = "Generate a list of 5 {text}.

{format_instructions}"

chat_prompt = ChatPromptTemplate.from_template(template)
chat_prompt = chat_prompt.partial(format_instructions=output_parser.get_format_instructions())

chain = chat_prompt | chat_model | output_parser
chain.invoke({"text": "colors"})

Retrieval: Tăng cường khả năng truy xuất

Mô hình ngôn ngữ thường bị giới hạn trong tập dữ liệu đã sử dụng để huấn luyện. Để giải quyết vấn đề này, LangChain giới thiệu mô hình RAG (Retrieval Augmented Generation), cho phép bạn tăng cường mô hình với dữ liệu từ bên ngoài.

Document Loaders

LangChain hỗ trợ bạn tải tài liệu từ nhiều nguồn khác nhau như Github hay S3:

python Copy
from langchain_community.document_loaders import TextLoader

loader = TextLoader("./main.rb")
documents = loader.load()

Text Splitting

Sau khi tải tài liệu, bạn có thể chia chúng thành các phần nhỏ hơn để xử lý tốt hơn:

python Copy
from langchain.text_splitter import Language
from langchain.text_splitter import RecursiveCharacterTextSplitter

splitter = RecursiveCharacterTextSplitter.from_language(
    language=Language.RUBY, chunk_size=2000, chunk_overlap=200
)
documents = splitter.split_documents(raw_documents)

Text Embedding Models

Dữ liệu sau khi chia nhỏ sẽ được chuyển đổi sang vector space để sử dụng lại sau này:

python Copy
from langchain_community.embeddings import OllamaEmbeddings

embeddings_model = OllamaEmbeddings()
embeddings = embeddings_model.embed_documents(documents)

Vector Stores

Dữ liệu dưới dạng vector có thể được lưu trữ hiệu quả, LangChain cung cấp module để thực hiện việc này:

python Copy
from langchain_community.vectorstores import Chroma

db = Chroma.from_documents(documents, OllamaEmbeddings())

Retrievers

Bạn có thể truy xuất dữ liệu từ vector store thông qua retrievers:

python Copy
from langchain.chains import RetrievalQA
from langchain.llms import Ollama

retriever = db.as_retriever(search_kwargs={"k": 1})
llm = Ollama(model="codellama:7b")

qa = RetrievalQA.from_chain_type(llm=llm, chain_type="stuff", retriever=retriever)
qa.invoke("What's inside this document?")["result"]

Agents: Tùy chỉnh yêu cầu và phản hồi

LangChain cung cấp các Agents giúp bạn tái tạo nhiều bước xử lý cho yêu cầu của người dùng. Mỗi agent là một tập hợp các công cụ (tools) có thể được sử dụng để thực hiện các nhiệm vụ khác nhau.

Built-In Tools và Custom Tools

LangChain chứa nhiều built-in tools sẵn có, và cũng cho phép bạn tạo custom tools dễ dàng:

python Copy
from langchain.tools import tool

@tool
def search(query: str) -> str:
    return "LangChain"

@tool
def multiply(a: int, b: int) -> int:
    return a * b

Sử dụng Agents

Bạn có thể khởi tạo agents từ các tools và áp dụng chúng vào các yêu cầu khác nhau:

python Copy
from langchain.agents import initialize_agent, AgentType
from langchain.llms import Ollama

tools = [search, multiply]

agent = initialize_agent(
    tools,
    Ollama(),
    agent=AgentType.STRUCTURED_CHAT_ZERO_SHOT_REACT_DESCRIPTION,
    verbose=True,
)

Kết luận

LangChain là một framework vô cùng mạnh mẽ, dễ dàng giúp bạn tương tác cũng như khai thác sức mạnh của mô hình ngôn ngữ lớn (LLMs). Qua bài viết này, bạn đã có cái nhìn tổng quan về LangChain. Trong các bài viết tiếp theo, chúng ta sẽ cùng nhau khám phá sâu hơn, sử dụng LangChain để giải quyết các bài toán cụ thể, hứa hẹn mang đến những điều thú vị.

Xem blog của chúng tôi tại đây.
source: viblo

Gợi ý câu hỏi phỏng vấn
Không có dữ liệu

Không có dữ liệu

Bài viết được đề xuất
Bài viết cùng tác giả

Bình luận

Chưa có bình luận nào

Chưa có bình luận nào