Tracks
Azure OpenAI cho phép truy cập các mô hình của OpenAI, như GPT-4, thông qua nền tảng dịch vụ đám mây Azure.
Trong hướng dẫn này, tôi giới thiệu Azure OpenAI và cách bắt đầu. Chúng ta sẽ tìm hiểu cách tạo tài khoản, triển khai một mô hình AI và thực hiện một số tác vụ đơn giản bằng API.
Azure OpenAI là gì?
Azure cung cấp đầy đủ dịch vụ web, từ cơ sở dữ liệu SQL đến kho dữ liệu và giải pháp phân tích như Azure Synapse. Nhiều người dùng các dịch vụ này cần tích hợp các mô hình của OpenAI vào quy trình làm việc của họ.
Phương thức truyền thống để truy cập các mô hình của OpenAI là thông qua OpenAI API. Azure OpenAI là dịch vụ của Microsoft cung cấp các mô hình của OpenAI qua nền tảng Azure. Nó cho phép người dùng Azure tích hợp các dịch vụ của OpenAI (xử lý ngôn ngữ tự nhiên, sinh mã, tạo ảnh và nhiều hơn nữa) vào hạ tầng dựa trên Azure.
Nhờ đó, nhà phát triển không cần học một nền tảng dịch vụ web mới và tích hợp vào quy trình. Vì dựa trên nền tảng Azure, dịch vụ dễ mở rộng và xử lý tải lớn. Nhà phát triển và tổ chức sử dụng Azure có thể dùng cùng giao diện quen thuộc để cấp phát, quản lý, giám sát và lập ngân sách cho các dịch vụ AI. Việc quản lý tuân thủ và quy trình thanh toán cũng thuận tiện hơn.
Thiết lập Azure OpenAI
Trong phần này, tôi hướng dẫn cách thiết lập Azure OpenAI. Tôi giả định bạn đã có một ít kinh nghiệm sử dụng Azure.
Lưu ý giao diện người dùng thay đổi thường xuyên. Vì vậy, bố cục và văn bản của các mục và tiêu đề trong hướng dẫn và ảnh chụp màn hình có thể thay đổi theo thời gian hoặc theo khu vực.
Bước 1: Tạo tài khoản Azure
Vào trang chủ Azure OpenAI và chọn Sign in ở góc trên bên phải. Đăng nhập bằng tài khoản Microsoft. Nếu bạn chưa có tài khoản Microsoft, chọn tùy chọn tạo tài khoản mới trên trang đăng nhập và tạo tài khoản Microsoft.
Sau đó, tạo tài khoản Azure theo các bước sau:
- Đăng nhập bằng tài khoản Microsoft của bạn trên Azure Portal. Chọn tùy chọn Start with an Azure free trial.

Cổng thông tin Microsoft Azure.
- Ở trang tiếp theo, chọn tùy chọn tạo Azure free account với 200 USD tín dụng miễn phí.

Chọn loại tài khoản Azure.
- Điền thông tin cá nhân của bạn vào biểu mẫu.

Tạo tài khoản Azure miễn phí.
- Xác minh danh tính bằng thẻ tín dụng hoặc thẻ ghi nợ. Lưu ý có thể sẽ có khoản tạm giữ (thường chỉ vài xu hoặc tương đương) được trừ từ tài khoản của bạn.

Xác minh tài khoản Azure của bạn (ảnh chụp màn hình của tác giả)
- Sau khi xác minh thông tin thanh toán, chọn Go to Azure Portal. Bạn sẽ được chuyển đến Quickstart Center.
- Lưu ý 200 USD tín dụng miễn phí không thể dùng cho dịch vụ Azure OpenAI. Các mô hình Azure OpenAI chỉ có thể truy cập bằng tài khoản trả phí. Để nâng cấp tài khoản sang gói trả theo mức dùng (pay-as-you-go), quay lại Azure portal và chọn Upgrade trên thanh trên cùng.

Nâng cấp tài khoản Azure của bạn.
- Điền thông tin trên trang nâng cấp và chọn Upgrade to pay as you go.
Sau khi nâng cấp lên tài khoản trả phí, bạn có thể truy cập các mô hình OpenAI.
Bước 2: Truy cập Azure OpenAI trong Azure portal
- Quay lại Azure portal, nơi hiển thị nhiều dịch vụ như AI services, máy ảo, tài khoản lưu trữ, v.v.

Azure portal hiển thị các dịch vụ sẵn có.
- Chọn Azure AI services để vào trang chủ của dịch vụ AI. Azure cung cấp nhiều dịch vụ dựa trên AI như nhận diện khuôn mặt, phát hiện bất thường, giọng nói, thị giác máy tính, OpenAI, v.v.

