0Pricing
AI Agents · Ders

Dünya Modelleri ve Öngörücü Planlama

Eyleme geçmeden önce gelecekteki durumları canlandıran etmenler: yapay zeka için zihinsel simülasyon.

Dünya Modelleri ve Öngörücü Planlama, CoddyKit'te ücretsiz bir AI Agents dersidir. Bu, 4 dersinin 2. 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.

Dünya Modeli Nedir?

Bir dünya modeli, etmenin ortamla ilgili içsel temsilidir: hangi nesnelerin var olduğu, durumlarının ne olduğu, nasıl değiştiklerini hangi kuralların yönettiği ve etmenin onları etkilemek için neler yapabileceği. Bu, etmenin dünyaya ilişkin zihinsel benzetimidir.

Dünya modeli olmadan etmen yalnızca gözlemlere tepki verebilir. Dünya modeliyle öngörüde bulunabilir ve plan yapabilir.

Dünya Durumu Temsili

Dünya durumu, belirli bir andaki ortamla ilgili tüm önemli gerçeklerin anlık görüntüsüdür. Bir Nesnelerin İnterneti etmeni için bu, güncel sensör ölçümleri ve cihaz durumları olabilir. Bir yazılım etmeni için yönettiği dosyaların, API'lerin ve veritabanlarının durumu olabilir.

from dataclasses import dataclass, field
from datetime import datetime
from typing import Any

@dataclass
class WorldState:
    timestamp: str = ''
    entities: dict = field(default_factory=dict)  # entity_id -> attributes
    relationships: list = field(default_factory=list)
    agent_position: str = 'idle'
    pending_actions: list = field(default_factory=list)

    def __post_init__(self):
        if not self.timestamp:
            self.timestamp = datetime.utcnow().isoformat()

    def update_entity(self, entity_id: str, attributes: dict):
        current = self.entities.get(entity_id, {})
        self.entities[entity_id] = {**current, **attributes}

    def snapshot(self) -> dict:
        return {
            'timestamp': self.timestamp,
            'entities': dict(self.entities),
            'agent_position': self.agent_position
        }

# Example:
world = WorldState()
world.update_entity('server_room', {'temp_c': 22.5, 'humidity': 55})
world.update_entity('hvac_unit_1', {'status': 'off', 'setpoint': 22})
print(world.snapshot())

Geçiş Modeli

Bir geçiş modeli, bir eyleme yanıt olarak dünya durumunun nasıl değiştiğini tanımlar: next_state = transition(current_state, action). Etmenin bir eylemi gerçekten gerçekleştirmeden, bu eylemden sonra dünyanın nasıl görüneceğini öngörmesini sağlar.

import copy

def transition(state: WorldState, action: dict) -> WorldState:
    """
    Predict next state given current state and action.
    Returns a new WorldState (does not modify original).
    """
    next_state = copy.deepcopy(state)

    action_type = action.get('type')
    target = action.get('target')
    params = action.get('params', {})

    if action_type == 'TURN_ON_HVAC':
        next_state.update_entity(target, {
            'status': 'on',
            'setpoint': params.get('setpoint', 22)
        })
        # Simulate temperature effect (simplified linear model)
        room = action.get('room', 'server_room')
        current_temp = next_state.entities.get(room, {}).get('temp_c', 25)
        next_state.update_entity(room, {
            'temp_c': max(current_temp - 2, params.get('setpoint', 22))
        })

    elif action_type == 'SEND_ALERT':
        next_state.pending_actions.append({'alert_sent': True})

    return next_state

# Predict effect of turning on HVAC:
action = {'type': 'TURN_ON_HVAC', 'target': 'hvac_unit_1',
          'room': 'server_room', 'params': {'setpoint': 20}}
next_world = transition(world, action)
print('After action:', next_world.entities.get('server_room'))

İleriye Bakmalı Planlama

İleriye bakmalı planlama, bir eylemi gerçekleştirmeye karar vermeden önce geleceğe doğru N adımın benzetimini yapar. Etmen birden çok eylem dizisini inceler, ortaya çıkan her durumu değerlendirir ve öngörülen en iyi sonuca götüren diziyi seçer.

