Chinh Phục RAG Với Vercel AI SDK: Nâng Tầm Chatbot AI Mã Nguồn Mở Của Bạn
API & SDK AI

Chinh Phục RAG Với Vercel AI SDK: Nâng Tầm Chatbot AI Mã Nguồn Mở Của Bạn

Giới Thiệu Chinh Phục RAG Với Vercel AI SDK: Nâng Tầm Chatbot AI Mã Nguồn Mở Của Bạn

Trong kỷ nguyên AI bùng nổ, việc xây dựng các chatbot thông minh, có khả năng truy xuất thông tin chính xác và cập nhật đã trở thành một yêu cầu thiết yếu. Tuy nhiên, các mô hình ngôn ngữ lớn (LLM) dù mạnh mẽ đến đâu cũng có những hạn chế cố hữu về kiến thức (knowledge cut-off) và khả năng "hallucinate" (bịa đặt thông tin). Đây chính là lúc kỹ thuật Retrieval-Augmented Generation (RAG) phát huy sức mạnh. Bài viết về rag vercel ai sdk này sẽ giúp bạn hiểu rõ từ góc nhìn thực tế cách tích hợp RAG vào chatbot AI mã nguồn mở của bạn, đặc biệt khi kết hợp với Vercel AI SDK, một công cụ mạnh mẽ giúp đơn giản hóa quá trình phát triển ứng dụng AI.

Chinh Phục RAG Với Vercel AI SDK: Nâng Tầm Chatbot AI Mã Nguồn Mở Của Bạn
Minh họa: Chinh Phục RAG Với Vercel AI SDK: Nâng Tầm Chatbot AI Mã Nguồn Mở Của Bạn (Nguồn ảnh: assets.tina.io)

Retrieval-Augmented Generation (RAG): Giải Pháp Cho Thách Thức LLM

RAG là một kỹ thuật tiên tiến giúp cải thiện đáng kể hiệu suất của các mô hình ngôn ngữ lớn bằng cách cung cấp cho chúng khả năng truy xuất thông tin từ một nguồn kiến thức bên ngoài, cụ thể và đáng tin cậy. Thay vì chỉ dựa vào kiến thức đã được huấn luyện, một hệ thống RAG sẽ thực hiện hai bước chính khi nhận được truy vấn từ người dùng: đầu tiên, nó truy xuất (retrieve) các đoạn văn bản liên quan nhất từ một cơ sở dữ liệu (vector database) chứa dữ liệu chuyên biệt của bạn; sau đó, nó sử dụng các đoạn văn bản này để bổ sung (augment) cho prompt gốc trước khi gửi đến LLM để tạo ra phản hồi (generate). Điều này giúp LLM đưa ra câu trả lời chính xác hơn, có căn cứ và giảm thiểu hiện tượng "hallucinate".

AI coding tools
Công cụ AI coding hiện đại (Nguồn ảnh: thumbs.dreamstime.com)

Hãy hình dung bạn đang xây dựng một chatbot hỗ trợ khách hàng cho một công ty công nghệ. Nếu chỉ dựa vào LLM thông thường, chatbot có thể không biết về các chính sách bảo hành mới nhất, các sản phẩm vừa ra mắt hoặc các lỗi phần mềm đặc thù. Với RAG, bạn có thể "nhồi nhét" toàn bộ tài liệu, FAQ, và thông tin sản phẩm vào một cơ sở dữ liệu vector. Khi khách hàng hỏi về một vấn đề cụ thể, hệ thống RAG sẽ tìm kiếm các tài liệu liên quan, trích xuất thông tin cần thiết và sử dụng chúng để "hướng dẫn" LLM tạo ra câu trả lời chính xác, thay vì để LLM tự "suy diễn" hoặc trả lời chung chung.

Một hệ thống RAG điển hình bao gồm các thành phần chính sau: một cơ sở dữ liệu vector (như Pinecone, Weaviate, ChromaDB), một cơ chế nhúng (embedding model) để chuyển đổi văn bản thành vector số, và một orchestrator để điều phối quá trình truy xuất và tạo sinh. Sự kết hợp này mang lại khả năng tùy biến cao, cho phép bạn kiểm soát chặt chẽ nguồn thông tin mà chatbot sử dụng, điều mà các LLM "đen" không thể làm được.

Vercel AI SDK: Đơn Giản Hóa Phát Triển AI Web

