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ợ:

Endpoint: POST /images/generations

Chú ý

Một số mô hình có thể trả về URL thay vì dữ liệu base64. Trong trường hợp đó, bạn có thể sử dụng phương pháp trò chuyện bên dưới. Ngoài ra để 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 nhiều hình ảnh và lưu chúng 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"
NUM_IMAGES=2 # Số lượng ảnh cần tạo

# Gọi API
response=$(curl -s --location "$API_URL" \
--header 'Content-Type: application/json' \
--header "Authorization: Bearer $API_KEY" \
--data "{
\"model\": \"imagen-4\",
\"prompt\": \"$PROMPT\",
\"n\": $NUM_IMAGES,
}")

# 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ợ:

  • gemini-2.5-flash-image-preview

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": "gemini-2.5-flash-image-preview",
"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ừ Google Cloud Vertex AI và các tham số sinh ảnh cho Google AI Studio qua LiteLLM.