def evaluate_state(state: WorldState) -> float:
    """
    Compute a scalar utility score for a world state.
    Higher = better for the agent's goals.
    """
    score = 1.0
    server_room = state.entities.get('server_room', {})
    temp = server_room.get('temp_c', 25)
    # Penalty for high temperature
    if temp > 30:
        score -= (temp - 30) * 0.2
    # Penalty for very low temperature (over-cooling)
    if temp < 18:
        score -= (18 - temp) * 0.1
    return max(0.0, score)

def lookahead(state: WorldState, possible_actions: list, depth: int = 3) -> dict:
    """Evaluate top-level actions by simulating depth steps ahead."""
    best_action = None
    best_score = -float('inf')

    for action in possible_actions:
        simulated = transition(state, action)
        # Simulate depth more steps (simplified: no branching)
        for _ in range(depth - 1):
            simulated = transition(simulated, {'type': 'NOOP'})
        score = evaluate_state(simulated)
        if score > best_score:
            best_score = score
            best_action = action

    return {'best_action': best_action, 'expected_score': round(best_score, 3)}

Dünya Modeli Olarak LLM

Biçimselleştirilmesi zor karmaşık ortamlar için LLM'nin kendisi dünya modeli olarak görev yapabilir. Etmenin belirli bir eylemi gerçekleştirmesi durumunda ne olacağını öngörmesini isteyin. Bu yaklaşım, kesinlikten ödün vererek genellik kazandırır; LLM rastgele alanlar hakkında akıl yürütebilir.

import anthropic
import json

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

def llm_predict(
    current_state: dict,
    proposed_action: dict,
    domain_description: str = ''
) -> dict:
    prompt = (
        f'Domain: {domain_description}\n\n'
        f'Current state: {json.dumps(current_state, indent=2)}\n\n'
        f'Proposed action: {json.dumps(proposed_action, indent=2)}\n\n'
        'Predict the next world state after this action. '
        'Consider direct effects and second-order effects.\n'
        'Return JSON: {"predicted_state": dict, '
        '"confidence": float, "side_effects": [str]}'
    )
    response = client.messages.create(
        model='claude-opus-4-5', max_tokens=512,
        messages=[{'role': 'user', 'content': prompt}]
    )
    return json.loads(response.content[0].text)

Model Tabanlı ve Modelsiz Planlama

Model tabanlı: etmenin açık bir dünya modeli vardır, gelecek durumların benzetimini yapar ve planlar. Örnek kullanımı daha verimlidir ve daha iyi genelleme yapar. Modelsiz: etmen bir model olmadan deneyimden eylem-değer çiftlerini öğrenir. Daha basittir, ancak bir politika öğrenmek için daha fazla etkileşim gerektirir.

# Comparison table
COMPARISON = {
    'model_based': {
        'pros': [
            'Can plan before acting (lookahead)',
            'Works well with limited data',
            'Interpretable — you can inspect the world model',
            'Can simulate counterfactuals'
        ],
        'cons': [
            'Model can be wrong (model mismatch)',
            'Complex to build for arbitrary domains',
            'Planning is computationally expensive'
        ],
        'examples': 'AlphaGo, MCTS, agent with explicit WorldState'
    },
    'model_free': {
        'pros': [
            'No need to model the world explicitly',
            'Learns from raw experience',
            'Simpler architecture'
        ],
        'cons': [
            'Requires many interactions to learn',
            'Poor generalisation to new scenarios',
            'Cannot reason about unseen situations'
        ],
        'examples': 'Q-learning, policy gradient, basic RLHF'
    }
}

for approach, info in COMPARISON.items():
    print(f'{approach}: {info["examples"]}')

Dünya Modellerinde Belirsizlik

Dünya modelleri yaklaşıktır. Tek bir nokta tahmini yerine olası durumlar üzerinde bir olasılık dağılımı tutarak belirsizliği hesaba katın. Belirsizlik yüksek olduğunda temkinli eylemler gerçekleştirin veya eyleme geçmeden önce daha fazla bilgi toplayın.

from statistics import mean, stdev

