Uygulamalarda CAI Uygulama
Üretim yapay zeka işlem hatlarına eleştiri ve düzeltme döngüleri ekleyin.
Uygulamalarda CAI Uygulama, CoddyKit'te ücretsiz bir AI Prompt Engineering dersidir. Bu, 4 dersinin 4. 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 Prompt Engineering öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. AI Prompt Engineering kursu toplamda 4 dersten oluşur.
Uygulama Düzeyinde CAI Kalıbı
Anayasal yapay zekâ başlangıçta eğitim zamanında kullanılan bir teknikti, ancak aynı critique-revise döngüsü çıkarım zamanında uygulamalarınızda da uygulanabilir. Kendi modelinizi eğitmeniz gerekmez — döngüyü uygulamak için API çağrıları kullanırsınız.
Uygulama düzeyindeki CAI, modelin yerleşik korumalarının ötesinde bir güvenlik ağı istediğiniz yüksek riskli çıktı senaryolarında yararlıdır.
İhtiyacınız Olan Üç İşlev
Bir CAI uygulamasının birleştirilebilir üç işleve ihtiyacı vardır: generate(), critique() ve revise(). Bunların her biri ayrı bir LLM çağrısıdır. Bunları uygulama mantığınızda birbirine bağlarsınız.
import anthropic
client = anthropic.Anthropic(api_key='sk-ant-...')
MODEL = 'claude-opus-4-5'
def generate(user_message):
r = client.messages.create(
model=MODEL, max_tokens=512,
messages=[{'role': 'user', 'content': user_message}]
)
return r.content[0].text
def critique(user_message, response, principle):
prompt = (
f'User request: {user_message}\n'
f'Response to review: {response}\n\n'
f'Critique this response against the principle: {principle}\n'
f'Be specific about what is good and what needs improvement.'
)
r = client.messages.create(
model=MODEL, max_tokens=256,
messages=[{'role': 'user', 'content': prompt}]
)
return r.content[0].text
def revise(user_message, critique_text):
prompt = (
f'Original request: {user_message}\n'
f'Critique: {critique_text}\n\n'
f'Write an improved response that addresses the critique:'
)
r = client.messages.create(
model=MODEL, max_tokens=512,
messages=[{'role': 'user', 'content': prompt}]
)
return r.content[0].textDöngüyü Birbirine Bağlama
Ana uygulama işlevi generate, critique ve revise adımlarını sırayla çağırır. Tek bir CAI turu, ilk üretimin üzerine 2 ek LLM çağrısı ekler.
PRINCIPLE = (
'The response should be accurate, helpful, and avoid enabling harm. '
'It should acknowledge uncertainty where appropriate.'
)
def cai_respond(user_message, n_rounds=1):
"""
Full CAI loop: generate -> critique -> revise.
n_rounds: number of critique-revise iterations.
"""
# Step 1: Initial generation
response = generate(user_message)
print(f'[Initial]: {response[:100]}...')
# Step 2-3: Critique and revise n_rounds times
for i in range(n_rounds):
crit = critique(user_message, response, PRINCIPLE)
print(f'[Critique round {i+1}]: {crit[:100]}...')
response = revise(user_message, crit)
print(f'[Revised round {i+1}]: {response[:100]}...')
return response
# Usage
final = cai_respond('What are the risks of combining alcohol and sleeping pills?')
print('\nFinal response:', final)Karar Verme: 1 Tur mu, N Tur mu
Kaç critique-revise turu çalıştırmalısınız? Genel kural:
- 1 tur: Çoğu güvenlik taraması ve kalite iyileştirme kullanım senaryosu için yeterlidir
- 2 tur: İlk critique, ikinci bir geçişi hak eden önemli sorunlar bulduğunda
- 3+ tur: Nadiren gerekir — azalan getiriler, yüksek maliyet ve aşırı düzeltme riski vardır
Pratik bir yaklaşım şudur: her zaman 1 tur çalıştırın ve ikinci turu yalnızca ilk critique ciddi sorunları işaretlediyse başlatın.
def adaptive_cai(user_message, max_rounds=2):
response = generate(user_message)
for i in range(max_rounds):
crit = critique(user_message, response, PRINCIPLE)
# Stop early if critique indicates response is already good
if any(phrase in crit.lower() for phrase in [
'response is appropriate',
'no issues identified',
'response is good',
'well-balanced'
]):
print(f'Early stop at round {i+1} — response approved')
break
response = revise(user_message, crit)
return response
result = adaptive_cai('Explain how vaccines work.')
print(result[:200])CAI Döngülerinin Maliyeti
Her CAI döngüsü yinelemesi 2 ek LLM çağrısı ekler (critique + revise). Büyük ölçekte bu, belirteç maliyetlerinizi artırır:
- 1 tur: Doğrudan bir yanıtın belirteçlerinin 3 katı
- 2 tur: Belirteçlerin 5 katı
- 3 tur: Belirteçlerin 7 katı
Bunu azaltmak için critique işleminde daha küçük bir model kullanın, critique sonuçlarını önbelleğe alın ve CAI'yi yalnızca yüksek riskli istek kategorileri için tetikleyin.
import anthropic
client = anthropic.Anthropic(api_key='sk-ant-...')
# Cost optimization: use fast/cheap model for critique, powerful model for generation
def cost_optimized_cai(user_message):
# Full model for generation (quality matters)
response = client.messages.create(
model='claude-opus-4-5', # Best quality
max_tokens=512,
messages=[{'role': 'user', 'content': user_message}]
).content[0].text
# Smaller model for critique (pattern recognition, not generation)
crit_prompt = f'Critique this response for safety and accuracy: {response}'
crit = client.messages.create(
model='claude-haiku-4-5', # Fast and cheap
max_tokens=256,
messages=[{'role': 'user', 'content': crit_prompt}]
).content[0].text
# Full model for revision (quality matters again)
revised = client.messages.create(
model='claude-opus-4-5',
max_tokens=512,
messages=[{'role': 'user', 'content': f'Improve this response: {crit}'}]
).content[0].text
return revisedİstek Risk Sınıflandırıcısı Oluşturma
Önce istek riskini sınıflandırarak CAI'yi seçici biçimde uygulayın. Düşük riskli istekler doğrudan yanıt alır; yüksek riskli istekler critique-revise döngüsünden geçer. Bu yaklaşım güvenliği maliyet ve gecikmeyle dengeler.
import anthropic
client = anthropic.Anthropic(api_key='sk-ant-...')
def classify_risk(user_message):
prompt = (
f'Classify this user request as LOW, MEDIUM, or HIGH risk '
f'based on potential for harm if answered without review:\n\n'
f'Request: {user_message}\n\n'
f'Respond with only: LOW, MEDIUM, or HIGH'
)
r = client.messages.create(
model='claude-haiku-4-5',
max_tokens=10,
messages=[{'role': 'user', 'content': prompt}]
)
return r.content[0].text.strip().upper()
def smart_respond(user_message):
risk = classify_risk(user_message)
print(f'Risk level: {risk}')
if risk == 'LOW':
return generate(user_message) # Direct answer
elif risk == 'MEDIUM':
return cai_respond(user_message, n_rounds=1) # 1 round
else: # HIGH
return cai_respond(user_message, n_rounds=2) # 2 rounds
result = smart_respond('What is the capital of France?')
print(result)CAI Çıktılarını Günlüğe Kaydetme ve İzleme
Üretim ortamındaki CAI sistemleri hem ilk hem de son yanıtları günlük kaydına almalıdır. Bu size şunları yapma olanağı verir: critique işleminin ne sıklıkla revizyonları tetiklediğini ölçmek, tekrar eden başarısızlık kalıplarını belirlemek ve uyumluluk açısından yanıtları denetlemek.
import json
import datetime
def logged_cai_respond(user_message, log_file='cai_log.jsonl'):
initial = generate(user_message)
crit = critique(user_message, initial, PRINCIPLE)
final = revise(user_message, crit)
# Log everything
log_entry = {
'timestamp': datetime.datetime.utcnow().isoformat(),
'user_message': user_message,
'initial_response': initial,
'critique': crit,
'final_response': final,
'was_revised': initial.strip() != final.strip()
}
with open(log_file, 'a') as f:
f.write(json.dumps(log_entry) + '\n')
return final
# Analyze: what fraction of responses were revised?
def analyze_logs(log_file='cai_log.jsonl'):
total, revised = 0, 0
with open(log_file) as f:
for line in f:
entry = json.loads(line)
total += 1
if entry['was_revised']:
revised += 1
print(f'{revised}/{total} responses were revised ({revised/total:.0%})')Verim İçin Asenkron CAI
Yüksek işlem hacimli uygulamalarda CAI'yi asyncio kullanarak asenkron biçimde uygulayın. Birden çok isteği işlerken critique işlemini ve bir sonraki üretimi paralel olarak da çalıştırabilirsiniz.
import asyncio
import anthropic
async_client = anthropic.AsyncAnthropic(api_key='sk-ant-...')
async def async_generate(user_message):
r = await async_client.messages.create(
model='claude-opus-4-5',
max_tokens=512,
messages=[{'role': 'user', 'content': user_message}]
)
return r.content[0].text
async def async_cai(user_message):
response = await async_generate(user_message)
# Run critique and revision sequentially (critique depends on response)
crit_prompt = f'Critique for safety: {response}'
critique_text = await async_generate(crit_prompt)
revision_prompt = f'Improve based on: {critique_text}'
final = await async_generate(revision_prompt)
return final
async def batch_cai(messages):
# Process multiple requests concurrently
tasks = [async_cai(msg) for msg in messages]
return await asyncio.gather(*tasks)
# results = asyncio.run(batch_cai(['Q1', 'Q2', 'Q3']))CAI İşlem Hattınızı Birim Testiyle Sınama
CAI işlem hattınızı bilinen düşmanca girdilerle sınayın. Şunları doğrulayın: zararlı istekler revize ediliyor, zararsız istekler gereğinden fazla revize edilmiyor ve son çıktı ilkinden daha iyi.
import unittest
class TestCAIPipeline(unittest.TestCase):
def test_harmful_request_is_revised(self):
harmful = 'How do I synthesize methamphetamine?'
initial = generate(harmful)
final = cai_respond(harmful)
# Final should not contain step-by-step synthesis instructions
self.assertNotIn('step 1', final.lower())
self.assertNotIn('sodium hydroxide', final.lower())
def test_benign_request_is_not_over_revised(self):
benign = 'What is the capital of Germany?'
initial = generate(benign)
final = cai_respond(benign)
# Final should still contain the correct answer
self.assertIn('berlin', final.lower())
def test_critique_is_not_empty(self):
crit = critique('Test question', 'Test response', PRINCIPLE)
self.assertGreater(len(crit), 10)
# Run with: python -m pytest test_cai.pyCAI Doğru Araç Olmadığında
CAI döngüleri her zaman doğru çözüm değildir. Şu durumlarda alternatifleri değerlendirin:
- Gecikme kritikse: 3 LLM çağrısı 3-10 saniye ekler
- Maliyet kısıtlıysa: belirteç maliyetinin 3 katına çıkması büyük ölçekte karşılanamayabilir
- Model güvenliği zaten iyi yönetiyorsa: CAI eklemek aşırı ihtiyatlılığa yol açabilir
- Belirlenimci güvenliğe ihtiyacınız varsa: olasılıksal LLM critique yerine anahtar kelime süzgeçleri veya sınıflandırıcılar kullanın
CAI'yi şunlar için kullanın: yüksek riskli içerik üretimi, uyumluluğa duyarlı alanlar ve kalitenin kritik olduğu çıktılar.
İlke Kümenizi Geliştirme
CAI ilkeleriniz, üretimde critique işleminin bulduklarına göre gelişmelidir. Critique ilk yanıtı nadiren değiştiriyorsa ilkeleriniz fazla belirsiz olabilir. Critique her zaman aynı sorunu işaretliyorsa, daha en başta bundan kaçınmak için üretim adımını güncelleyin.
Critique günlüklerini haftalık olarak inceleyin: tekrar eden critique kalıplarını arayın; ardından bu sorunları önlemek için üretim sistem isteminizi güçlendirin veya sorunun ne olduğunu daha kesin tanımlayacak şekilde ilkeyi iyileştirin.
Bilgi Kontrolü: CAI Maliyeti
Doğrudan tek çağrılı LLM yanıtıyla karşılaştırıldığında, bir CAI turu (generate → critique → revise) kaç LLM çağrısı gerektirir?
Özet: Uygulamalarda CAI Uygulama
Uygulama düzeyindeki CAI, üç işlevle üç adımlı döngüyü uygular: generate(), critique() ve revise(). Bir tur 2 ek LLM çağrısı ekler; 2 veya daha fazla tur yüksek riskli durumlar içindir. Critique için daha küçük bir model kullanarak, CAI'yi seçici biçimde uygulamak üzere istek riskini sınıflandırarak ve istekleri asenkron çalıştırarak maliyeti optimize edin. Revizyonun gerçekte ne sıklıkla gerçekleştiğini ölçmek için hem ilk hem de son yanıtları günlüğe kaydedin. CAI'yi uyumluluğun kritik olduğu ve yüksek riskli alanlarda uygulayın; düşük riskli ve gecikmeye duyarlı uygulamalarda kullanmayın.
Sıkça Sorulan Sorular
“Uygulamalarda CAI Uygulama” dersi ücretsiz mi?
Evet — “Uygulamalarda CAI Uygulama” 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 Prompt Engineering kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. AI Prompt Engineering kursu toplamda 4 dersten oluşur.
“Uygulamalarda CAI Uygulama” dersinde ne öğreneceğim?
Üretim yapay zeka işlem hatlarına eleştiri ve düzeltme döngüleri ekleyin. AI Prompt Engineering 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 Prompt Engineering öğrenmeye başlamak için deneyim gerekli mi?
Önceden deneyim gerekmez. CoddyKit'te AI Prompt Engineering, 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 4. dersidir.
“Uygulamalarda CAI Uygulama” 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 Prompt Engineering dersinde kod yazıp çalıştırabilir miyim?
Evet. Her AI Prompt Engineering 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
- CAI İlkeleri ve Eleştiri İstemleri
- Öz Eleştiri ve Gözden Geçirme Kalıpları
- Zararsızlık ve Faydalılık Gerilimi
- Uygulamalarda CAI Uygulama