Skip to main content

Sinh hình ảnh (Image Generation)

AI cung cấp hai phương pháp để tạo hình ảnh từ mô tả văn bản (prompt), tùy thuộc vào mô hình bạn sử dụng.

  • Phương pháp chuẩn (Standard): Sử dụng endpoint /images/generations, tuân thủ theo API của OpenAI.
  • Phương pháp trò chuyện (Chat): Sử dụng endpoint /chat/completions với các mô hình đa phương thức (multimodal).

1. Phương pháp chuẩn (Endpoint: /images/generations)​

Phương pháp này tương thích với các thư viện client của OpenAI và là cách được khuyến nghị cho các mô hình sinh ảnh chuyên dụng. API sẽ trả về dữ liệu ảnh được mã hóa dưới dạng base64 thay vì URL.

Model được hỗ trợ (Nano Banana, Gemini Enterprise Agent Platform (trước đây là Vertex AI); tên alias và ID gốc gọi cùng một model):

  • nano-banana-2 = gemini-3.1-flash-image
  • nano-banana-2-lite = gemini-3.1-flash-lite-image: rẻ và nhanh nhất
  • nano-banana-pro = gemini-3-pro-image: chất lượng cao nhất
  • nano-banana = gemini-2.5-flash-image: Google ngừng hỗ trợ từ 02/10/2026

Ngoài ra còn có model OpenAI gpt-image-2.5-flare và gpt-image-2.5-sunburst. Các model này dùng size và quality thay cho aspect_ratio, xem Model OpenAI và DeepSeek.

Mỗi request tạo 1 ảnh (n chỉ nhận 1). Chọn tỷ lệ khung hình bằng aspect_ratio (1:1, 3:4, 4:3, 16:9, 9:16); tham số size không có tác dụng.

Endpoint: POST /images/generations

Chú ý

Để tránh lỗi caching, bạn có thể thêm một chuỗi ngẫu nhiên vào cuối prompt, ví dụ: "A beautiful landscape painting, " + str(random.randint(1, 10000)). hoặc thay đổi prompt một chút.

Sử dụng curl để tạo hình ảnh và lưu từ dữ liệu base64.

# Cấu hình
API_URL="https://api.thucchien.ai/v1/images/generations"
API_KEY="<your_api_key>"
PROMPT="Một bức tranh phong cảnh biển hoàng hôn, phong cách sơn dầu"

# Gọi API
response=$(curl -s --location "$API_URL" \
--header 'Content-Type: application/json' \
--header "Authorization: Bearer $API_KEY" \
--data "{
\"model\": \"nano-banana-2\",
\"prompt\": \"$PROMPT\",
\"aspect_ratio\": \"16:9\"
}")

# Xử lý và lưu từng ảnh
image_count=$(echo "$response" | jq '.data | length')
if [ "$image_count" -gt 0 ]; then
for ((i=0; i<$image_count; i++)); do
image_data=$(echo "$response" | jq -r ".data[$i].b64_json")

# Lưu file
echo "$image_data" | base64 --decode > "generated_image_$((i+1)).png"
echo "Image $((i+1)) saved to generated_image_$((i+1)).png"
done
else
echo "Failed to generate images. Response:"
echo "$response"
fi

Ví dụ kết quả:

Generated Image 1Generated Image 2

2. Phương pháp trò chuyện (Endpoint: /chat/completions)​

Một số mô hình đa phương thức cho phép bạn tạo hình ảnh ngay trong một cuộc hội thoại. Thay vì trả về URL, các mô hình này sẽ trả về dữ liệu ảnh được mã hóa dưới dạng base64.

Model được hỗ trợ: các model Nano Banana ở trên, ví dụ nano-banana-2.

Endpoint: POST /chat/completions

Sử dụng curl để yêu cầu hình ảnh và lưu từ dữ liệu base64.

# Bước 1: Gọi API và trích xuất dữ liệu ảnh base64
IMAGE_DATA=$(curl -s https://api.thucchien.ai/v1/chat/completions \
-H "Content-Type: application/json" \
-H "Authorization: Bearer <your_api_key>" \
-d '{
"model": "nano-banana-2",
"messages": [
{
"role": "user",
"content": "An olympic size swimming pool with crystal clear water and modern architecture. High resolution, photorealistic, 8k"
}
]
}' | jq -r '.choices[0].message.images[0].image_url.url' | sed 's/^data:image\/png;base64,//')

# Bước 2: Giải mã base64 và lưu thành file ảnh
if [ -n "$IMAGE_DATA" ]; then
echo "$IMAGE_DATA" | base64 --decode > generated_chat_image.png
echo "Image saved to generated_chat_image.png"
else
echo "Failed to get image data."
fi

Ví dụ kết quả:

Ví dụ hình ảnh được tạo ra
Ghi chú

Để biết thêm chi tiết, bạn có thể tham khảo tài liệu về sinh ảnh từ Gemini Enterprise Agent Platform và các tham số sinh ảnh cho Google AI Studio qua LiteLLM.