Vercel AI SDK là một thư viện mã nguồn mở mạnh mẽ được thiết kế để giúp các nhà phát triển xây dựng các ứng dụng AI tương tác một cách dễ dàng và nhanh chóng, đặc biệt trong môi trường React, Next.js. Nó cung cấp các hook và component tiện lợi để xử lý streaming responses từ các LLM, quản lý trạng thái cuộc trò chuyện, và tích hợp các công cụ AI khác. Với Vercel AI SDK, bạn không cần phải lo lắng về việc quản lý các kết nối API phức tạp hay xử lý dữ liệu streaming thô; SDK sẽ lo liệu phần lớn công việc đó cho bạn.

Vibe coding workflow
Vibe coding trong thực tế (Nguồn ảnh: assets.tina.io)

SDK này hỗ trợ nhiều nhà cung cấp LLM phổ biến như OpenAI, Anthropic, Google Gemini, và thậm chí cả các mô hình mã nguồn mở chạy cục bộ. Điều này mang lại sự linh hoạt tối đa cho nhà phát triển trong việc lựa chọn công cụ phù hợp với nhu cầu và ngân sách của mình. Giao diện API nhất quán giúp bạn dễ dàng chuyển đổi giữa các nhà cung cấp mà không cần thay đổi quá nhiều code.

Một trong những tính năng nổi bật của Vercel AI SDK là khả năng xử lý streaming responses. Khi một LLM tạo ra câu trả lời, nó thường gửi từng token một. Vercel AI SDK được tối ưu hóa để hiển thị các phản hồi này theo thời gian thực, mang lại trải nghiệm người dùng mượt mà và tự nhiên hơn, tương tự như cách ChatGPT hoạt động. Điều này cực kỳ quan trọng đối với các chatbot, nơi tốc độ phản hồi là yếu tố then chốt để giữ chân người dùng.

Tóm lại, Vercel AI SDK không chỉ là một thư viện; nó là một hệ sinh thái giúp bạn tập trung vào logic kinh doanh và trải nghiệm người dùng thay vì sa lầy vào các chi tiết kỹ thuật của việc tích hợp AI. Khi kết hợp với RAG, nó trở thành một cặp đôi hoàn hảo để xây dựng các chatbot AI mạnh mẽ, chính xác và dễ bảo trì.

Hướng Dẫn Thực Hành: Xây Dựng Chatbot RAG Với Vercel AI SDK

Để minh họa cách xây dựng một chatbot RAG sử dụng Vercel AI SDK, chúng ta sẽ đi qua các bước cơ bản. Giả sử bạn đã có một cơ sở dữ liệu vector (ví dụ: Pinecone) chứa các tài liệu đã được nhúng. Nếu chưa, bạn cần chuẩn bị dữ liệu, chọn một embedding model (ví dụ: text-embedding-ada-002 của OpenAI) và nhúng chúng vào vector database. Trong ví dụ này, chúng ta sẽ tập trung vào phần tích hợp backend và frontend.

AI-assisted programming
Lập trình với sự hỗ trợ của AI (Nguồn ảnh: miro.medium.com)

Bước 1: Cài đặt các thư viện cần thiết

Đầu tiên, tạo một dự án Next.js mới và cài đặt các dependency:

npx create-next-app@latest my-rag-chatbot --ts
cd my-rag-chatbot
npm install ai openai pinecone-client dotenv
# Hoặc yarn add ai openai pinecone-client dotenv

Bước 2: Cấu hình môi trường

Tạo file .env ở thư mục gốc và thêm các biến môi trường của bạn:

OPENAI_API_KEY=YOUR_OPENAI_API_KEY
PINECONE_API_KEY=YOUR_PINECONE_API_KEY
PINECONE_ENVIRONMENT=YOUR_PINECONE_ENVIRONMENT
PINECONE_INDEX_NAME=YOUR_PINECONE_INDEX_NAME

Bước 3: Xây dựng API Route (Backend)

Tạo một API route trong Next.js (ví dụ: app/api/chat/route.ts) để xử lý logic RAG. Đây là nơi chúng ta sẽ truy vấn Pinecone và sau đó gọi OpenAI.

