Apidog

Nền tảng phát triển API hợp tác tất cả trong một

Thiết kế API

Tài liệu API

Gỡ lỗi API

Giả lập API

Kiểm thử API tự động

Cách Xây Dựng Các Tác Nhân AI Với SmolAgents và Deepseek R1

中村 拓也

中村 拓也

Updated on tháng 2 19, 2025

Giới thiệu

Việc tích hợp các mô hình suy luận nâng cao và các framework nhẹ đang biến đổi cách mà các hệ thống AI lấy, xử lý và trình bày thông tin. Trong hướng dẫn này, chúng tôi sẽ xây dựng một hệ thống Tăng cường Tìm kiếm (RAG) sử dụng DeepSeek R1, một mô hình suy luận hiệu suất cao, và SmolAgents, một framework tác nhân tối giản từ Hugging Face. Hệ thống này sẽ cho phép xử lý tài liệu hiệu quả, tìm kiếm thông minh và suy luận giống con người—lý tưởng cho nghiên cứu, hỗ trợ khách hàng và quản lý kiến thức.

💡
Nếu bạn đang tìm kiếm một công cụ quản lý API mạnh mẽ có thể tối ưu hóa quy trình làm việc của bạn khi làm việc với DeepSeek R1, đừng bỏ lỡ Apidog. Bạn có thể tải Apidog miễn phí hôm nay, và nó hoàn toàn được thiết kế để làm việc với các dự án như DeepSeek R1, giúp hành trình phát triển của bạn trở nên dễ dàng và thú vị hơn!
button

Yêu cầu hệ thống để chạy cài đặt

Đại diện AI sẽ thực hiện bốn nhiệm vụ chính:

  1. Tải và Xử lý PDF: Chuyển đổi tài liệu thành các đoạn văn bản có thể tìm kiếm.
  2. Tạo cơ sở dữ liệu vector: Lưu trữ các vector để tìm kiếm ngữ nghĩa nhanh chóng.
  3. Lấy và Suy luận: Sử dụng DeepSeek R1 để phân tích dữ liệu đã lấy và tạo ra câu trả lời.
  4. Giao tiếp với Người dùng: Cung cấp giao diện trò chuyện để tương tác mượt mà.


Bước 1: Tải và Xử lý Tài liệu PDF

Công cụ và Thư viện

  • LangChain: Để tải tài liệu và tách văn bản.
  • ChromaDB: Một cơ sở dữ liệu vector nhẹ để lưu trữ các vector.
  • Embedding Hugging Face: Để chuyển đổi văn bản thành các đại diện vector.

Thực hiện

1.1 Tải Tệp PDF

Sử dụng DirectoryLoader của LangChain để tải tất cả PDF từ một thư mục. Mỗi PDF được tách thành các trang để xử lý.

from langchain_community.document_loaders import DirectoryLoader, PyPDFLoader  
from langchain.text_splitter import RecursiveCharacterTextSplitter  

def load_and_process_pdfs(data_dir: str):  
    loader = DirectoryLoader(  
        data_dir,  
        glob="**/*.pdf",  
        loader_cls=PyPDFLoader  
    )  
    documents = loader.load()  

    # Tách tài liệu thành các đoạn  
    text_splitter = RecursiveCharacterTextSplitter(  
        chunk_size=1000,  
        chunk_overlap=200,  
        length_function=len,  
    )  
    return text_splitter.split_documents(documents)  

1.2 Tạo một Cửa hàng Vector

Chuyển đổi các đoạn văn bản thành các vector và lưu trữ chúng trong ChromaDB để lấy dữ liệu hiệu quả.

from langchain_huggingface import HuggingFaceEmbeddings  
from langchain_community.vectorstores import Chroma  
import os  
import shutil  

def create_vector_store(chunks, persist_directory: str):  
    if os.path.exists(persist_directory):  
        shutil.rmtree(persist_directory)  

    embeddings = HuggingFaceEmbeddings(  
        model_name="sentence-transformers/all-mpnet-base-v2",  
        model_kwargs={'device': 'cpu'}  
    )  

    vectordb = Chroma.from_documents(  
        documents=chunks,  
        embedding=embeddings,  
        persist_directory=persist_directory  
    )  
    return vectordb  

Những Lưu ý Chính

  • Kích thước Đoạn: 1000 ký tự với 200 ký tự chồng chéo cân bằng giữa việc giữ lại ngữ cảnh và hiệu quả tìm kiếm.
  • Mô hình Nhúng: all-mpnet-base-v2 cung cấp các vector câu chất lượng cao.

