0Pricing
AI Agents · Ders

Claude Vision ve GPT-4V ile Görüntü + Metin Aracıları

API çağrılarında görüntü gönderme, görsel temellendirme ve görüntü farkındalıklı araç kullanımı.

Claude Vision ve GPT-4V ile Görüntü + Metin Aracıları, CoddyKit'te ücretsiz bir AI Agents dersidir. Bu, 4 dersinin 1. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, AI Agents öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. AI Agents kursu toplamda 4 dersten oluşur.

Çok Modlu Ajanlar: Görseller + Metin

Çok modlu bir ajan okuyabildiği gibi görebilir. Görselleri aynı API çağrısında metinle birlikte göndererek ajan, fotoğraflar hakkında soruları yanıtlayabilir, grafikleri analiz edebilir, ekran görüntülerini okuyabilir ve şemaları açıklayabilir; üstelik bunların tümünü aynı konuşma döngüsü içinde yapabilir.

OpenAI API'siyle Görsel Gönderme

OpenAI'nin görsel modelleri (GPT-4o, GPT-4V), düz bir dize yerine bir content dizisi kabul eder. Her öğe ya bir text nesnesi ya da bir image_url nesnesidir. Görsel, herkese açık bir URL veya base64 ile kodlanmış bir veri URL'si olabilir.

from openai import OpenAI

client = OpenAI(api_key='YOUR_OPENAI_API_KEY')

# Using a public URL
response = client.chat.completions.create(
    model='gpt-4o',
    messages=[
        {
            'role': 'user',
            'content': [
                {
                    'type': 'image_url',
                    'image_url': {
                        'url': 'https://example.com/chart.png'
                    }
                },
                {
                    'type': 'text',
                    'text': 'What trend does this chart show?'
                }
            ]
        }
    ],
    max_tokens=512
)
print(response.choices[0].message.content)

Base64 Görsel Kodlama

Herkese açık olmayan görselleri (yerel dosyalar, ekran görüntüleri ve kullanıcı yüklemeleri) base64 olarak kodlayın ve data:image/jpeg;base64,... URL şemasını kullanarak doğrudan API çağrısına yerleştirin.

import base64
from pathlib import Path

Path('screenshot.png').write_bytes(b'\x89PNG\r\n\x1a\n' + bytes(range(40)))

def encode_image_to_base64(image_path: str) -> str:
    with open(image_path, 'rb') as f:
        return base64.b64encode(f.read()).decode('utf-8')

def build_image_message(image_path: str, question: str, mime: str = 'jpeg') -> dict:
    b64 = encode_image_to_base64(image_path)
    data_url = f'data:image/{mime};base64,{b64}'
    return {
        'role': 'user',
        'content': [
            {'type': 'image_url', 'image_url': {'url': data_url}},
            {'type': 'text', 'text': question}
        ]
    }

message = build_image_message('screenshot.png', 'What error is shown?', mime='png')
print('Message built, image size:', len(message['content'][0]['image_url']['url']))

Claude Görsel API'si

Anthropic'in Claude modelleri de görsel işlemeyi destekler. İçerik bloğu, source alanında type: base64 ve media_type kullanır. Yapı OpenAI'ninkinden biraz farklıdır, ancak aynı ölçüde güçlüdür.

import anthropic
import base64

client = anthropic.Anthropic(api_key='YOUR_ANTHROPIC_API_KEY')

with open('diagram.png', 'rb') as f:
    image_data = base64.standard_b64encode(f.read()).decode('utf-8')

response = client.messages.create(
    model='claude-opus-4-5',
    max_tokens=512,
    messages=[
        {
            'role': 'user',
            'content': [
                {
                    'type': 'image',
                    'source': {
                        'type': 'base64',
                        'media_type': 'image/png',
                        'data': image_data
                    }
                },
                {
                    'type': 'text',
                    'text': 'Describe the architecture shown in this diagram.'
                }
            ]
        }
    ]
)
print(response.content[0].text)

Dosya Uzantısından MIME Türünü Tespit Etme

Farklı görsel biçimleri (JPEG, PNG, GIF, WebP) farklı MIME türleri kullanır. Ajan kodunuzda bunu hiçbir zaman sabit olarak belirtmek zorunda kalmamak için MIME türünü dosya uzantısından otomatik olarak tespit edin.

import os
import base64

with open('photo.jpg', 'wb') as f:
    f.write(b'\xff\xd8\xff' + bytes(range(30)))

MIME_MAP = {
    '.jpg': 'image/jpeg',
    '.jpeg': 'image/jpeg',
    '.png': 'image/png',
    '.gif': 'image/gif',
    '.webp': 'image/webp'
}

def get_mime_type(image_path: str) -> str:
    ext = os.path.splitext(image_path)[1].lower()
    mime = MIME_MAP.get(ext)
    if not mime:
        raise ValueError(f'Unsupported image format: {ext}')
    return mime