import { PineconeClient } from '@pinecone-database/pinecone';
import { OpenAIEmbeddings } from 'langchain/embeddings/openai'; // Hoặc @openai/openai-js nếu không dùng Langchain
import { OpenAI } from 'langchain/llms/openai'; // Hoặc @openai/openai-js
import { NextRequest, NextResponse } from 'next/server';
import { Message, streamText } from 'ai'; // Từ Vercel AI SDK

export const runtime = 'edge';

const pinecone = new PineconeClient();

export async function POST(req: NextRequest) {
  try {
    // 1. Khởi tạo Pinecone và OpenAI
    await pinecone.init({
      environment: process.env.PINECONE_ENVIRONMENT!,
      apiKey: process.env.PINECONE_API_KEY!,
    });

    const index = pinecone.Index(process.env.PINECONE_INDEX_NAME!);
    const embeddings = new OpenAIEmbeddings({
      openAIApiKey: process.env.OPENAI_API_KEY!,
    });
    const llm = new OpenAI({
      openAIApiKey: process.env.OPENAI_API_KEY!,
      temperature: 0.7,
      modelName: 'gpt-3.5-turbo', // Hoặc gpt-4
    });

    const { messages } = await req.json();
    const lastUserMessage = messages[messages.length - 1].content;

    // 2. Tạo embedding cho câu hỏi của người dùng
    const queryEmbedding = await embeddings.embedQuery(lastUserMessage);

    // 3. Truy vấn Pinecone để tìm các tài liệu liên quan
    const queryResult = await index.query({
      queryRequest: {
        vector: queryEmbedding,
        topK: 3, // Lấy 3 tài liệu liên quan nhất
        includeMetadata: true,
      },
    });

    let context = '';
    if (queryResult.matches && queryResult.matches.length > 0) {
      context = queryResult.matches
        .map((match) => (match.metadata as any)?.text)
        .filter(Boolean)
        .join('\n\n');
    }

    // 4. Xây dựng prompt cho LLM với context
    const prompt = `Bạn là một trợ lý AI hữu ích. Hãy trả lời câu hỏi dựa trên ngữ cảnh sau đây:
    ${context}

    Nếu câu hỏi không liên quan đến ngữ cảnh, hãy nói rằng bạn không thể trả lời.

    Câu hỏi: ${lastUserMessage}`;

    // 5. Gửi prompt đến LLM và stream kết quả
    const result = await streamText({
      model: llm,
      prompt: prompt,
      messages: messages.slice(0, -1), // Lịch sử trò chuyện trước đó (tùy chọn)
    });

    return result.to
    Response();
  } catch (error) {
    console.error('Error in RAG API:', error);
    return NextResponse.json({ error: 'Internal Server Error' }, { status: 500 });
  }
}

Bước 4: Xây dựng Frontend với Vercel AI SDK

Sử dụng hook useChat từ Vercel AI SDK để quản lý trạng thái trò chuyện và gửi yêu cầu đến API route. (Ví dụ: app/page.tsx)

'use client';
import { useChat } from 'ai/react';

export default function Chat() {
  const { messages, input, handleInputChange, handleSubmit } = useChat();

  return (
    <div className="flex flex-col w-full max-w-md py-24 mx-auto stretch">
      {messages.map((m) => (
        <div key={m.id} className="whitespace-pre-wrap">
          <strong>{m.role === 'user' ? 'Người dùng: ' : 'AI: '}</strong>
          {m.content}
        </div>
      ))}

      <form onSubmit={handleSubmit} className="fixed bottom-0 w-full max-w-md p-2 flex">
        <input
          className="flex-grow border border-gray-300 rounded shadow-xl p-2"
          value={input}
          placeholder="Hỏi tôi bất cứ điều gì..."
          onChange={handleInputChange}
        />
        <button
          type="submit"
          className="ml-2 px-4 py-2 bg-blue-500 text-white rounded shadow-xl"
        >
          Gửi
        </button>
      </form>
    </div>
  );
}

Với các bước trên, bạn đã có một chatbot RAG cơ bản. Khi người dùng nhập câu hỏi, backend sẽ truy vấn Pinecone để lấy ngữ cảnh liên quan, sau đó kết hợp ngữ cảnh đó với câu hỏi gốc để gửi đến OpenAI. Vercel AI SDK sẽ xử lý việc hiển thị phản hồi streaming trên giao diện người dùng.

Tips và Best Practices Khi Triển Khai RAG Với Vercel AI SDK