Bước 2: Triển khai Đại diện Suy luận với DeepSeek R1

Tại sao DeepSeek R1?

DeepSeek R1 chuyên về suy luận nhiều bước, cho phép nó phân tích các truy vấn phức tạp, suy luận các mối quan hệ và tạo ra câu trả lời có cấu trúc.

Khởi tạo Mô hình Suy luận

Cấu hình DeepSeek R1 thông qua Ollama để suy luận tại địa phương:

from smolagents import OpenAIServerModel, CodeAgent  

reasoning_model_id = "deepseek-r1:7b"  

def get_model(model_id):  
    return OpenAIServerModel(  
        model_id=model_id,  
        api_base="http://localhost:11434/v1",  
        api_key="ollama"  
    )  

reasoning_model = get_model(reasoning_model_id)  
reasoner = CodeAgent(  
    tools=[],  
    model=reasoning_model,  
    add_base_tools=False,  
    max_steps=2  # Giới hạn số lần suy luận để tăng hiệu quả  
)  

Bước 3: Xây dựng quy trình Tăng cường Tìm kiếm (RAG)

Thiết kế Công cụ

Tạo một công cụ RAG kết hợp giữa việc lấy tài liệu và khả năng suy luận của DeepSeek R1.

from smolagents import tool  

@tool  
def rag_with_reasoner(user_query: str) -> str:  
    # Lấy tài liệu liên quan  
    docs = vectordb.similarity_search(user_query, k=3)  
    context = "\n\n".join(doc.page_content for doc in docs)  

    # Tạo một yêu cầu suy luận  
    prompt = f"""  
    Dựa trên ngữ cảnh sau, hãy trả lời câu hỏi của người dùng một cách ngắn gọn.  
    Nếu thông tin không đủ, hãy gợi ý một truy vấn điều chỉnh.  

    Ngữ cảnh:  
    {context}  

    Câu hỏi: {user_query}  

    Trả lời:  
    """  

    return reasoner.run(prompt, reset=False)  

Những Tính Năng Chính

  • Các Lời Nhắc Ngữ Cảnh: Tiêm các tài liệu đã lấy vào yêu cầu để có những phản hồi có căn cứ.
  • Cơ Chế Lặp Trở Lại: Mô hình gợi ý các truy vấn tốt hơn khi dữ liệu không đủ.

Bước 4: Triển khai Đại diện AI Chính

Sắp xếp Quy trình làm việc

Đại diện chính, được hỗ trợ bởi Llama 3.2, quản lý các tương tác của người dùng và gọi công cụ RAG khi cần:

from smolagents import ToolCallingAgent, GradioUI  

tool_model = get_model("llama3.2")  
primary_agent = ToolCallingAgent(  
    tools=[rag_with_reasoner],  
    model=tool_model,  
    add_base_tools=False,  
    max_steps=3  
)  

def main():  
    GradioUI(primary_agent).launch()  

if __name__ == "__main__":  
    main()  

Giao diện Người dùng

Giao diện cung cấp một giao diện web đơn giản cho tương tác theo thời gian thực:

  • Người dùng nhập truy vấn.
  • Đại diện lấy tài liệu, suy luận với DeepSeek R1 và trả về câu trả lời.

Sự tích hợp giữa DeepSeek R1 và SmolAgents cung cấp một giải pháp AI mạnh mẽ kết hợp khả năng suy luận nâng cao để phân tích các truy vấn phức tạp, việc lấy tài liệu hiệu quả qua tìm kiếm ngữ nghĩa nhanh chóng của ChromaDB và việc triển khai địa phương tiết kiệm chi phí để tránh phụ thuộc vào các API đám mây tốn kém. Kiến trúc có thể mở rộng của nó cho phép tích hợp liền mạch các công cụ mới, làm cho nó lý tưởng cho các ứng dụng như nghiên cứu (phân tích tài liệu kỹ thuật), hỗ trợ khách hàng (giải quyết các câu hỏi thường gặp) và quản lý kiến thức (biến đổi các nguồn tĩnh thành các hệ thống tương tác).

Các cải tiến trong tương lai có thể mở rộng hỗ trợ tài liệu để bao gồm Word, HTML và markdown, tích hợp tìm kiếm web theo thời gian thực cho ngữ cảnh rộng hơn, và thực hiện các vòng phản hồi để tinh chỉnh độ chính xác của câu trả lời theo thời gian. Khung này cung cấp một nền tảng linh hoạt để xây dựng các trợ lý AI thông minh, thích ứng với nhu cầu đa dạng.