Nâng caoKỹ thuậtclaude-apiTổng hợp

Multi-modal AI — Kết hợp text, image và code với Claude

Nghe bài viết
00:00
A dark sports car and bomber airplane

Claude Multimodal là gì?

Claude không chỉ xử lý văn bản — từ Claude 3 trở đi, tất cả các model (Opus 4, Sonnet 4, Haiku 3.5) đều hỗ trợ vision, tức là khả năng phân tích và hiểu nội dung hình ảnh. Bạn có thể gửi ảnh chụp màn hình, biểu đồ, sơ đồ, tài liệu scan, ảnh sản phẩm, hay bất kỳ hình ảnh nào và Claude sẽ phân tích cùng với text prompt của bạn.

Khả năng này mở ra nhiều use cases thực tế: phân tích tài liệu không có text layer, đọc biểu đồ/bảng số liệu từ ảnh, review UI/UX design, phân tích code từ screenshot, hay OCR cho tài liệu tiếng Việt.

Gửi hình ảnh qua API

Có hai cách gửi hình ảnh: base64 encoding hoặc URL.

Cách 1: Base64 encoding (cho file local)

import anthropic
import base64

client = anthropic.Anthropic()

# Đọc và encode hình ảnh
with open("chart.png", "rb") as f:
    image_data = base64.standard_b64encode(f.read()).decode("utf-8")

response = client.messages.create(
    model="claude-sonnet-4-5",
    max_tokens=1024,
    messages=[
        {
            "role": "user",
            "content": [
                {
                    "type": "image",
                    "source": {
                        "type": "base64",
                        "media_type": "image/png",
                        "data": image_data
                    }
                },
                {
                    "type": "text",
                    "text": "Phân tích biểu đồ này và cho tôi biết xu hướng chính."
                }
            ]
        }
    ]
)
print(response.content[0].text)

Cách 2: URL (cho hình ảnh public)

response = client.messages.create(
    model="claude-sonnet-4-5",
    max_tokens=1024,
    messages=[
        {
            "role": "user",
            "content": [
                {
                    "type": "image",
                    "source": {
                        "type": "url",
                        "url": "https://example.com/product-screenshot.png"
                    }
                },
                {
                    "type": "text",
                    "text": "Mô tả UI/UX của màn hình này và đề xuất cải thiện."
                }
            ]
        }
    ]
)

Định dạng hình ảnh được hỗ trợ

Định dạng MIME type Ghi chú
JPEG image/jpeg Phổ biến nhất, file nhỏ
PNG image/png Lossless, tốt cho screenshot
GIF image/gif Chỉ frame đầu tiên được phân tích
WebP image/webp Modern format, hiệu quả

Giới hạn

  • Kích thước tối đa: 5MB per image
  • Số lượng images per request: không có giới hạn cứng, nhưng context window áp dụng
  • Độ phân giải tối ưu: Claude resize ảnh về max edge 1568px hoặc 1.15MP trước khi xử lý
  • Ảnh quá nhỏ (dưới 200x200px) có thể giảm chất lượng phân tích

Image Token Pricing

Hình ảnh được quy đổi sang tokens để tính giá. Claude dùng công thức:

# Số tokens của một hình ảnh:
tokens = (width * height) / 750

# Ví dụ:
# 800x600 PNG = 640 tokens
# 1920x1080 screenshot = 2765 tokens (Sonnet 4: ~$0.008)
# 4K image = 13107 tokens (~$0.04 với Sonnet 4)

Claude tự động resize ảnh lớn để tối ưu tokens. Với ảnh chứa nhiều text nhỏ, nên dùng ảnh độ phân giải cao để tăng độ chính xác OCR.

Document Understanding

Claude xử lý PDF và tài liệu phức tạp rất tốt. Với PDF, bạn có thể gửi trực tiếp qua API:

import anthropic
import base64

client = anthropic.Anthropic()

with open("contract.pdf", "rb") as f:
    pdf_data = base64.standard_b64encode(f.read()).decode("utf-8")

response = client.messages.create(
    model="claude-opus-4",
    max_tokens=4096,
    messages=[
        {
            "role": "user",
            "content": [
                {
                    "type": "document",
                    "source": {
                        "type": "base64",
                        "media_type": "application/pdf",
                        "data": pdf_data
                    }
                },
                {
                    "type": "text",
                    "text": "Tóm tắt các điều khoản chính của hợp đồng này."
                }
            ]
        }
    ]
)

# Với Prompt Caching cho document dài:
response = client.messages.create(
    model="claude-opus-4",
    max_tokens=4096,
    messages=[
        {
            "role": "user",
            "content": [
                {
                    "type": "document",
                    "source": {
                        "type": "base64",
                        "media_type": "application/pdf",
                        "data": pdf_data
                    },
                    "cache_control": {"type": "ephemeral"}
                },
                {
                    "type": "text",
                    "text": user_question
                }
            ]
        }
    ]
)

Diagram và Chart Interpretation

Claude đọc hiểu tốt các loại biểu đồ: line chart, bar chart, pie chart, flowchart, architecture diagram, ERD, và sơ đồ tổ chức. Để có kết quả tốt nhất:

prompt_for_chart = """Phân tích biểu đồ này:
1. Loại biểu đồ là gì?
2. Dữ liệu chính được hiển thị là gì?
3. Xu hướng hoặc patterns nổi bật?
4. Bất kỳ điểm dữ liệu đáng chú ý nào?
Trả lời bằng tiếng Việt, súc tích."""

OCR Use Cases

Claude hoạt động như OCR thông minh — không chỉ trích xuất text mà còn hiểu ngữ cảnh và cấu trúc của tài liệu:

Hóa đơn và chứng từ

response = client.messages.create(
    model="claude-sonnet-4-5",
    max_tokens=2048,
    messages=[
        {
            "role": "user",
            "content": [
                {"type": "image", "source": {"type": "base64", "media_type": "image/jpeg", "data": invoice_b64}},
                {"type": "text", "text": """Trích xuất thông tin từ hóa đơn này theo JSON format:
{
  "so_hoa_don": "",
  "ngay_hoa_don": "",
  "ten_cong_ty": "",
  "tong_tien": "",
  "thue_vat": "",
  "cac_mat_hang": []
}"""}
            ]
        }
    ]
)

Tài liệu tiếng Việt

Claude xử lý khá tốt tiếng Việt có dấu trong hình ảnh, kể cả font chữ in đậm, chữ viết tay in hoa, và tài liệu scan chất lượng trung bình.

So sánh nhiều hình ảnh

Đây là điểm mạnh của Claude multimodal — phân tích và so sánh nhiều ảnh trong một request:

response = client.messages.create(
    model="claude-opus-4",
    max_tokens=2048,
    messages=[
        {
            "role": "user",
            "content": [
                {"type": "text", "text": "So sánh hai design này:"},
                {"type": "image", "source": {"type": "base64", "media_type": "image/png", "data": design_v1}},
                {"type": "text", "text": "Design V1 vs"},
                {"type": "image", "source": {"type": "base64", "media_type": "image/png", "data": design_v2}},
                {"type": "text", "text": """Design V2.
Đánh giá:
1. Tính dễ đọc (readability)
2. Cấu trúc thông tin (information hierarchy)
3. Phù hợp với mobile
4. Khuyến nghị version nào và tại sao"""}
            ]
        }
    ]
)

Image + Text Prompting Patterns

Pattern 1: Describe then ask

Yêu cầu Claude mô tả ảnh trước, sau đó đặt câu hỏi cụ thể. Hữu ích khi bạn không chắc ảnh chứa gì:

"Mô tả chi tiết nội dung của hình ảnh này. Sau đó cho tôi biết [câu hỏi cụ thể]."

Pattern 2: Structured extraction

Yêu cầu output dạng JSON hoặc table để dễ parse:

"Trích xuất tất cả thông tin sản phẩm từ ảnh catalogue này theo định dạng JSON."

Pattern 3: Critique and improve

Đặc biệt hiệu quả cho design review:

"Đây là landing page hiện tại của tôi. Phân tích và liệt kê 5 vấn đề cụ thể về UX, sau đó đề xuất cải thiện có thể thực hiện ngay."

Batch Processing

Khi cần xử lý nhiều ảnh, dùng Batch API để tối ưu chi phí (giảm 50%):

import anthropic

client = anthropic.Anthropic()

requests = []
for i, image_b64 in enumerate(images_list):
    requests.append({
        "custom_id": f"img-{i}",
        "params": {
            "model": "claude-haiku-3-5",
            "max_tokens": 512,
            "messages": [
                {
                    "role": "user",
                    "content": [
                        {"type": "image", "source": {"type": "base64", "media_type": "image/jpeg", "data": image_b64}},
                        {"type": "text", "text": "Mô tả ngắn gọn nội dung hình ảnh (1-2 câu)."}
                    ]
                }
            ]
        }
    })

batch = client.messages.batches.create(requests=requests)
print(f"Batch ID: {batch.id}")

Limitations

  • Claude không thể xử lý video — chỉ ảnh tĩnh
  • Ảnh có text rất nhỏ (dưới 10px) có thể bị đọc sai
  • Chữ viết tay khó đọc có thể gặp lỗi OCR
  • Ảnh y tế (X-quang, MRI) cần được review bởi chuyên gia — không dùng cho chẩn đoán lâm sàng
  • Một số loại biểu đồ phức tạp (3D charts, heavily overlapping data) có thể không đọc chính xác

Kết luận

Khả năng multimodal của Claude mở ra nhiều ứng dụng thực tế mà text-only AI không thể làm được. Từ tự động hóa xử lý hóa đơn, phân tích dữ liệu từ báo cáo scan, đến review thiết kế và code review từ screenshot — vision API biến Claude thành công cụ đa năng thực sự. Với pricing theo tokens và Batch API, chi phí xử lý hình ảnh rất hợp lý cho most use cases.

Tính năng liên quan:VisionClaude APIArtifacts

Bai viet co huu ich khong?

Bản quyền thuộc về tác giả. Vui lòng dẫn nguồn khi chia sẻ.

Bình luận (1)
Ảnh đại diện
Đăng nhập để bình luận...
Đăng nhập để bình luận
  • Đang tải bình luận...

Đăng ký nhận bản tin

Nhận bài viết hay nhất về sản phẩm và vận hành, gửi thẳng vào hộp thư của bạn.

Bảo mật thông tin. Hủy đăng ký bất cứ lúc nào. Chính sách bảo mật.