Để tối ưu hóa hiệu suất và trải nghiệm người dùng của chatbot RAG, có một số tips và best practices bạn nên cân nhắc:

  • Tối ưu hóa Chunking và Embedding: Cách bạn chia nhỏ tài liệu (chunking) và tạo embedding ảnh hưởng lớn đến chất lượng truy xuất. Hãy thử nghiệm với các kích thước chunk khác nhau (ví dụ: 256, 512, 1024 tokens) và các chiến lược chồng lấp (overlapping) để đảm bảo ngữ cảnh được bảo toàn. Sử dụng các embedding model chất lượng cao và phù hợp với ngôn ngữ của bạn.
  • Lọc và Xếp hạng Kết quả Truy xuất: Không phải tất cả các tài liệu được truy xuất đều hữu ích. Hãy xem xét việc thêm các bước lọc (ví dụ: dựa trên siêu dữ liệu) hoặc xếp hạng lại (reranking) các kết quả truy xuất để chỉ chọn những thông tin thực sự liên quan nhất. Các thuật toán reranking có thể cải thiện đáng kể độ chính xác của RAG.
  • Quản lý Lịch sử Cuộc trò chuyện: Để chatbot có thể duy trì ngữ cảnh trong suốt cuộc trò chuyện, bạn cần truyền lịch sử các tin nhắn trước đó đến LLM. Vercel AI SDK hỗ trợ điều này thông qua mảng messages. Tuy nhiên, hãy cẩn thận với độ dài của lịch sử để tránh vượt quá giới hạn token của LLM và tăng chi phí.
  • Xử lý Các Trường hợp Không có Ngữ cảnh: Nếu không tìm thấy ngữ cảnh liên quan nào, hãy chỉ thị rõ ràng cho LLM biết điều đó. Ví dụ, trong prompt, bạn có thể thêm câu "Nếu câu hỏi không liên quan đến ngữ cảnh, hãy nói rằng bạn không thể trả lời." Điều này giúp tránh việc LLM "hallucinate" thông tin.
  • Giám sát và Tinh chỉnh: Triển khai RAG không phải là một lần rồi xong. Hãy liên tục giám sát các tương tác của chatbot, thu thập phản hồi từ người dùng và tinh chỉnh lại cơ sở dữ liệu, các tham số truy vấn và prompt để cải thiện chất lượng câu trả lời theo thời gian.
  • Bảo mật Dữ liệu: Khi làm việc với dữ liệu nhạy cảm, hãy đảm bảo rằng cơ sở dữ liệu vector của bạn được bảo mật đúng cách và tuân thủ các quy định về quyền riêng tư. Không gửi thông tin cá nhân nhạy cảm trực tiếp vào các embedding model của bên thứ ba nếu không cần thiết.

So Sánh RAG Với Các Phương Pháp Khác và Đánh Giá Vercel AI SDK

Khi xây dựng các ứng dụng AI, RAG không phải là lựa chọn duy nhất. Các phương pháp khác bao gồm fine-tuning một LLM, hoặc chỉ đơn giản là sử dụng một LLM "out-of-the-box". Tuy nhiên, RAG nổi bật với những ưu điểm và trường hợp sử dụng riêng:

  1. RAG vs. Fine-tuning: Fine-tuning là quá trình huấn luyện thêm một LLM đã có bằng dữ liệu chuyên biệt của bạn. Ưu điểm là LLM sẽ "học" được phong cách và kiến thức mới một cách sâu sắc hơn. Nhược điểm là tốn kém về tài nguyên tính toán, thời gian và dữ liệu cần có cấu trúc tốt. RAG thì nhanh hơn, rẻ hơn và dễ dàng cập nhật kiến thức mới mà không cần huấn luyện lại mô hình. Nó phù hợp khi bạn cần cung cấp thông tin cập nhật liên tục hoặc khi dữ liệu của bạn quá lớn để fine-tune hiệu quả.
  2. RAG vs. LLM Out-of-the-box: Sử dụng LLM trực tiếp đơn giản nhất nhưng bị giới hạn bởi kiến thức đã được huấn luyện. RAG khắc phục điều này bằng cách mở rộng kiến thức của LLM với dữ liệu bên ngoài, mang lại độ chính xác cao hơn cho các truy vấn chuyên biệt.