@dataclass
class UncertainState:
    entity_id: str
    attribute: str
    samples: list  # multiple estimates

    def mean(self) -> float:
        return mean(self.samples) if self.samples else 0.0

    def uncertainty(self) -> float:
        if len(self.samples) < 2:
            return float('inf')
        return stdev(self.samples)

    def should_gather_more_data(self, threshold: float = 2.0) -> bool:
        return self.uncertainty() > threshold

# Example: uncertain temperature estimate from multiple sensors
temp_state = UncertainState(
    entity_id='server_room',
    attribute='temp_c',
    samples=[22.1, 22.8, 21.9, 34.5, 22.3]  # one outlier
)
print(f'Mean temp: {temp_state.mean():.1f}C')
print(f'Uncertainty (stdev): {temp_state.uncertainty():.2f}')
print(f'Gather more data: {temp_state.should_gather_more_data()}')

Dünya Modelini Güncelleme

Her eylemden sonra etmen gerçek sonucu gözlemler ve dünya modelini günceller. Öngörü yanlışsa model daha doğru olacak şekilde güncellenir. Bu, model tabanlı etmen öğrenmesini yönlendiren gözlemle-güncelle-planla döngüsüdür.

class WorldModelAgent:
    def __init__(self):
        self.world = WorldState()
        self.prediction_errors = []

    def act(self, action: dict) -> dict:
        # 1. Predict next state
        predicted = transition(self.world, action)

        # 2. Take the action in the real world
        actual_observation = self._execute_action(action)

        # 3. Measure prediction error
        for entity_id, attrs in actual_observation.items():
            for attr, actual_val in attrs.items():
                predicted_val = predicted.entities.get(entity_id, {}).get(attr)
                if predicted_val is not None:
                    error = abs(actual_val - predicted_val)
                    self.prediction_errors.append(error)

        # 4. Update world model with actual observation
        for entity_id, attrs in actual_observation.items():
            self.world.update_entity(entity_id, attrs)

        return actual_observation

    def _execute_action(self, action: dict) -> dict:
        # Placeholder — in production this calls real APIs/sensors
        return {'server_room': {'temp_c': 23.0}}

    def model_accuracy(self) -> float:
        if not self.prediction_errors:
            return 1.0
        return max(0.0, 1.0 - mean(self.prediction_errors) / 10)

LLM ile Planlama: 3 Adımın Benzetimini Yapma

Doğal dil alanları için LLM'den önerilen bir planın 3 adımını çalıştırmadan önce benzetmesini yapmasını isteyin. LLM, her adımın öngörülen sonucunu değerlendirir ve olası sorunları işaretler; böylece etmenin öngörülen sonuçları kötü olan eylemleri gerçekleştirmesini önler.

import anthropic
import json

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

def simulate_plan_steps(goal: str, proposed_steps: list) -> dict:
    steps_str = json.dumps(proposed_steps, indent=2)
    prompt = (
        f'Goal: {goal}\n\n'
        f'Proposed plan steps:\n{steps_str}\n\n'
        'Simulate executing each step in order. For each step predict:\n'
        '- What changes in the world?\n'
        '- What could go wrong?\n'
        '- Is this step reversible?\n\n'
        'Return JSON: {"step_simulations": [{"step": int, '
        '"predicted_outcome": str, "risks": [str], "reversible": bool}], '
        '"plan_safe": bool, "recommendation": str}'
    )
    response = client.messages.create(
        model='claude-opus-4-5', max_tokens=1024,
        messages=[{'role': 'user', 'content': prompt}]
    )
    result = json.loads(response.content[0].text)
    if not result['plan_safe']:
        print(f'Plan safety concern: {result["recommendation"]}')
    return result

Dünya Modeline Ne Zaman Güvenilmeli

Bir dünya modeli, yalnızca geçiş işlevinin ve başlangıç durumunun doğruluğu ölçüsünde iyidir. Hızla değişen ortamlarda model kısa sürede güncelliğini yitirir. Bir eskime eşiği uygulayın: model N saniyedir güncellenmemişse ve bir eylem yüksek risk taşıyorsa önce ortamı yeniden gözlemleyin.