Azure AI services.
- Trong thẻ Azure OpenAI account, chọn tùy chọn View.
- Thao tác này dẫn đến trang Azure OpenAI hiển thị danh sách các instance OpenAI trong tài khoản của bạn. Chọn Create Azure OpenAI để tạo instance mới. Bạn cũng có thể chọn Create ở trang trước.
- Nhập các thông tin sau:
- Tại Subscription, chọn tên gói đăng ký trả phí của bạn.
- Tại Resource group, chọn Create new:
- Nhập tên cho resource group mới.

Tạo instance Azure OpenAI mới.
-
-
- Ở mục Region, chọn khu vực gần bạn nhất.
- Tại mục Name, nhập một tên duy nhất.
- Tại Pricing tier, chọn Standard S0.
- Chọn Next để tiếp tục.
-
- Trong phần Network, chọn "All networks, including the Internet, can access this resource." Sau đó tiếp tục bước tiếp theo.
- Trong phần Tags, nhập các cặp tên-giá trị để phân loại instance này. Điều này hữu ích cho việc tổng hợp hóa đơn. Bước này là tùy chọn.
- Ở phần tiếp theo, chọn Review + submit, kiểm tra lại các giá trị, rồi chọn Create. Việc này sẽ triển khai một instance OpenAI mới.
- Sau một lúc, sẽ hiển thị thông báo "Your deployment is complete." Trên trang này, chọn Go to resource.
- Trên trang tài nguyên, chọn tên tài nguyên dưới thẻ Resources.
Bước 3: Thiết lập quyền truy cập API
Trang tài nguyên hiển thị chi tiết về instance.
Thẻ Develop hiển thị các khóa API và URL endpoint API cho instance này. Các khóa được tự động tạo sẵn cho bạn.
- Sao chép các khóa và endpoint vào một tệp văn bản.
Bạn nhận được hai khóa API. Điều này cho phép bạn dùng khóa thứ hai nếu khóa thứ nhất bị lộ. Bạn cũng có thể dùng khóa thứ hai trong khi tạo lại khóa thứ nhất. Nhờ đó bạn có thể xoay vòng khóa định kỳ mà không bị gián đoạn.

Khóa API của instance Azure OpenAI
- Trong thẻ Monitor, kiểm tra số liệu sử dụng của instance này.
- Trong thẻ Get Started, chọn Explore Azure AI Foundry portal để mở AI playground trên trang mới.

Khu vực thử nghiệm chat của Azure OpenAI.
- Chọn Chat playground từ menu bên trái.
- Tại Deployment, chọn Create new dep.
- Chọn From base models trong cửa sổ triển khai mới
- Một cửa sổ bật lên sẽ cho phép bạn chọn mô hình.
- Trong thanh tìm kiếm, gõ “gpt-3”.
- Chọn gpt-35-turbo trong danh sách. Đây là mô hình tiết kiệm, tối ưu cho chat completions. Sau khi cấu hình hoạt động, bạn có thể chuyển sang mô hình cao cấp hơn (và đắt hơn) nếu cần.
- Chọn Confirm.
- Trong cửa sổ Deploy model, chọn Customize.
- Giảm Tokens per Minute Rate Limit xuống mức thấp (ví dụ 12 yêu cầu mỗi phút) để thử nghiệm thủ công. Tăng dần khi đưa mô hình vào sản xuất.
- Tắt dynamic quota. Bạn chưa cần đến khi triển khai nhận lưu lượng lớn.
- Chọn Deploy.

Triển khai mô hình mới trong khu vực thử nghiệm chat.
Xong rồi! Ở phần tiếp theo, chúng ta sẽ xem cách truy cập triển khai mô hình gpt-35-turbo của OpenAI này.
Tạo lại khóa API
Nên định kỳ tạo lại khóa truy cập API. Điều này đảm bảo tài khoản không bị xâm phạm nếu khóa cũ vô tình bị lộ. Các bước dưới đây mô tả cách tạo lại khóa:
- Dưới Resource Management, từ menu trái, chọn Keys and Endpoint.
- Tạo lại từng khóa riêng lẻ.