Về Vercel AI SDK, nó thực sự là một công cụ xuất sắc cho các nhà phát triển web muốn tích hợp AI vào ứng dụng của mình. Điểm mạnh lớn nhất là sự đơn giản và khả năng xử lý streaming responses một cách tự động. SDK này giúp bạn tập trung vào việc tạo ra trải nghiệm người dùng tuyệt vời thay vì loay hoay với các API phức tạp. Khả năng hỗ trợ đa dạng các nhà cung cấp LLM cũng là một điểm cộng lớn, mang lại sự linh hoạt và khả năng mở rộng cho dự án.

Tuy nhiên, Vercel AI SDK chủ yếu là một thư viện frontend/backend proxy. Nó không cung cấp các giải pháp RAG "out-of-the-box" mà bạn vẫn cần tự xây dựng logic truy vấn cơ sở dữ liệu vector và tạo prompt. Điều này không phải là nhược điểm mà là cách tiếp cận linh hoạt, cho phép bạn chọn lựa các thư viện RAG backend (như LangChain hay LlamaIndex) và cơ sở dữ liệu vector phù hợp nhất với nhu cầu của mình.

Các Lưu Ý Quan Trọng

  • Chi phí: Việc sử dụng các mô hình embedding và LLM từ các nhà cung cấp như OpenAI đều có chi phí. Hãy theo dõi mức độ sử dụng và tối ưu hóa số lượng truy vấn, kích thước context để quản lý chi phí hiệu quả.
  • Độ trễ (Latency): Quá trình RAG bao gồm nhiều bước (tạo embedding, truy vấn DB vector, gọi LLM). Mỗi bước đều có thể gây ra độ trễ. Tối ưu hóa hiệu suất của cơ sở dữ liệu vector và chọn các LLM có độ trễ thấp là quan trọng.
  • Chất lượng Dữ liệu: "Garbage In, Garbage Out". Chất lượng của dữ liệu trong cơ sở dữ liệu vector của bạn quyết định trực tiếp đến chất lượng của các phản hồi RAG. Đảm bảo dữ liệu sạch, chính xác và được cập nhật.
  • Kỹ thuật Prompt Engineering: Cách bạn xây dựng prompt cho LLM, đặc biệt là cách bạn đưa ngữ cảnh vào, có ảnh hưởng lớn đến kết quả. Hãy thử nghiệm với các cấu trúc prompt khác nhau để tìm ra cái hoạt động tốt nhất.
  • Xử lý Lỗi và Fallback: Luôn có kế hoạch xử lý lỗi. Nếu Pinecone không thể truy vấn hoặc OpenAI gặp sự cố, chatbot của bạn nên có một cơ chế fallback để thông báo cho người dùng hoặc thử lại.
  • Khả năng Mở rộng: Khi ứng dụng của bạn phát triển, bạn cần đảm bảo rằng cơ sở dữ liệu vector và API LLM có thể mở rộng để đáp ứng lượng truy vấn ngày càng tăng.
  • Tuân thủ Pháp lý: Nếu xử lý thông tin cá nhân hoặc dữ liệu nhạy cảm, hãy đảm bảo tuân thủ các quy định như GDPR, HIPAA. Vị trí lưu trữ dữ liệu và cách xử lý dữ liệu phải được xem xét kỹ lưỡng.

Câu Hỏi Thường Gặp

RAG có thể thay thế hoàn toàn fine-tuning không?

Không hoàn toàn. RAG và fine-tuning là hai kỹ thuật bổ trợ nhau. RAG xuất sắc trong việc cung cấp thông tin cập nhật và cụ thể từ một kho tài liệu lớn mà không cần huấn luyện lại mô hình. Fine-tuning giúp LLM học được phong cách, định dạng và các sắc thái ngôn ngữ đặc thù của miền dữ liệu của bạn, tạo ra phản hồi tự nhiên và phù hợp hơn. Trong nhiều trường hợp, sự kết hợp của cả hai (ví dụ: fine-tune LLM cho phong cách, sau đó dùng RAG để cung cấp kiến thức) mang lại hiệu quả tốt nhất.

Làm thế nào để chọn một cơ sở dữ liệu vector phù hợp?