from datetime import datetime, timedelta

class StaleAwareWorldModel:
    def __init__(self, max_age_seconds: int = 60):
        self.state = WorldState()
        self.max_age = timedelta(seconds=max_age_seconds)
        self.last_observation_time = datetime.utcnow()

    def is_stale(self) -> bool:
        age = datetime.utcnow() - self.last_observation_time
        return age > self.max_age

    def refresh(self, observation_fn):
        new_observations = observation_fn()
        for entity_id, attrs in new_observations.items():
            self.state.update_entity(entity_id, attrs)
        self.last_observation_time = datetime.utcnow()
        print(f'World model refreshed')

    def plan_action(self, action: dict, observation_fn) -> dict:
        if self.is_stale():
            print('World model stale — refreshing before planning')
            self.refresh(observation_fn)
        return lookahead(self.state, [action], depth=3)

Karşıolgusal Akıl Yürütme

Bir dünya modeli karşıolgusal akıl yürütmeyi mümkün kılar: 'B eylemi yerine A eylemini yapsaydım ne olurdu?' Bu, hataları tekrarlamadan onlardan öğrenmek için güçlü bir yöntemdir — ajan, seçiminin neden ideal olmayan bir sonuca yol açtığını anlamak için karşıolgusal durumu benzetebilir.

import anthropic
import json

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

def counterfactual_analysis(
    actual_state_before: dict,
    action_taken: dict,
    actual_outcome: dict,
    alternative_action: dict
) -> dict:
    prompt = (
        'Analyse a counterfactual scenario:\n\n'
        f'Initial state: {json.dumps(actual_state_before, indent=2)}\n'
        f'Action taken: {json.dumps(action_taken, indent=2)}\n'
        f'Actual outcome: {json.dumps(actual_outcome, indent=2)}\n\n'
        f'Alternative action considered: {json.dumps(alternative_action, indent=2)}\n\n'
        'What would likely have happened with the alternative action?\n'
        'Return JSON: {"counterfactual_outcome": str, '
        '"better_choice": str, "lesson": str}'
    )
    response = client.messages.create(
        model='claude-opus-4-5', max_tokens=512,
        messages=[{'role': 'user', 'content': prompt}]
    )
    return json.loads(response.content[0].text)

Bilgi Kontrolü

Model tabanlı bir ajanın modelden bağımsız bir ajana göre temel avantajı nedir?

Özet: Dünya Modelleri ve Öngörülü Planlama

Harika çalıştınız! Temel çıkarımlar:

  • Dünya durumu: belirli bir andaki tüm ilgili varlık özniteliklerinin anlık görüntüsü
  • Geçiş modeli: next_state = transition(state, action) — etkileri öngörür
  • İleriye dönük bakış: N adım ilerisini benzetin, sonuçları değerlendirin ve en iyi eylemi seçin
  • Dünya modeli olarak LLM: biçimsel hâle getirilmesi zor alanlarda işe yarar
  • Belirsizlik: nokta tahminleri yerine dağılımları koruyun; belirsizlik yüksekken eylemde bulunmaktan kaçının
  • Eskime: model eskiyse yüksek riskli eylemlerden önce yeniden gözlem yapın

Sıradaki konu: hizalama zorlukları — gerçekten yararlı otonom ajanlar geliştirmenin neden zor olduğu.

Sıkça Sorulan Sorular

“Dünya Modelleri ve Öngörücü Planlama” dersi ücretsiz mi?

Evet — “Dünya Modelleri ve Öngörücü Planlama” 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.

“Dünya Modelleri ve Öngörücü Planlama” dersinde ne öğreneceğim?

Eyleme geçmeden önce gelecekteki durumları canlandıran etmenler: yapay zeka için zihinsel simülasyon. 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 2. dersidir.

“Dünya Modelleri ve Öngörücü Planlama” 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. Yardımcıdan Özerk Aracıya
  2. Dünya Modelleri ve Öngörücü Planlama
  3. Özerk Aracılarda Hizalama Zorlukları
  4. Araştırmanın Sınırları: AGI ve Ötesi
← AI Agents Sayfasına Dön