Khóa API của instance Azure OpenAI.
Sử dụng Azure OpenAI trong Ứng dụng
Sau khi thiết lập Azure OpenAI và triển khai mô hình, chúng ta xem cách truy cập nó bằng lập trình.
Bước 1: Thiết lập môi trường phát triển
Tôi sẽ hướng dẫn cách dùng Python để kết nối Azure OpenAI. Cài đặt các thư viện cần thiết:
$ pip install openai
Nếu bạn dùng notebook, chạy lệnh sau. Lưu ý: Tôi đang dùng DataLab notebook.
!pip install openai
Import các gói cần thiết trong Python shell hoặc notebook:
import os
from openai import AzureOpenAI
Mô-đun AzureOpenAI cho phép truy cập dịch vụ OpenAI trong Azure. Điều này khác với mô-đun OpenAI dùng để truy cập OpenAI API độc lập.
Trước khi dùng Azure OpenAI, hãy đặt khóa API và endpoint trong môi trường của bạn. Phần trước đã chỉ cách tìm các giá trị này. Về nguyên tắc, bạn có thể đặt chúng trong môi trường lập trình, nhưng tôi khuyến nghị không bao giờ làm vậy. Không bao giờ để lộ khóa API trong chương trình.
Đặt khóa API bằng terminal
Để chạy Python cục bộ, đặt biến môi trường trong tệp cấu hình shell. Tôi sẽ hướng dẫn với shell Bash.
- Chỉnh sửa tệp
.bashrctrong trình soạn thảo. - Thêm hai dòng sau vào cuối tệp:
export AZURE_OPENAI_API_KEY=MY_API_KEY'export AZURE_OPENAI_ENDPOINT=MY_ENDPOINT'- Lưu và đóng tệp.
- Nạp lại thay đổi trong terminal bằng lệnh
source ~/.bashrc. - Với các shell khác như
shhoặczsh, quy trình có thể hơi khác. - Mở (hoặc mở lại) Python shell trong cùng phiên terminal.
Import các giá trị khóa API và endpoint trong terminal Python:
azure_openai_api_key = os.getenv["AZURE_OPENAI_API_KEY"]
azure_openai_endpoint = os.getenv["AZURE_OPENAI_ENDPOINT"]
Đặt khóa API bằng notebook trực tuyến (DataLab)
DataLab cho phép bạn đặt biến môi trường trực tiếp cho một notebook.
- Từ thanh menu trên cùng, chọn Environment và chọn Environment variables trong danh sách thả xuống.
- Chọn tùy chọn thêm biến môi trường.
- Thêm hai biến,
AZURE_OPENAI_API_KEYvàAZURE_OPENAI_ENDPOINT, cùng các giá trị tương ứng. - Đặt tên cho bộ biến môi trường này và lưu thay đổi.
Trong notebook, trích xuất các giá trị như dưới đây:
azure_openai_api_key = os.environ["AZURE_OPENAI_API_KEY"]
azure_openai_endpoint = os.environ["AZURE_OPENAI_ENDPOINT"]
Bước 2: Thực hiện cuộc gọi API đầu tiên tới Azure OpenAI
Giờ bạn có thể dùng hàm AzureOpenAI() để tạo đối tượng client nhận yêu cầu. Hàm này sử dụng các tham số sau:
api_version: Phiên bản Azure OpenAI API. Kiểm tra phiên bản mới nhất từ tài liệu Azure.api_key: khóa API của Azure OpenAI. Lấy từ biến môi trường bạn đã đặt trước đó. Không đặt thủ công tại đây.azure_endpoint: URL endpoint của Azure OpenAI API (lấy từ môi trường).
client = AzureOpenAI(
api_version="2024-06-01",
api_key=azure_openai_api_key,
azure_endpoint=azure_openai_endpoint
)
Dùng đối tượng client cho các tác vụ như chat completion bằng hàm .chat.completions.create(). Hàm này nhận các tham số sau:
model: Tên mô hình. Ở các bản OpenAI API cũ, đây là tham sốengine. Lưu ý tham sốmodelphải trùng với mô hình đã chỉ định lúc triển khai (trên Azure AI Foundry portal). Nếu bạn thử dùng mô hình khác với mô hình đã triển khai, sẽ báo lỗi như dưới đây:
NotFoundError: Error code: 404 - {'error': {'code': 'DeploymentNotFound', 'message': 'The API deployment for this resource does not exist. If you created the deployment within the last 5 minutes, please wait a moment and try again.'}}
messages: Tham số này chỉ định cuộc hội thoại giữa người dùng và mô hình. Nó gồm một tập các đối tượng message. Mỗi message có cặp khóa-giá trị gồmrole(gồmsystem,userhoặcassistant) vàcontent(nội dung thông điệp). Các đối tượng message này cung cấp ngữ cảnh cho tương tác và định hướng phản hồi của mô hình.
Dưới đây là ví dụ các cặp (role, content) với các giá trị role khác nhau:
user: lời nhắc do người dùng nhập.
Ví dụ: {“role”: “user”, “content”: “explain the difference between rational and irrational numbers”}
system: mô tả vai trò OpenAI được kỳ vọng trong tương tác.
Ví dụ: {“role”: “system”, “content”: “you are a helpful teacher to guide elementary mathematics students”}
assistant: phản hồi kỳ vọng từ OpenAI.
Ví dụ: {“role”: “assistant”, “content”: “the difference between rational and irrational numbers is … an example explanation …”}
Vai trò assistant chỉ cần thiết khi cung cấp dữ liệu huấn luyện để fine-tune mô hình. Khi dùng client cho các tác vụ như chat completion, chỉ cần các vai trò user và system là đủ. Với nhiều tác vụ đơn giản, chỉ cần vai trò user là đủ.
max_tokens: tham số này quyết định số token tối đa được dùng để xử lý (cả đầu vào và đầu ra) của cuộc gọi API. Bạn bị tính phí trực tiếp theo số token sử dụng. Giá trị mặc định là 16. Giá trị này đủ cho các trường hợp đơn giản; vì vậy có thể bỏ qua tham số này.
simple_completion = client.chat.completions.create(
model="gpt-35-turbo",
messages=[
{
"role": "user",
"content": "Explain the difference between OpenAI and Azure OpenAI in 20 words",
},
],
)
In nội dung đầu ra của tác vụ chat completion:
print(simple_completion.to_json())
Đầu ra là đối tượng JSON với nhiều cặp khóa-giá trị. Nó bao gồm đầu ra của mô hình như trong ví dụ dưới đây. Lưu ý assistant là vai trò mặc định gán cho mô hình.
"message": {
"content": "OpenAI is a research organization focused on advancing AI, while Azure OpenAI is a collaboration between Microsoft and OpenAI.",
"role": "assistant"
},
Bước 3: Sử dụng các mô hình OpenAI cho các tác vụ khác nhau
Để truy cập bất kỳ mô hình nào với Azure OpenAI, trước tiên bạn phải triển khai mô hình đó. Ở phần trước, bạn đã triển khai mô hình gpt-35-turbo. Để dùng mô hình khác:
- Quay lại Azure AI Foundry và triển khai mô hình khác như đã giải thích trước đó. Chọn từ nhiều mô hình như GPT-3.5, GPT-4o, o1 và o1-mini, o3 và o3-mini, v.v.
- Viết lại các lời nhắc ở trên (trong hàm
chat.completions.create()) bằng tên mô hình mới.
Trong các bản OpenAI trước đây, việc dùng các mô hình khác nhau cho các tác vụ khác nhau khá phổ biến. Có các mô hình dành riêng cho sinh mã, NLP, v.v. Các mô hình hiện đại như GPT-3.5 và GPT-4 có thể thực hiện mọi tác vụ sinh nội dung dựa trên văn bản. Do đó, nhiều mô hình cũ theo tác vụ (như mô hình davinci cho sinh mã) đã bị loại bỏ.
Giờ chúng ta xem cách dùng API cho một số tác vụ đơn giản như hỏi đáp và tóm tắt văn bản. Trong các ví dụ dưới đây, chúng ta dùng cùng một mô hình—GPT-3.5. Bạn cũng có thể chọn một trong các mô hình GPT-4.
Vì cả hai đều là tác vụ dựa trên văn bản, hãy khai báo một đoạn văn bản để làm việc. Tôi ngẫu nhiên sao chép một bài đánh giá về một đôi ủng từ một trang thương mại điện tử. Gán văn bản này cho biến text. Hãy đảm bảo bạn escape các ký tự nháy đơn hoặc nháy kép trong văn bản.
text = 'Comfort and Quality wise the boots are absolutely excellent. A 10 miles hike along the city Streets and the alps nearby felt like a smooth sail. The most plus it was quite well ventilated cause of the heavy duty Gore-tex material. After 12 hours when I removed it, there was just very little bit of perspiration (My foot sweats a lot) and absolutely no foul smell. Speaking of the Gore-Tex I would say, I sported this on a heavy rainy day after buying it in India, I was fearing the boot, though not very much like normal boots, would still be drenching with water, instead it was very little soaked. And some 5-6 hours later it was completely dry (Kept inside a closed room in the night). The only disadvantage I think is, that it fits my foot perfectly according to the size I chose, and there is no slight pain from 7 AM till 8 PM due to the shoe weight (of course its 1.2 KG, even though it doesn\'t feel like)'
Tóm tắt văn bản
Để tóm tắt văn bản trên:
- Dùng đối tượng
clientđã tạo trước đó. - Truyền các vai trò phù hợp trong tham số
messagesnhư ví dụ dưới đây:
summary_completion = client.chat.completions.create(
model="gpt-35-turbo",
messages=[
{
"role": "system",
"content": "You are a helpful assistant for summarizing text"
},
{
"role": "user",
"content": f"Summarize this text in 10 words: {text}",
},
],
)
Lưu ý cách chúng ta truyền văn bản dưới dạng biến trong prompt ở đoạn mã trên.
print(summary_completion.to_json())
Đầu ra chứa phần tóm tắt của trợ lý về đoạn văn dài, như trong trích đoạn này:
"message": {
"content": "Excellent comfort and quality, well-ventilated, quick-drying, lightweight boots, minimal perspiration, no foul smell.",
"role": "assistant"
},
Hỏi đáp
Để trả lời câu hỏi (dựa trên văn bản đầu vào ở trên), chúng ta chỉnh prompt để truyền câu hỏi dưới dạng biến chuỗi. Như trước, prompt cũng gồm văn bản dưới dạng biến. Mô hình sẽ trả lời dựa trên văn bản đã cho.
question = 'Are these shoes heavy?'
qna_completion = client.chat.completions.create(
model="gpt-35-turbo",
messages=[
{"role": "system",
"content": "You are a helpful assistant for answering questions"
},
{
"role": "user",
"content": f"Answer this question: {question} in 10 words based on this text: {text}",
},
],
)
Chuyển đầu ra thành JSON và in ra:
print(qna_completion.to_json())
Đầu ra bao gồm câu trả lời của trợ lý:
"message": {
"content": "Lightweight. Not heavy. Comfortable for long hikes. Well-ventilated Gore-tex material.",
"role": "assistant"
},Các Trường hợp Sử dụng Azure OpenAI
Bây giờ, hãy xem các trường hợp sử dụng khác nhau cho dịch vụ Azure OpenAI.
Xử lý ngôn ngữ tự nhiên (NLP)
Là một mô hình ngôn ngữ cốt lõi, các mô hình mục đích chung của OpenAI như GPT-3 và GPT-4 vượt trội trong các tác vụ NLP, chẳng hạn như:
- Tóm tắt văn bản: Cung cấp cho API một đoạn văn bản lớn làm đầu vào và yêu cầu tóm tắt theo nhu cầu của bạn. Ở ví dụ trước, chúng ta đã tóm tắt bài đánh giá dài của khách hàng thành phần tóm tắt 10 từ.
- Phân loại văn bản: Với một tài liệu (hoặc nhiều tài liệu) và một tập nhãn xác định trước, OpenAI có thể phân loại tài liệu vào nhãn phù hợp nhất.
- Phân tích cảm xúc: API có thể phân tích một đoạn văn bản đầu vào để đánh giá cảm xúc của nó. Ví dụ, có thể phân loại bài đánh giá của khách hàng là tích cực, tiêu cực hoặc trung tính.
Trong ví dụ sau, chúng ta thực hiện phân tích cảm xúc để phân loại văn bản đánh giá của khách hàng (đã định nghĩa trước đó).
sentiment_classification = client.chat.completions.create(
model="gpt-35-turbo",
messages=[
{"role": "system",
"content": "You are a helpful assistant for classifying customer reviews into one of the following categories: very positive, positive, neutral, negative, very negative"
},
{
"role": "user",
"content": f"Classify this review: {text}",
},
],
#max_tokens=16
)
print(sentiment_classification.to_json())
Đầu ra chứa một trích đoạn tương tự như dưới đây. Nó bao gồm phân loại của trợ lý đối với bài đánh giá:
"message": {
"content": "This review can be classified as very positive.",
"role": "assistant"
},
Sinh mã
Các mô hình OpenAI có thể sinh mã trong nhiều ngôn ngữ lập trình. Những bản OpenAI trước đây có các mô hình dành riêng cho mã, như Codex và code-davinci, được fine-tune cho việc sinh mã.
Tuy nhiên, các bản phát hành mới như GPT-3.5 và GPT-4 sinh mã mà không cần fine-tuning. Các mô hình gốc được tiền huấn luyện trên bộ dữ liệu về mã. Do đó, Codex, code-davinci và nhiều mô hình cũ khác đã bị ngừng hỗ trợ và không còn khả dụng cho triển khai mới.
Các mô hình OpenAI có thể hỗ trợ viết mã trong nhiều ngôn ngữ lập trình phổ biến. Tương tác với mô hình bằng ngôn ngữ tự nhiên để đưa hướng dẫn cho các tác vụ lập trình như:
- Sinh mã: Với một prompt văn bản hoặc chú thích, mô hình có thể tạo đoạn mã. Lập trình viên có thể ghép các đoạn này thành chương trình hoàn chỉnh. Điều này giúp tự động hóa các tác vụ lặp lại như viết mã khung.
- Gỡ lỗi: Mô hình có thể phân tích thông báo lỗi và cảnh báo để giải thích vấn đề bằng ngôn ngữ tự nhiên và gợi ý cách khắc phục.
- Tối ưu: Các mô hình OpenAI có thể giúp tái cấu trúc mã thành cấu trúc gọn gàng hơn và sử dụng thuật toán hiệu quả hơn cho các tác vụ phổ biến như sắp xếp.
- Giải thích: Các mô hình OpenAI cũng có thể giải thích các đoạn mã mà chúng tạo ra. Các giải thích này giúp tùy biến mã cho phù hợp nhu cầu của nhà phát triển và hỗ trợ người mới học hiểu các khái niệm lập trình.
Xem ví dụ đơn giản về viết một hàm Python để mở và đọc tệp. Đây là tác vụ đủ phổ biến để có thể tự động hóa dễ dàng. Chúng ta yêu cầu OpenAI sinh và giải thích mã. Dùng đối tượng client đã tạo trước đó.
code_completion = client.chat.completions.create(
model="gpt-35-turbo",
messages=[
{"role": "system",
"content": "You are a helpful assistant for generating programming code"
},
{
"role": "user",
"content": "Write and explain a Python function to open and read a file",
},
],
)
In đầu ra:
print(code_completion.to_json())
Lưu ý đối tượng JSON đầu ra chứa nội dung của trợ lý tương tự trích đoạn mẫu dưới đây:
"content": "Below is a Python function that opens a file, reads its contents, and returns the content as a string:\n\n```python\ndef read_file(file_path):\n try:\n with open(file_path, 'r') as file:\n …
Tạo ảnh với DALL·E
Các ví dụ trước đều dựa trên văn bản. Chúng dùng OpenAI như một mô hình ngôn ngữ lớn (LLM), thường được xây dựng bằng kiến trúc transformer. Bên cạnh LLM, OpenAI còn có các mô hình dựa trên diffuser như DALL·E, tạo ảnh từ prompt văn bản.
Để dùng DALL·E, hãy cung cấp prompt văn bản mô tả chi tiết hình ảnh bạn muốn. Dựa trên mô tả này, DALL·E tạo ra hình ảnh chất lượng cao. Điều này hữu ích cho các tác vụ như tạo minh họa, thiết kế ý tưởng sản phẩm, phác thảo cho chiến dịch marketing, v.v.
DALL·E hiện không khả dụng ở mọi khu vực địa lý. Nếu khả dụng ở khu vực của bạn, hãy tạo một triển khai mới (như đã giải thích trước đó) nhưng sử dụng mô hình DALL·E-3 thay vì GPT-3. Truy cập mô hình DALL·E bằng cùng đối tượng client như trước. Dùng phương thức client.images.generate() để tạo ảnh:
- Đặt tên mô hình là
dalle3bằng tham sốmodel. - Mô tả hình ảnh mong muốn bằng tham số
prompt. - Bạn cũng có thể chỉ định giá trị cho
n, là số lượng ảnh cần tạo.
result = client.images.generate(
model="dalle3",
prompt="An owl wearing a Christmas hat",
n=1
)
Trích xuất đối tượng phản hồi JSON từ phản hồi của mô hình:
import json
json_response = json.loads(result.model_dump_json())
Khai báo thư mục ảnh. Lưu ý thư mục images phải tồn tại dưới thư mục làm việc hiện tại (nơi bạn khởi động Python shell).
image_dir = os.path.join(os.curdir, 'images')
Chỉ định đường dẫn ảnh trong thư mục này:
image_path = os.path.join(image_dir, 'generated_image.png')
Trích xuất URL của ảnh đã tạo từ đối tượng phản hồi JSON, tải ảnh (dưới dạng luồng) và ghi vào tệp ảnh:
image_url = json_response["data"][0]["url"]
generated_image = requests.get(image_url).content
with open(image_path, "wb") as image_file:
image_file.write(generated_image)
Hiển thị ảnh:
from PIL import Image
image = Image.open(image_path)
image.show()
Thực hành Tốt nhất khi dùng Azure OpenAI
Sử dụng dịch vụ Azure OpenAI khá đơn giản, nhưng như mọi công nghệ khác, có một số thực hành tốt nhất cần tuân theo để tận dụng tối đa. Hãy cùng điểm qua trong phần này.
Giám sát và quản lý mức sử dụng API
Azure OpenAI là một trong những dịch vụ tốn kém hơn của Azure. Ngay cả tín dụng miễn phí cho tài khoản mới cũng không dùng được cho OpenAI API. Do đó, việc theo dõi sử dụng là rất cần thiết, ngay cả với người dùng mới. Sử dụng API không kiểm soát có thể dẫn đến hóa đơn lớn ngoài mong đợi.
Phí OpenAI dựa trên việc sử dụng và tiêu thụ token. Token đại diện cho đơn vị văn bản được mô hình xử lý - cả đầu vào lẫn đầu ra. Xử lý một tài liệu văn bản lớn tiêu thụ nhiều token hơn so với tạo một phản hồi dài. Bạn dùng càng nhiều token, chi phí càng cao. Vì vậy, hãy tiết kiệm thông tin đưa cho mô hình hoặc yêu cầu mô hình tạo.
Dùng tham số max_tokens để giới hạn số token tiêu thụ trong yêu cầu đó. Với mô hình sản xuất, hãy thử nghiệm để xác định số token mà yêu cầu hoặc người dùng của bạn thường cần và giới hạn tương ứng. Tăng giới hạn theo từng trường hợp nếu cần.
Để theo dõi các chỉ số cơ bản:
- Từ trang chủ Azure AI Services | Azure OpenAI, chọn tài nguyên cần giám sát.
- Trên trang tài nguyên, chọn thẻ Monitor để xem các chỉ số như số lượng yêu cầu HTTP và số token đã xử lý theo mô hình và theo triển khai.

