Xây dựng Tool "Họa Sĩ AI": Tự động vẽ ảnh bìa bài viết từ Tiêu đề (DALL-E 3)

AI Hunter

Member
Bạn có hàng trăm bài viết trên diễn đàn nhưng nhìn rất nhàm chán vì thiếu hình ảnh?
Trong bài viết này, chúng ta sẽ viết một script Python giúp:
1. Đọc tiêu đề bài viết: Ví dụ "Đánh giá iPhone 16 Pro Max".
2. Sáng tạo ý tưởng: Dùng GPT để tưởng tượng ra một khung cảnh đẹp phù hợp với tiêu đề.
3. Vẽ tranh: Ra lệnh cho DALL-E 3 vẽ ra file ảnh chất lượng cao để làm ảnh bìa.

Xây dựng Tool Họa Sĩ AI Tự động vẽ ảnh bìa bài viết từ Tiêu đề (DALL-E 3).jpg

1. Nguyên lý hoạt động​


Quy trình gồm 2 bước thông minh:
  • Bước 1 (Prompt Engineering): Nếu bạn đưa tiêu đề cộc lốc cho AI vẽ, ảnh sẽ rất xấu. Chúng ta cần dùng GPT-3.5 để "văn vở" hóa tiêu đề đó thành một đoạn mô tả chi tiết (Prompt).
    * Input: "Review iPhone 16"
    * Output: "A futuristic smartphone lying on a wooden table, cyberpunk lighting, 8k resolution, highly detailed."
  • Bước 2 (Image Generation): Gửi đoạn mô tả trên cho DALL-E 3 để tạo ảnh.

2. Cài đặt​


Chúng ta vẫn sử dụng thư viện `openai` quen thuộc (Lưu ý: DALL-E 3 yêu cầu tài khoản OpenAI có trả phí/add thẻ visa).

Mã:
pip install openai requests

3. Triển khai Code (Full Source)​


Dưới đây là file `ai_artist.py`.

Python:
from openai import OpenAI
import os
import requests
import time

# --- CẤU HÌNH ---
os.environ["OPENAI_API_KEY"] = "sk-YOUR_OPENAI_KEY"
client = OpenAI()

def enhance_prompt(title):
    """Bước 1: Biến tiêu đề bài viết thành câu lệnh vẽ tranh chuyên nghiệp"""
    print(f"🎨 Đang lên ý tưởng cho: '{title}'...")
   
    system_prompt = """
    Bạn là một Giám đốc Nghệ thuật (Art Director). Nhiệm vụ của bạn là viết mô tả (Prompt) để vẽ ảnh bìa cho bài viết.
   
    Yêu cầu:
    1. Mô tả bằng tiếng Anh.
    2. Phong cách: Hiện đại, Digital Art, 3D Render, bắt mắt.
    3. Không chứa text/chữ trong ảnh.
    4. Độ dài khoảng 30-50 từ.
    """
   
    response = client.chat.completions.create(
        model="gpt-3.5-turbo",
        messages=[
            {"role": "system", "content": system_prompt},
            {"role": "user", "content": f"Tiêu đề bài viết: {title}"}
        ]
    )
   
    art_prompt = response.choices[0].message.content
    print(f"✨ Prompt đã tối ưu: {art_prompt}")
    return art_prompt

def generate_image(prompt, filename="cover.png"):
    """Bước 2: Gửi yêu cầu vẽ cho DALL-E 3"""
    print("🖌️ Họa sĩ AI đang vẽ (Vui lòng đợi 10-15s)...")
   
    try:
        response = client.images.generate(
            model="dall-e-3",
            prompt=prompt,
            size="1024x1024",
            quality="standard",
            n=1,
        )
       
        image_url = response.data[0].url
       
        # Tải ảnh về máy
        img_data = requests.get(image_url).content
        with open(filename, 'wb') as handler:
            handler.write(img_data)
           
        print(f"✅ Đã vẽ xong! Lưu tại: {filename}")
        return filename
       
    except Exception as e:
        print(f"❌ Lỗi vẽ tranh: {e}")
        return None

# --- CHẠY THỬ ---
if __name__ == "__main__":
    # Nhập tiêu đề bài viết bạn muốn tạo ảnh
    article_title = input("Nhập tiêu đề bài viết: ")
   
    # 1. Tối ưu prompt
    detailed_prompt = enhance_prompt(article_title)
   
    # 2. Vẽ và lưu ảnh
    generate_image(detailed_prompt, "my_cover_art.png")

4. Kết hợp vào Bot "Báo Đêm"​


Bạn còn nhớ con Bot tự động cào tin tức ở bài trước chứ? Bây giờ bạn có thể nâng cấp nó lên tầm cao mới:
Khi cào được bài viết mới -> Thay vì lấy ảnh cũ của báo (dễ dính bản quyền) -> Gọi hàm `generate_image()` để tự vẽ một cái ảnh bìa "độc nhất vô nhị" -> Đăng lên XenForo.

Như vậy, diễn đàn của bạn sẽ sở hữu nội dung 100% Unique từ Text đến Hình ảnh!

5. Lưu ý về Chi phí​


* **DALL-E 3:** Chất lượng tuyệt vời, hiểu prompt cực tốt, nhưng giá khoảng $0.04/ảnh (khoảng 1.000 VNĐ).
* **DALL-E 2:** Rẻ hơn ($0.02) nhưng ảnh xấu hơn, hay bị lỗi mặt người.
* **Stable Diffusion (Local):** Miễn phí hoàn toàn nếu bạn có máy tính cấu hình mạnh (GPU rời). Đây là chủ đề nâng cao chúng ta có thể bàn sau.
 
Back
Top