Việc lựa chọn cơ sở dữ liệu vector phụ thuộc vào nhiều yếu tố: quy mô dữ liệu của bạn, yêu cầu về độ trễ, chi phí, khả năng mở rộng, và các tính năng cụ thể (như lọc siêu dữ liệu, hỗ trợ đa ngôn ngữ). Các lựa chọn phổ biến bao gồm Pinecone (managed service), Weaviate (open-source với nhiều tính năng), ChromaDB (nhẹ, dễ triển khai), Qdrant. Hãy đánh giá chúng dựa trên nhu cầu dự án của bạn.

Vercel AI SDK có hỗ trợ các mô hình AI mã nguồn mở (ví dụ: Llama 2) không?

Có. Vercel AI SDK được thiết kế để hoạt động với bất kỳ mô hình ngôn ngữ nào có thể được truy cập qua một API, bao gồm cả các mô hình mã nguồn mở như Llama 2 nếu bạn host chúng trên một dịch vụ có API tương thích (ví dụ: Replicate, Hugging Face Inference API, hoặc tự host). SDK cung cấp một giao diện trừu tượng, giúp bạn dễ dàng chuyển đổi giữa các nhà cung cấp mà không cần thay đổi code ở frontend.

Kết Luận

Việc kết hợp Retrieval-Augmented Generation (RAG) với Vercel AI SDK mở ra cánh cửa cho việc xây dựng các chatbot AI mã nguồn mở không chỉ thông minh mà còn chính xác, đáng tin cậy và có khả năng truy cập thông tin cập nhật. RAG giải quyết các hạn chế về kiến thức của LLM, trong khi Vercel AI SDK đơn giản hóa đáng kể quá trình phát triển, giúp bạn tập trung vào việc tạo ra trải nghiệm người dùng xuất sắc.

Chúng ta đã cùng nhau khám phá các khái niệm cốt lõi, đi qua một ví dụ thực tế và thảo luận về các best practices quan trọng. Hy vọng rằng bài viết này đã cung cấp cho bạn những kiến thức và công cụ cần thiết để bắt đầu hành trình xây dựng các ứng dụng AI mạnh mẽ của riêng mình. Nếu bạn có bất kỳ thắc mắc nào hoặc muốn tìm hiểu sâu hơn về các công nghệ AI, hãy ghé thăm vibe coding để cập nhật những thông tin mới nhất và cùng nhau chia sẻ kiến thức.

Chia sẻ:

Câu hỏi thường gặp

RAG có thể thay thế hoàn toàn fine-tuning không?
Không hoàn toàn. RAG và fine-tuning là hai kỹ thuật bổ trợ nhau. RAG xuất sắc trong việc cung cấp thông tin cập nhật và cụ thể từ một kho tài liệu lớn mà không cần huấn luyện lại mô hình. Fine-tuning giúp LLM học được phong cách, định dạng và các sắc thái ngôn ngữ đặc thù của miền dữ liệu của bạn, tạo ra phản hồi tự nhiên và phù hợp hơn. Trong nhiều trường hợp, sự kết hợp của cả hai (ví dụ: fine-tune LLM cho phong cách, sau đó dùng RAG để cung cấp kiến thức) mang lại hiệu quả tốt nhất.
Làm thế nào để chọn một cơ sở dữ liệu vector phù hợp?
Việc lựa chọn cơ sở dữ liệu vector phụ thuộc vào nhiều yếu tố: quy mô dữ liệu của bạn, yêu cầu về độ trễ, chi phí, khả năng mở rộng, và các tính năng cụ thể (như lọc siêu dữ liệu, hỗ trợ đa ngôn ngữ). Các lựa chọn phổ biến bao gồm Pinecone (managed service), Weaviate (open-source với nhiều tính năng), ChromaDB (nhẹ, dễ triển khai), Qdrant. Hãy đánh giá chúng dựa trên nhu cầu dự án của bạn.
Vercel AI SDK có hỗ trợ các mô hình AI mã nguồn mở (ví dụ: Llama 2) không?
Có. Vercel AI SDK được thiết kế để hoạt động với bất kỳ mô hình ngôn ngữ nào có thể được truy cập qua một API, bao gồm cả các mô hình mã nguồn mở như Llama 2 nếu bạn host chúng trên một dịch vụ có API tương thích (ví dụ: Replicate, Hugging Face Inference API, hoặc tự host). SDK cung cấp một giao diện trừu tượng, giúp bạn dễ dàng chuyển đổi giữa các nhà cung cấp mà không cần thay đổi code ở frontend.
MỤC LỤC
MỤC LỤC