Bảng điều khiển chỉ số Azure OpenAI.
Bạn cũng có thể xem các chỉ số chi tiết hơn:
- Từ mục Monitoring trong menu trái, chọn Metrics.

Chỉ số chi tiết Azure OpenAI.
- Trong cửa sổ Select a scope, chọn instance OpenAI (đánh dấu ô chọn)
- Chọn Apply.
Trên trang Metrics:
- Chọn khung thời gian ở góc trên bên phải.
- Từ thanh menu trên biểu đồ (ban đầu trống), chọn chỉ số phù hợp trong danh sách Metric. Chọn trong các chỉ số như:
- Azure OpenAI requests,
- Thống kê sử dụng token (active tokens, generated tokens, v.v.)
- Hiệu năng các cuộc gọi API (time to first byte, v.v.), và hơn thế nữa.

Ví dụ giám sát Azure OpenAI.
Cuối cùng, luôn thiết lập hạn mức ngân sách trên tài khoản API và cấu hình nhận email cảnh báo khi bạn vượt ngưỡng ngân sách.
Fine-tuning mô hình
Các mô hình gốc của OpenAI được huấn luyện trên bộ dữ liệu khổng lồ bao trùm nhiều miền. Nhìn chung, có ba cách để đạt đầu ra mong muốn từ các mô hình LLM:
- Kỹ thuật prompt: Với hầu hết các trường hợp, thêm hướng dẫn cụ thể vào prompt là đủ. Đây gọi là prompt engineering.
- Few-shot learning: Khi kỹ thuật prompt chưa đủ, hãy thêm vài ví dụ vào prompt để giúp mô hình hiểu kiểu phản hồi mong muốn. Đây là few-shot learning, trong đó mô hình học từ một số ít ví dụ.
- Fine-tuning: Đôi khi, bạn muốn trò chuyện với mô hình về một lĩnh vực rất chuyên biệt, ví dụ dựa trên sổ tay sửa chữa thiết bị chuyên dụng. Sinh văn bản về chủ đề này đòi hỏi thuật ngữ và phong cách chuyên ngành, vốn có thể không nằm trong các bộ dữ liệu công khai (mà mô hình gốc được huấn luyện).
Bạn có thể fine-tune mô hình gốc nếu few-shot learning và kỹ thuật prompt không cho ra phản hồi phù hợp.
Fine-tuning là việc huấn luyện lại một mô hình gốc đã được tiền huấn luyện trên bộ dữ liệu chuyên biệt. Trên thực tế, chỉ một vài tầng của mô hình gốc (không phải toàn bộ) được huấn luyện lại trên dữ liệu mới. Hướng dẫn fine-tuning của Azure giải thích các bước fine-tune một mô hình OpenAI phổ biến.
Hãy nhớ rằng để fine-tune thành công một mô hình gốc, bạn cần lượng dữ liệu lớn, phù hợp và chất lượng cao với hàng nghìn ví dụ huấn luyện. Thêm vào đó, fine-tuning luôn phát sinh chi phí ban đầu lớn để huấn luyện mô hình. Ngoài ra, mô hình đã fine-tune phải được bạn lưu trữ trước khi triển khai.
Bảo mật khóa API của bạn
Khóa API bị lộ công khai có thể bị lạm dụng để truy cập thông tin nhạy cảm, thực hiện các tác vụ không an toàn và/hoặc bất hợp pháp, hoặc gửi yêu cầu trái phép dẫn đến hóa đơn lớn cho chủ tài khoản. Do đó, quan trọng là phải quản lý khóa API an toàn thay vì hardcode trong mã nguồn. Có thể áp dụng nhiều cách:
- Với dịch vụ đám mây, dùng công cụ quản lý khóa như AWS Secrets Manager và Azure Key Vault.
- Dùng tệp
.envđể lưu khóa theo định dạng cặp khóa-giá trị. Thêm tệp này vào danh sách.gitignoređể đảm bảo không bị commit lên kho mã. - Với các dịch vụ dựa trên Jupyter notebook, dùng tùy chọn lưu khóa như một phần của môi trường. Cách này đã được mô tả trước đó trong hướng dẫn.
Tôi khuyên bạn hạn chế quyền của khóa theo tác vụ được phép sử dụng. Ngoài ra, việc xoay vòng hoặc tạo lại khóa định kỳ cũng hữu ích để khóa cũ không bị lạm dụng nếu bị lộ.
Kết luận
Trong hướng dẫn này, chúng ta đã thảo luận việc bắt đầu với tài khoản Azure, thiết lập dịch vụ OpenAI, tạo instance OpenAI mới và triển khai mô hình. Sau đó, chúng ta xem ví dụ dùng các mô hình OpenAI cho các tác vụ thực tiễn. Chúng ta cũng đề cập cách giám sát việc sử dụng và hiệu năng của tài nguyên Azure OpenAI.
Để hiểu sâu hơn về Microsoft Azure, hãy theo dõi lộ trình Azure Fundamentals của DataCamp. Để tìm hiểu thêm về các khái niệm cốt lõi của OpenAI, hãy theo dõi lộ trình OpenAI Fundamentals của DataCamp.
FAQs
Azure OpenAI khác gì so với OpenAI?
Azure OpenAI cho phép người dùng Azure truy cập các mô hình của OpenAI ngay trong nền tảng Azure. Nhờ vậy, người dùng Azure không phải cấu hình và quản lý thêm một nền tảng phần mềm khác. Việc tích hợp với các dịch vụ khác dựa trên Azure cũng dễ dàng hơn.
Azure OpenAI có cho phép fine-tune mô hình không?
Có, bạn có thể cung cấp các bộ dữ liệu huấn luyện và kiểm định phù hợp với trường hợp sử dụng cụ thể và dùng chúng để fine-tune mô hình gốc.
Tuy nhiên, lưu ý hiệu năng của mô hình đã fine-tune phụ thuộc rất lớn vào chất lượng dữ liệu huấn luyện. Dữ liệu kém chất lượng hoặc không liên quan sẽ dẫn đến hiệu năng suy giảm so với mô hình gốc.
Tôi có thể dùng những phương thức nào để truy cập Azure OpenAI?
Bạn có thể truy cập dịch vụ Azure OpenAI theo hai cách - dùng ứng dụng web Azure hoặc dùng API. Ứng dụng web hoạt động tương tự giao diện web ChatGPT. Bạn có thể tương tác với các mô hình bằng lập trình qua API. API cho phép tích hợp công cụ AI với các ứng dụng khác.
Tôi có thể dùng những ngôn ngữ nào với Azure OpenAI API?
Azure OpenAI hỗ trợ nhiều ngôn ngữ như C#, Go, Java, JavaScript, Python và REST (yêu cầu HTTP). Python là một trong những ngôn ngữ được dùng nhiều nhất nhờ phổ biến trong lĩnh vực khoa học dữ liệu và AI/ML. Quan trọng hơn, hệ sinh thái Python có nhiều công cụ làm việc với dữ liệu lớn.
Để tích hợp với ứng dụng phía máy chủ, hãy dùng cùng ngôn ngữ với phần còn lại của ứng dụng.
Tôi có thể truy cập những mô hình nào bằng Azure OpenAI?
Azure OpenAI cung cấp quyền truy cập các mô hình như GPT-4, GPT-4o, GPT-3.5, DALL-E (văn bản thành hình ảnh), Whisper (giọng nói thành văn bản) và nhiều hơn nữa. Danh sách các mô hình hiện có thể xem trong tài liệu Azure.
Arun là cựu nhà sáng lập startup, yêu thích xây dựng những điều mới mẻ. Hiện tại, anh đang khám phá các nền tảng kỹ thuật và toán học của Trí tuệ Nhân tạo. Anh thích chia sẻ những gì mình học được, vì thế anh viết về chúng.
Bên cạnh DataCamp, bạn có thể đọc các bài viết của anh trên Medium, Airbyte và Vultr.