def load_image_as_base64(image_path: str) -> tuple:
    """Returns (base64_string, mime_type)"""
    mime = get_mime_type(image_path)
    with open(image_path, 'rb') as f:
        b64 = base64.b64encode(f.read()).decode('utf-8')
    return b64, mime

b64, mime = load_image_as_base64('photo.jpg')
print(f'MIME: {mime}, Size: {len(b64)} bytes base64')

Ajan Döngüsünde Görsel Analizi

Bir ajan döngüsünde görsel analizi bir araçtır. Ajan, diğer araçlarda olduğu gibi bunu ne zaman çağıracağına karar verir. Aracı araç şemasında tanımlayın ve ajanın programatik olarak üzerinde akıl yürütebilmesi için yapılandırılmış veriler (JSON) döndürün.

def analyze_image_tool(image_path: str, query: str) -> dict:
    """
    Agent tool: analyse an image and return structured findings.
    """
    import anthropic, base64
    client = anthropic.Anthropic(api_key='YOUR_API_KEY')
    b64, mime = load_image_as_base64(image_path)

    structured_query = (
        query + '\n\nRespond with JSON only: '
        '{"description": str, "objects": [str], "text_found": str, "confidence": float}'
    )
    response = client.messages.create(
        model='claude-opus-4-5',
        max_tokens=512,
        messages=[{
            'role': 'user',
            'content': [
                {'type': 'image', 'source': {'type': 'base64',
                  'media_type': mime, 'data': b64}},
                {'type': 'text', 'text': structured_query}
            ]
        }]
    )
    import json
    return json.loads(response.content[0].text)

Görsel Ayrıntı Düzeyini Denetleme (OpenAI)

OpenAI'nin görsel API'si bir detail parametresi kabul eder: low (hızlı, ucuz, 85 belirteç), high (ayrıntılı, görseli döşelere böler, 1105 belirtece kadar) veya auto (kararı model verir). Basit evet/hayır soruları için low, küçük metinleri okumak gibi ayrıntılı analizler için high kullanın.

def query_image_openai(
    image_path: str,
    question: str,
    detail: str = 'auto'  # 'low', 'high', or 'auto'
) -> str:
    import base64
    from openai import OpenAI
    client = OpenAI(api_key='YOUR_OPENAI_API_KEY')
    b64, mime = load_image_as_base64(image_path)
    data_url = f'data:{mime};base64,{b64}'

    response = client.chat.completions.create(
        model='gpt-4o',
        max_tokens=512,
        messages=[{
            'role': 'user',
            'content': [
                {
                    'type': 'image_url',
                    'image_url': {'url': data_url, 'detail': detail}
                },
                {'type': 'text', 'text': question}
            ]
        }]
    )
    return response.choices[0].message.content

Çok Görselli Konuşmalar

Tek bir iletide birden fazla görsel gönderebilir veya bunları bir konuşmanın farklı turlarına yayabilirsiniz. Bu, karşılaştırma görevlerini mümkün kılar: 'Bu iki ekran görüntüsünü karşılaştırın ve neyin değiştiğini açıklayın.'

def compare_two_images(
    image_path_1: str,
    image_path_2: str,
    comparison_question: str
) -> str:
    import anthropic, base64
    client = anthropic.Anthropic(api_key='YOUR_API_KEY')
    b64_1, mime_1 = load_image_as_base64(image_path_1)
    b64_2, mime_2 = load_image_as_base64(image_path_2)

    response = client.messages.create(
        model='claude-opus-4-5',
        max_tokens=512,
        messages=[{
            'role': 'user',
            'content': [
                {'type': 'image', 'source': {'type': 'base64',
                  'media_type': mime_1, 'data': b64_1}},
                {'type': 'image', 'source': {'type': 'base64',
                  'media_type': mime_2, 'data': b64_2}},
                {'type': 'text', 'text': comparison_question}
            ]
        }]
    )
    return response.content[0].text

Görsel Ajan: Ekran Görüntüsü Okuyucu

Pratik bir kullanım alanı, uygulama ekran görüntülerini okuyarak form alanı değerlerini, hata iletilerini veya kullanıcı arayüzü durumunu çıkaran bir ajandır. Bu, sınama otomasyonu ve izleme işlem hatları için yararlıdır.

SCREENSHOT_READER_PROMPT = (
    'You are a UI analyser. Given this application screenshot, extract:\n'
    '1. The current page/screen name\n'
    '2. Any error messages\n'
    '3. Key UI elements visible (buttons, form fields, text)\n'
    '4. The overall app state\n\n'
    'Return JSON: {"screen": str, "errors": [str], '
    '"elements": [str], "state": str}'
)

def read_screenshot(screenshot_path: str) -> dict:
    import anthropic, base64, json
    client = anthropic.Anthropic(api_key='YOUR_API_KEY')
    b64, mime = load_image_as_base64(screenshot_path)
    response = client.messages.create(
        model='claude-opus-4-5',
        max_tokens=512,
        messages=[{
            'role': 'user',
            'content': [
                {'type': 'image', 'source': {'type': 'base64',
                  'media_type': mime, 'data': b64}},
                {'type': 'text', 'text': SCREENSHOT_READER_PROMPT}
            ]
        }]
    )
    return json.loads(response.content[0].text)

