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 resultDü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
- Yardımcıdan Özerk Aracıya
- Dünya Modelleri ve Öngörücü Planlama
- Özerk Aracılarda Hizalama Zorlukları
- Araştırmanın Sınırları: AGI ve Ötesi