Triển khai ứng dụng LLM như một điểm cuối API bằng FastAPI trong Python
Khai mở sức mạnh của các Mô hình Ngôn ngữ Lớn (LLM) trong ứng dụng của bạn với bài blog mới nhất: "Triển khai ứng dụng LLM như một điểm cuối API bằng FastAPI trong Python." Các LLM như GPT, Claude và LLaMA đang cách mạng hóa chatbot, tạo nội dung và nhiều trường hợp sử dụng khác. Khám phá cách API đóng vai trò cầu nối then chốt, cho phép tích hợp liền mạch các tính năng hiểu và sinh ngôn ngữ tinh vi vào dự án của bạn.
Các Mô hình Ngôn ngữ Lớn (LLM) là lực lượng tiên phong của AI sinh, đang thay đổi cách máy móc hiểu và tạo ra văn bản giống con người. Những mô hình như GPT, Claude, LLaMA, Mistral, v.v. đang thúc đẩy đổi mới trong chatbot, tạo nội dung và hơn nữa, mang lại năng lực chưa từng có trong xử lý và sinh ngôn ngữ tự nhiên.
Tuy nhiên, tính hữu dụng thực sự của LLM vượt xa sức mạnh tính toán thuần túy; khả năng tiếp cận là yếu tố then chốt. API (Giao diện Lập trình Ứng dụng) đóng vai trò là cầu nối, cho phép nhiều ứng dụng khác nhau khai thác sức mạnh của LLM. Chúng giúp nhà phát triển tích hợp các tính năng hiểu và sinh ngôn ngữ tinh vi vào ứng dụng của mình, từ phân tích văn bản đơn giản đến các hệ thống hội thoại phức tạp.
Trong hướng dẫn này, chúng ta sẽ xây dựng một Ứng dụng Python đơn giản sử dụng mô hình GPT của OpenAI và phục vụ nó qua một điểm cuối API được phát triển bằng khuôn khổ FastAPI trong Python.
Các Mô hình Ngôn ngữ Lớn
Các Mô hình Ngôn ngữ Lớn (LLM) đề cập đến những hệ thống trí tuệ nhân tạo tiên tiến được thiết kế để hiểu và tạo văn bản giống con người. Các mô hình này được huấn luyện trên lượng dữ liệu khổng lồ, cho phép chúng nắm bắt các mẫu phức tạp, hiểu sắc thái ngôn ngữ và tạo ra phản hồi mạch lạc.
LLM có khả năng thực hiện nhiều tác vụ liên quan đến ngôn ngữ, bao gồm dịch thuật, hoàn thành văn bản, tóm tắt và thậm chí tham gia tương tác hội thoại. GPT là một ví dụ về LLM.
Trong bài viết này, chúng ta sẽ xây dựng một ứng dụng Python đơn giản sử dụng API GPT của OpenAI và sau đó tạo một điểm cuối REST cho ứng dụng bằng khuôn khổ FastAPI trong Python.
Giao diện Lập trình Ứng dụng (API) là xương sống của giao tiếp phần mềm, cho phép các hệ thống, ứng dụng và thiết bị khác nhau tương tác và chia sẻ dữ liệu một cách liền mạch. Nó hoạt động như một tập hợp quy tắc và giao thức cho phép các thực thể phần mềm giao tiếp, cung cấp một cách thức được định nghĩa sẵn để một ứng dụng tận dụng năng lực hoặc dữ liệu từ ứng dụng khác mà không cần hiểu cơ chế bên trong của nó.
API hiện diện khắp nơi trong hệ sinh thái số ngày nay, cung cấp năng lượng cho dịch vụ web, ứng dụng di động và điện toán đám mây, tạo điều kiện cho giao tiếp giữa các ứng dụng và tích hợp dịch vụ của bên thứ ba. Chúng đơn giản hóa quá trình phát triển bằng cách cung cấp các khối xây dựng mà nhà phát triển có thể dùng để tăng tốc tạo phần mềm mới, nâng cao chức năng và trải nghiệm người dùng mà không phải bắt đầu từ đầu.
Thông qua API, các nhà phát triển có thể mở rộng ứng dụng của mình theo những cách vốn dĩ phức tạp hoặc bất khả thi, khiến chúng trở thành thành phần quan trọng trong phát triển phần mềm hiện đại.
Nếu bạn quan tâm đến khía cạnh kỹ thuật liên quan đến triển khai mô hình học máy trong thực tế, hãy xem hướng dẫn toàn diện về Học máy, Pipeline, Triển khai và MLOps. Bạn cũng có thể tham khảo khóa học miễn phí Giới thiệu về API trên Datacamp.
FastAPI
FastAPI là một khuôn khổ Python được thiết kế để xây dựng API hiệu năng cao. Sự thăng tiến của nó dựa trên tốc độ, dễ sử dụng và khả năng tương thích với lập trình bất đồng bộ. FastAPI giúp nhà phát triển phơi bày các chức năng LLM như các điểm cuối API, giúp việc triển khai, quản lý và mở rộng dịch vụ vận hành bằng AI trở nên đơn giản hơn.
FastAPI nổi bật về hiệu năng và hiệu quả, tận dụng các tính năng Python hiện đại như gợi ý kiểu và lập trình bất đồng bộ để mang lại cải thiện tốc độ sánh ngang NodeJS và thậm chí cả Go.
Lợi thế hiệu năng này rất quan trọng cho các ứng dụng cần xử lý dữ liệu thời gian thực và xử lý đồng thời nhiều yêu cầu, chẳng hạn như các ứng dụng giao tiếp với LLM. Khả năng tự động xác thực dữ liệu đầu vào và tuần tự hóa phản hồi giúp giảm mã lặp, khiến việc phát triển API gọn gàng và trực quan hơn.
Tính năng tạo tài liệu tự động, sử dụng các tiêu chuẩn như OpenAPI, cung cấp cho nhà phát triển và người dùng tài liệu API rõ ràng, có tính tương tác, giúp đơn giản hóa hơn nữa quá trình tích hợp và kiểm thử.
Ví dụ tạo API:
from typing import Union
from fastapi import FastAPI
app = FastAPI()@app.get("/")defread_root():return{"Hello":"World"}@app.get("/items/{item_id}")defread_item(item_id:int, q: Union[str,None]=None):return{"item_id": item_id,"q": q}Được hỗ trợ bởi
Đoạn mã này tạo một máy chủ web đơn giản bằng FastAPI. Máy chủ phản hồi hai loại yêu cầu web: một yêu cầu chào người dùng bằng "Hello World" khi họ truy cập trang chủ ("/"), và một yêu cầu hiển thị ID của mục và tham số truy vấn tùy chọn "q" khi người dùng truy cập trang của một mục cụ thể ("/items/{item_id}"). ID mục là bắt buộc và phải là số nguyên, trong khi tham số truy vấn "q" là tùy chọn và có thể là một chuỗi hoặc không có.
Chạy máy chủ FastAPI với:
Xây dựng ứng dụng End-to-End trong Python
Mục đích chính của bài blog này là cho thấy cách bạn có thể nhanh chóng xây dựng các điểm cuối REST API cho ứng dụng LLM của mình. Chúng ta sẽ tạo một ứng dụng Python đơn giản (chỉ một hàm) sử dụng API OpenAI GPT-4 và dịch văn bản tiếng Anh sang tiếng Pháp. Ứng dụng này chỉ có một hàm là translate_text:
from openai import OpenAI
import os
os.environ["OPENAI_API_KEY"]="..."# Initialize OpenAI client with your API key
client = OpenAI()deftranslate_text(input_str):
completion = client.chat.completions.create(
model="gpt-4-0125-preview",
messages=[{"role":"system","content":"You are an expert translator who translates text from english to french and only return translated text",},{"role":"user","content": input_str},],)return completion.choices[0].message.contentĐược hỗ trợ bởi
Hàm này nhận một đầu vào từ người dùng và đơn giản chuyển nó cho mô hình OpenAI GPT-4. Nó có một lời nhắc hệ thống để định nghĩa ngữ cảnh và lời nhắc người dùng là văn bản chúng ta nhận được từ người dùng trong input_str.
Bạn có thể kiểm thử hàm này bằng cách chạy đoạn sau. Bạn sẽ nhận lại văn bản tiếng Pháp.
# test the function
translate_text("this is a test string to translate")Được hỗ trợ bởi
Nếu bạn định chia sẻ ứng dụng này với người khác, chỉ cần gửi tệp Python để họ chạy trên dòng lệnh có thể phù hợp với một số người dùng, đặc biệt là những người quen với Python và công cụ dòng lệnh.
Tuy nhiên, cách tiếp cận này có hạn chế. Không phải ai cũng thoải mái sử dụng dòng lệnh, và ngay cả với những người quen, việc chạy một script Python đòi hỏi môi trường Python được cài đặt đầy đủ phụ thuộc cần thiết. Điều này có thể rườm rà và tạo rào cản để người dùng dễ dàng truy cập chức năng dịch của ứng dụng.
Đây là lúc bao bọc ứng dụng của bạn bằng FastAPI để công khai nó như một điểm cuối REST API trở thành giải pháp mạnh mẽ. Bằng cách đó, bạn về bản chất đang tạo một giao diện dễ tiếp cận cho ứng dụng, có thể truy cập qua internet mà không yêu cầu người dùng tự chạy script Python. Họ có thể tương tác với ứng dụng thông qua các yêu cầu web đơn giản, có thể được gửi từ nhiều nền tảng và ngôn ngữ lập trình khác nhau, không chỉ Python.
Tạo một REST API với FastAPI sẽ tự động hóa quá trình nhận yêu cầu dịch và gửi lại bản dịch. Người dùng có thể gửi văn bản cần dịch qua giao diện web hoặc lời gọi API theo chương trình, giúp dễ dàng hơn nhiều và linh hoạt cho các trường hợp sử dụng khác nhau.
Để chuyển hàm đơn giản này thành một điểm cuối API bằng FastAPI, chúng ta sẽ chỉnh sửa mã như sau:
from fastapi import FastAPI, HTTPException
from pydantic import BaseModel
import os
os.environ["OPENAI_API_KEY"]="..."# Initialize OpenAI client with your API key
client = OpenAI()# Initialize FastAPI client
app = FastAPI()# Create class with pydantic BaseModelclassTranslationRequest(BaseModel):
input_str:strdeftranslate_text(input_str):
completion = client.chat.completions.create(
model="gpt-4-0125-preview",
messages=[{"role":"system","content":"You are an expert translator who translates text from english to french and only return translated text",},{"role":"user","content": input_str},],)return completion.choices[0].message.content
@app.post("/translate/")# This line decorates 'translate' as a POST endpointasyncdeftranslate(request: TranslationRequest):try:# Call your translation function
translated_text = translate_text(request.input_str)return{"translated_text": translated_text}except Exception as e:# Handle exceptions or errors during translationraise HTTPException(status_code=500, detail=str(e))Được hỗ trợ bởi
Để chạy và kiểm thử API này cục bộ, chỉ cần chạy lệnh sau:
Ở đây, main.py là tệp chứa mã của bạn. Thuật ngữ app trỏ đến thể hiện ứng dụng FastAPI, được xác định trong mã của bạn app = FastAPI().
Đi đến localhost:8000/docs để xem giao diện UI trông như sau:
Nhấn vào POST rồi nhấp Try it out, nhập chuỗi văn bản của bạn và bấm Execute.
Bạn sẽ thấy lệnh curl được gửi tới API, URL yêu cầu là localhost của bạn tại thời điểm này, và phản hồi của máy chủ. Mã 200 nghĩa là thành công; bên cạnh đó bạn có thể thấy bản dịch tiếng Pháp.
Kết luận
Bài blog này đã hướng dẫn thiết lập một điểm cuối API bằng FastAPI để phục vụ các ứng dụng vận hành bởi các Mô hình Ngôn ngữ Lớn như GPT. FastAPI, với hiệu năng và sự dễ dùng, cung cấp cách trực tiếp để xây dựng API hiệu suất cao, là lựa chọn lý tưởng cho các nhà phát triển muốn tích hợp LLM vào dự án của mình.
Nếu bạn muốn khám phá toàn bộ tiềm năng của LLM với một khóa học khái niệm độc đáo bao quát ứng dụng LLM, phương pháp huấn luyện, các cân nhắc đạo đức và nghiên cứu mới nhất, hãy xem khóa học miễn phí Làm chủ các Mô hình Ngôn ngữ Lớn (LLM) trên Datacamp.
Khám phá toàn bộ tiềm năng của LLM với khóa học khái niệm của chúng tôi, bao gồm các ứng dụng LLM, phương pháp đào tạo, cân nhắc đạo đức và nghiên cứu mới nhất.
Giới thiệu
Các Mô hình Ngôn ngữ Lớn (LLM) là lực lượng tiên phong của AI sinh, đang thay đổi cách máy móc hiểu và tạo ra văn bản giống con người. Những mô hình như GPT, Claude, LLaMA, Mistral, v.v. đang thúc đẩy đổi mới trong chatbot, tạo nội dung và hơn nữa, mang lại năng lực chưa từng có trong xử lý và sinh ngôn ngữ tự nhiên.
Tuy nhiên, tính hữu dụng thực sự của LLM vượt xa sức mạnh tính toán thuần túy; khả năng tiếp cận là yếu tố then chốt. API (Giao diện Lập trình Ứng dụng) đóng vai trò là cầu nối, cho phép nhiều ứng dụng khác nhau khai thác sức mạnh của LLM. Chúng giúp nhà phát triển tích hợp các tính năng hiểu và sinh ngôn ngữ tinh vi vào ứng dụng của mình, từ phân tích văn bản đơn giản đến các hệ thống hội thoại phức tạp.
Trong hướng dẫn này, chúng ta sẽ xây dựng một Ứng dụng Python đơn giản sử dụng mô hình GPT của OpenAI và phục vụ nó qua một điểm cuối API được phát triển bằng khuôn khổ FastAPI trong Python.
Các Mô hình Ngôn ngữ Lớn
Các Mô hình Ngôn ngữ Lớn (LLM) đề cập đến những hệ thống trí tuệ nhân tạo tiên tiến được thiết kế để hiểu và tạo văn bản giống con người. Các mô hình này được huấn luyện trên lượng dữ liệu khổng lồ, cho phép chúng nắm bắt các mẫu phức tạp, hiểu sắc thái ngôn ngữ và tạo ra phản hồi mạch lạc.
LLM có khả năng thực hiện nhiều tác vụ liên quan đến ngôn ngữ, bao gồm dịch thuật, hoàn thành văn bản, tóm tắt và thậm chí tham gia tương tác hội thoại. GPT là một ví dụ về LLM.
Trong bài viết này, chúng ta sẽ xây dựng một ứng dụng Python đơn giản sử dụng API GPT của OpenAI và sau đó tạo một điểm cuối REST cho ứng dụng bằng khuôn khổ FastAPI trong Python.
LLM là một dạng của AI sinh. Nếu bạn muốn tìm hiểu về AI sinh và cách nó có thể nâng cao tính sáng tạo của bạn, hãy xem các bài đăng của chúng tôi về Sử dụng AI sinh để thúc đẩy sáng tạo và podcast Bên trong cuộc cách mạng AI sinh.
Bạn cũng có thể đăng ký khóa học sắp tới của chúng tôi về Các khái niệm về Mô hình Ngôn ngữ Lớn.
API là gì?
Giao diện Lập trình Ứng dụng (API) là xương sống của giao tiếp phần mềm, cho phép các hệ thống, ứng dụng và thiết bị khác nhau tương tác và chia sẻ dữ liệu một cách liền mạch. Nó hoạt động như một tập hợp quy tắc và giao thức cho phép các thực thể phần mềm giao tiếp, cung cấp một cách thức được định nghĩa sẵn để một ứng dụng tận dụng năng lực hoặc dữ liệu từ ứng dụng khác mà không cần hiểu cơ chế bên trong của nó.
API hiện diện khắp nơi trong hệ sinh thái số ngày nay, cung cấp năng lượng cho dịch vụ web, ứng dụng di động và điện toán đám mây, tạo điều kiện cho giao tiếp giữa các ứng dụng và tích hợp dịch vụ của bên thứ ba. Chúng đơn giản hóa quá trình phát triển bằng cách cung cấp các khối xây dựng mà nhà phát triển có thể dùng để tăng tốc tạo phần mềm mới, nâng cao chức năng và trải nghiệm người dùng mà không phải bắt đầu từ đầu.
Thông qua API, các nhà phát triển có thể mở rộng ứng dụng của mình theo những cách vốn dĩ phức tạp hoặc bất khả thi, khiến chúng trở thành thành phần quan trọng trong phát triển phần mềm hiện đại.
Nguồn ảnh
Nếu bạn quan tâm đến khía cạnh kỹ thuật liên quan đến triển khai mô hình học máy trong thực tế, hãy xem hướng dẫn toàn diện về Học máy, Pipeline, Triển khai và MLOps. Bạn cũng có thể tham khảo khóa học miễn phí Giới thiệu về API trên Datacamp.
FastAPI
FastAPI là một khuôn khổ Python được thiết kế để xây dựng API hiệu năng cao. Sự thăng tiến của nó dựa trên tốc độ, dễ sử dụng và khả năng tương thích với lập trình bất đồng bộ. FastAPI giúp nhà phát triển phơi bày các chức năng LLM như các điểm cuối API, giúp việc triển khai, quản lý và mở rộng dịch vụ vận hành bằng AI trở nên đơn giản hơn.
FastAPI nổi bật về hiệu năng và hiệu quả, tận dụng các tính năng Python hiện đại như gợi ý kiểu và lập trình bất đồng bộ để mang lại cải thiện tốc độ sánh ngang NodeJS và thậm chí cả Go.
Lợi thế hiệu năng này rất quan trọng cho các ứng dụng cần xử lý dữ liệu thời gian thực và xử lý đồng thời nhiều yêu cầu, chẳng hạn như các ứng dụng giao tiếp với LLM. Khả năng tự động xác thực dữ liệu đầu vào và tuần tự hóa phản hồi giúp giảm mã lặp, khiến việc phát triển API gọn gàng và trực quan hơn.
Tính năng tạo tài liệu tự động, sử dụng các tiêu chuẩn như OpenAPI, cung cấp cho nhà phát triển và người dùng tài liệu API rõ ràng, có tính tương tác, giúp đơn giản hóa hơn nữa quá trình tích hợp và kiểm thử.
Ví dụ tạo API:
Đoạn mã này tạo một máy chủ web đơn giản bằng FastAPI. Máy chủ phản hồi hai loại yêu cầu web: một yêu cầu chào người dùng bằng "Hello World" khi họ truy cập trang chủ ("/"), và một yêu cầu hiển thị ID của mục và tham số truy vấn tùy chọn "q" khi người dùng truy cập trang của một mục cụ thể ("/items/{item_id}"). ID mục là bắt buộc và phải là số nguyên, trong khi tham số truy vấn "q" là tùy chọn và có thể là một chuỗi hoặc không có.
Chạy máy chủ FastAPI với:
Xây dựng ứng dụng End-to-End trong Python
Mục đích chính của bài blog này là cho thấy cách bạn có thể nhanh chóng xây dựng các điểm cuối REST API cho ứng dụng LLM của mình. Chúng ta sẽ tạo một ứng dụng Python đơn giản (chỉ một hàm) sử dụng API OpenAI GPT-4 và dịch văn bản tiếng Anh sang tiếng Pháp. Ứng dụng này chỉ có một hàm là
translate_text:Hàm này nhận một đầu vào từ người dùng và đơn giản chuyển nó cho mô hình OpenAI GPT-4. Nó có một lời nhắc hệ thống để định nghĩa ngữ cảnh và lời nhắc người dùng là văn bản chúng ta nhận được từ người dùng trong
input_str.Bạn có thể kiểm thử hàm này bằng cách chạy đoạn sau. Bạn sẽ nhận lại văn bản tiếng Pháp.
Nếu bạn định chia sẻ ứng dụng này với người khác, chỉ cần gửi tệp Python để họ chạy trên dòng lệnh có thể phù hợp với một số người dùng, đặc biệt là những người quen với Python và công cụ dòng lệnh.
Tuy nhiên, cách tiếp cận này có hạn chế. Không phải ai cũng thoải mái sử dụng dòng lệnh, và ngay cả với những người quen, việc chạy một script Python đòi hỏi môi trường Python được cài đặt đầy đủ phụ thuộc cần thiết. Điều này có thể rườm rà và tạo rào cản để người dùng dễ dàng truy cập chức năng dịch của ứng dụng.
Đây là lúc bao bọc ứng dụng của bạn bằng FastAPI để công khai nó như một điểm cuối REST API trở thành giải pháp mạnh mẽ. Bằng cách đó, bạn về bản chất đang tạo một giao diện dễ tiếp cận cho ứng dụng, có thể truy cập qua internet mà không yêu cầu người dùng tự chạy script Python. Họ có thể tương tác với ứng dụng thông qua các yêu cầu web đơn giản, có thể được gửi từ nhiều nền tảng và ngôn ngữ lập trình khác nhau, không chỉ Python.
Tạo một REST API với FastAPI sẽ tự động hóa quá trình nhận yêu cầu dịch và gửi lại bản dịch. Người dùng có thể gửi văn bản cần dịch qua giao diện web hoặc lời gọi API theo chương trình, giúp dễ dàng hơn nhiều và linh hoạt cho các trường hợp sử dụng khác nhau.
Để chuyển hàm đơn giản này thành một điểm cuối API bằng FastAPI, chúng ta sẽ chỉnh sửa mã như sau:
Để chạy và kiểm thử API này cục bộ, chỉ cần chạy lệnh sau:
Ở đây, main.py là tệp chứa mã của bạn. Thuật ngữ app trỏ đến thể hiện ứng dụng FastAPI, được xác định trong mã của bạn
app = FastAPI().Đi đến localhost:8000/docs để xem giao diện UI trông như sau:
Nhấn vào POST rồi nhấp Try it out, nhập chuỗi văn bản của bạn và bấm Execute.
Bạn sẽ thấy lệnh curl được gửi tới API, URL yêu cầu là localhost của bạn tại thời điểm này, và phản hồi của máy chủ. Mã 200 nghĩa là thành công; bên cạnh đó bạn có thể thấy bản dịch tiếng Pháp.
Kết luận
Bài blog này đã hướng dẫn thiết lập một điểm cuối API bằng FastAPI để phục vụ các ứng dụng vận hành bởi các Mô hình Ngôn ngữ Lớn như GPT. FastAPI, với hiệu năng và sự dễ dùng, cung cấp cách trực tiếp để xây dựng API hiệu suất cao, là lựa chọn lý tưởng cho các nhà phát triển muốn tích hợp LLM vào dự án của mình.
Nếu bạn muốn khám phá toàn bộ tiềm năng của LLM với một khóa học khái niệm độc đáo bao quát ứng dụng LLM, phương pháp huấn luyện, các cân nhắc đạo đức và nghiên cứu mới nhất, hãy xem khóa học miễn phí Làm chủ các Mô hình Ngôn ngữ Lớn (LLM) trên Datacamp.
Bạn đang muốn mở rộng bộ kỹ năng và công cụ? Hãy tìm hiểu về 21 công cụ Python thiết yếu cho phát triển phần mềm, thu thập dữ liệu web và phát triển web, phân tích và trực quan hóa dữ liệu, cũng như học máy.