Görsel Çağrıları İçin Maliyet Eniyileştirmesi

Görsel API çağrıları yalnızca metin içeren çağrılardan önemli ölçüde daha pahalıdır. Maliyetleri şu yollarla eniyileştirin: kodlamadan önce görselleri yeniden boyutlandırın (çoğu model 512×512–2048×2048 boyutlarını kabul eder), basit görevler için detail=low kullanın, değişmemiş görsellerin analiz sonuçlarını önbelleğe alın ve birden fazla soruyu tek çağrıda toplayın.

from PIL import Image
import io, base64

def resize_and_encode(
    image_path: str,
    max_dim: int = 1024
) -> tuple:
    img = Image.open(image_path)
    # Resize maintaining aspect ratio
    ratio = min(max_dim / img.width, max_dim / img.height)
    if ratio < 1.0:
        new_w = int(img.width * ratio)
        new_h = int(img.height * ratio)
        img = img.resize((new_w, new_h), Image.LANCZOS)
        print(f'Resized to {new_w}x{new_h} (from {img.width}x{img.height})')

    # Convert to JPEG for smaller size
    buf = io.BytesIO()
    img.save(buf, format='JPEG', quality=85)
    b64 = base64.b64encode(buf.getvalue()).decode('utf-8')
    return b64, 'image/jpeg'

Görsel Sınırlamaları ve Geri Dönüşler

Görsel modellerinin sınırlamaları vardır: çok küçük metinleri güvenilir biçimde okuyamaz, yüksek oranda sıkıştırılmış görsellerde zorlanır ve ayrıntıları uydurabilirler. Kritik çıkarılmış verileri (örneğin grafiklerdeki sayıları) her zaman, güven puanları isteyen bir geri dönüş istemiyle doğrulayın.

def analyze_with_confidence(
    image_path: str,
    question: str,
    confidence_threshold: float = 0.7
) -> dict:
    import anthropic, json
    client = anthropic.Anthropic(api_key='YOUR_API_KEY')
    b64, mime = load_image_as_base64(image_path)

    prompt = (
        question + '\n\nAlso rate your confidence (0.0-1.0) in the answer.\n'
        'Return JSON: {"answer": str, "confidence": float, '
        '"uncertainty_reason": str}'
    )
    response = client.messages.create(
        model='claude-opus-4-5', max_tokens=256,
        messages=[{'role': 'user', 'content': [
            {'type': 'image', 'source': {'type': 'base64',
              'media_type': mime, 'data': b64}},
            {'type': 'text', 'text': prompt}
        ]}]
    )
    result = json.loads(response.content[0].text)
    if result['confidence'] < confidence_threshold:
        result['action'] = 'human_review_needed'
    return result

Bilgi Kontrolü

OpenAI görsel API'sinde görsel analizinin ayrıntı düzeyini ve maliyetini hangi parametre denetler?

Özet: Görsel-Metin Ajanları

Harika iş! Şunları öğrendiniz:

  • OpenAI görsel işleme: image_url + text nesnelerini içeren content dizisi; URL ve base64 desteği
  • Claude görsel işleme: source.type: base64 ve media_type
  • Base64 kodlama: dosyayı oku → base64 ile kodla → veri URL'si olarak yerleştir
  • Ayrıntı düzeyi: hızlı ve ucuz işlemler için low, ayrıntılı analiz için high kullanın
  • Maliyet eniyileştirmesi: görselleri yeniden boyutlandırın, soruları tek çağrıda toplayın ve sonuçları önbelleğe alın

Sırada: Whisper transkripsiyonu ve TTS yanıtlarıyla ses-metin ajanı iş akışları.

Sıkça Sorulan Sorular

“Claude Vision ve GPT-4V ile Görüntü + Metin Aracıları” dersi ücretsiz mi?

Evet — “Claude Vision ve GPT-4V ile Görüntü + Metin Aracıları” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve AI Agents kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. AI Agents kursu toplamda 4 dersten oluşur.

“Claude Vision ve GPT-4V ile Görüntü + Metin Aracıları” dersinde ne öğreneceğim?

API çağrılarında görüntü gönderme, görsel temellendirme ve görüntü farkındalıklı araç kullanımı. AI Agents ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

AI Agents öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te AI Agents, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 1. dersidir.

“Claude Vision ve GPT-4V ile Görüntü + Metin Aracıları” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu AI Agents dersinde kod yazıp çalıştırabilir miyim?

Evet. Her AI Agents dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. Claude Vision ve GPT-4V ile Görüntü + Metin Aracıları
  2. Ses + Metin Aracı İş Akışları
  3. Aracılarda Video Anlama
  4. Çapraz Modlu Akıl Yürütme Örüntüleri
← AI Agents Sayfasına Dön