[{"data":1,"prerenderedAt":2635},["ShallowReactive",2],{"article-alternates":3,"article-\u002Ftr\u002Fai\u002Fprompt-versiyonlama-ve-a-b-testi-llm-operasyonun-disiplini":13},{"i18nKey":4,"paths":5},"ai-004-2026-05",{"de":6,"en":7,"es":8,"fr":9,"it":10,"ru":11,"tr":12},"\u002Fde\u002Fai\u002Fprompt-versionierung-llm-evaluation","\u002Fen\u002Fai\u002Fllm-ops-prompt-versioning-ab-testing","\u002Fes\u002Fai\u002Fversionado-prompts-ab-testing-llm-ops","\u002Ffr\u002Fai\u002Fversionamento-prompt-ab-test","\u002Fit\u002Fai\u002Fversionamento-prompt-e-a-b-test-disciplina-llm-ops","\u002Fru\u002Fai\u002Fprompt-versionierung-und-ab-tests-llm-ops-disziplin","\u002Ftr\u002Fai\u002Fprompt-versiyonlama-ve-a-b-testi-llm-operasyonun-disiplini",{"_path":12,"_dir":14,"_draft":15,"_partial":15,"_locale":16,"title":17,"description":18,"publishedAt":19,"modifiedAt":19,"category":14,"i18nKey":4,"tags":20,"readingTime":26,"author":27,"body":28,"_type":2629,"_id":2630,"_source":2631,"_file":2632,"_stem":2633,"_extension":2634},"ai",false,"","Prompt Versiyonlama ve A\u002FB Testi: LLM Operasyonun Disiplini","Production LLM sistemlerinde prompt versiyonlama, evaluation pipeline'ları ve Promptfoo\u002FLangSmith ile deterministik kalite kontrolü nasıl kurulur.","2026-05-13",[21,22,23,24,25],"llm-ops","prompt-engineering","evaluation","mlops","ai-quality",8,"Roibase",{"type":29,"children":30,"toc":2617},"root",[31,39,44,51,56,78,83,103,108,114,119,130,148,161,296,306,324,329,643,653,671,687,694,699,704,1020,1031,1115,1120,1126,1131,1183,1188,1478,1483,1702,1707,1713,1718,1730,1735,2060,2065,2071,2083,2088,2417,2422,2428,2433,2438,2471,2476,2488,2494,2499,2588,2593,2597,2611],{"type":32,"tag":33,"props":34,"children":35},"element","p",{},[36],{"type":37,"value":38},"text","LLM kullanan sistemlerde \"çalışıyor\" ile \"production'da güvenilir\" arasında 15 adım var. Pazarlama otomasyonunda Claude API'si markdown output üretiyor, müşteri yolculuğunda GPT segmentasyon yapıyor — ama prompt'u değiştirdiğinde nasıl emin oluyorsun ki regresyon yaratmadın? Yazılım mühendisliğinde versiyonlama, test coverage, CI\u002FCD standart; LLM operasyonunda aynı disiplin yoksa her deployment kumar.",{"type":32,"tag":33,"props":40,"children":41},{},[42],{"type":37,"value":43},"Promptfoo ve LangSmith gibi araçlar bu disiplini sağlıyor: prompt versiyonlama, deterministik evaluation, A\u002FB testi, metrik tracking. Bu yazı production LLM sisteminde kalite kontrolünü nasıl inşa edeceğini gösteriyor — kod değil, infrastrüktür seviyesinde.",{"type":32,"tag":45,"props":46,"children":48},"h2",{"id":47},"promptun-yazılım-kodu-olmadığı-yanılgısı",[49],{"type":37,"value":50},"Prompt'un Yazılım Kodu Olmadığı Yanılgısı",{"type":32,"tag":33,"props":52,"children":53},{},[54],{"type":37,"value":55},"Çoğu ekip prompt'u \"konfigürasyon dosyası\" gibi görüyor — UI'da editör, Notion'da dokümantasyon, n8n workflow'unda hardcoded text node. Gerçekte prompt, sistemin davranışını tanımlayan executable specification. Ama versiyonlama yok, diff yok, rollback yok.",{"type":32,"tag":33,"props":57,"children":58},{},[59,61,68,70,76],{"type":37,"value":60},"Git commit message'ı \"fix typo\" olan bir değişiklik, model output'unun tonunu değiştirip metrik'leri düşürebilir. Özellikle structured output senaryolarında (JSON schema, markdown frontmatter, SQL sorgusu) tek kelime format kırılması zincirleme hata yaratır. Örnek: ",{"type":32,"tag":62,"props":63,"children":65},"code",{"className":64},[],[66],{"type":37,"value":67},"OUTPUT FORMAT: JSON",{"type":37,"value":69}," yerine ",{"type":32,"tag":62,"props":71,"children":73},{"className":72},[],[74],{"type":37,"value":75},"OUTPUT FORMAT: Valid JSON",{"type":37,"value":77}," yazınca model bazen açıklama paragrafı ekliyor — downstream parser crash, alert patlaması, 3 saat debugging.",{"type":32,"tag":33,"props":79,"children":80},{},[81],{"type":37,"value":82},"Versiyonlama disiplini şu soruları yanıtlamalı:",{"type":32,"tag":84,"props":85,"children":86},"ul",{},[87,93,98],{"type":32,"tag":88,"props":89,"children":90},"li",{},[91],{"type":37,"value":92},"Hangi prompt versiyonu şu an production'da?",{"type":32,"tag":88,"props":94,"children":95},{},[96],{"type":37,"value":97},"2 hafta önceki versiyonla şimdiki arasındaki performans farkı ne?",{"type":32,"tag":88,"props":99,"children":100},{},[101],{"type":37,"value":102},"A\u002FB testinde hangi varyant conversion'ı 8% artırdı?",{"type":32,"tag":33,"props":104,"children":105},{},[106],{"type":37,"value":107},"Bu soruları yanıtlayamıyorsan \"AI operasyonu\" yapıyorsun değil, manuel deney yürütüyorsun.",{"type":32,"tag":45,"props":109,"children":111},{"id":110},"evaluation-pipeline-outputu-ölçmenin-üç-katmanı",[112],{"type":37,"value":113},"Evaluation Pipeline: Output'u Ölçmenin Üç Katmanı",{"type":32,"tag":33,"props":115,"children":116},{},[117],{"type":37,"value":118},"LLM output'unu değerlendirmek subjektif gibi görünür ama production sisteminde deterministik metrikler kurmak mümkün. Evaluation üç katmanda çalışır: syntax, semantics, business outcome.",{"type":32,"tag":33,"props":120,"children":121},{},[122,128],{"type":32,"tag":123,"props":124,"children":125},"strong",{},[126],{"type":37,"value":127},"Syntax katmanı",{"type":37,"value":129}," — format uyumluluğu:",{"type":32,"tag":84,"props":131,"children":132},{},[133,138,143],{"type":32,"tag":88,"props":134,"children":135},{},[136],{"type":37,"value":137},"JSON parse ediliyor mu?",{"type":32,"tag":88,"props":139,"children":140},{},[141],{"type":37,"value":142},"Markdown frontmatter geçerli mi?",{"type":32,"tag":88,"props":144,"children":145},{},[146],{"type":37,"value":147},"Beklenen field'lar mevcut mu?",{"type":32,"tag":33,"props":149,"children":150},{},[151,153,159],{"type":37,"value":152},"Promptfoo'da ",{"type":32,"tag":62,"props":154,"children":156},{"className":155},[],[157],{"type":37,"value":158},"javascript",{"type":37,"value":160}," assertion ile kontrol ediliyor:",{"type":32,"tag":162,"props":163,"children":166},"pre",{"className":164,"code":165,"language":158,"meta":16,"style":16},"language-javascript shiki shiki-themes github-dark","assert: [\n  {\n    type: \"javascript\",\n    value: \"JSON.parse(output).title.length \u003C= 60\"\n  },\n  {\n    type: \"is-json\",\n    value: true\n  }\n]\n",[167],{"type":32,"tag":62,"props":168,"children":169},{"__ignoreMap":16},[170,188,197,217,231,240,248,265,278,287],{"type":32,"tag":171,"props":172,"children":175},"span",{"class":173,"line":174},"line",1,[176,182],{"type":32,"tag":171,"props":177,"children":179},{"style":178},"--shiki-default:#B392F0",[180],{"type":37,"value":181},"assert",{"type":32,"tag":171,"props":183,"children":185},{"style":184},"--shiki-default:#E1E4E8",[186],{"type":37,"value":187},": [\n",{"type":32,"tag":171,"props":189,"children":191},{"class":173,"line":190},2,[192],{"type":32,"tag":171,"props":193,"children":194},{"style":184},[195],{"type":37,"value":196},"  {\n",{"type":32,"tag":171,"props":198,"children":200},{"class":173,"line":199},3,[201,206,212],{"type":32,"tag":171,"props":202,"children":203},{"style":184},[204],{"type":37,"value":205},"    type: ",{"type":32,"tag":171,"props":207,"children":209},{"style":208},"--shiki-default:#9ECBFF",[210],{"type":37,"value":211},"\"javascript\"",{"type":32,"tag":171,"props":213,"children":214},{"style":184},[215],{"type":37,"value":216},",\n",{"type":32,"tag":171,"props":218,"children":220},{"class":173,"line":219},4,[221,226],{"type":32,"tag":171,"props":222,"children":223},{"style":184},[224],{"type":37,"value":225},"    value: ",{"type":32,"tag":171,"props":227,"children":228},{"style":208},[229],{"type":37,"value":230},"\"JSON.parse(output).title.length \u003C= 60\"\n",{"type":32,"tag":171,"props":232,"children":234},{"class":173,"line":233},5,[235],{"type":32,"tag":171,"props":236,"children":237},{"style":184},[238],{"type":37,"value":239},"  },\n",{"type":32,"tag":171,"props":241,"children":243},{"class":173,"line":242},6,[244],{"type":32,"tag":171,"props":245,"children":246},{"style":184},[247],{"type":37,"value":196},{"type":32,"tag":171,"props":249,"children":251},{"class":173,"line":250},7,[252,256,261],{"type":32,"tag":171,"props":253,"children":254},{"style":184},[255],{"type":37,"value":205},{"type":32,"tag":171,"props":257,"children":258},{"style":208},[259],{"type":37,"value":260},"\"is-json\"",{"type":32,"tag":171,"props":262,"children":263},{"style":184},[264],{"type":37,"value":216},{"type":32,"tag":171,"props":266,"children":267},{"class":173,"line":26},[268,272],{"type":32,"tag":171,"props":269,"children":270},{"style":184},[271],{"type":37,"value":225},{"type":32,"tag":171,"props":273,"children":275},{"style":274},"--shiki-default:#79B8FF",[276],{"type":37,"value":277},"true\n",{"type":32,"tag":171,"props":279,"children":281},{"class":173,"line":280},9,[282],{"type":32,"tag":171,"props":283,"children":284},{"style":184},[285],{"type":37,"value":286},"  }\n",{"type":32,"tag":171,"props":288,"children":290},{"class":173,"line":289},10,[291],{"type":32,"tag":171,"props":292,"children":293},{"style":184},[294],{"type":37,"value":295},"]\n",{"type":32,"tag":33,"props":297,"children":298},{},[299,304],{"type":32,"tag":123,"props":300,"children":301},{},[302],{"type":37,"value":303},"Semantics katmanı",{"type":37,"value":305}," — içerik kalitesi:",{"type":32,"tag":84,"props":307,"children":308},{},[309,314,319],{"type":32,"tag":88,"props":310,"children":311},{},[312],{"type":37,"value":313},"Yanıt konuya uygun mu? (embedding similarity, cosine distance > 0.85)",{"type":32,"tag":88,"props":315,"children":316},{},[317],{"type":37,"value":318},"Yasaklı kelime var mı? (regex, token filtering)",{"type":32,"tag":88,"props":320,"children":321},{},[322],{"type":37,"value":323},"Ton doğru mu? (classifier model, sentiment score)",{"type":32,"tag":33,"props":325,"children":326},{},[327],{"type":37,"value":328},"LangSmith'te custom evaluator:",{"type":32,"tag":162,"props":330,"children":334},{"className":331,"code":332,"language":333,"meta":16,"style":16},"language-python shiki shiki-themes github-dark","from langsmith import evaluate\n\ndef check_brand_compliance(run, example):\n    forbidden = [\"uzman\", \"lider\", \"devrim\"]\n    output = run.outputs[\"text\"].lower()\n    violations = [w for w in forbidden if w in output]\n    return {\"score\": 0 if violations else 1, \"violations\": violations}\n\nevaluate(\n    dataset_name=\"marketing_blog_posts\",\n    evaluators=[check_brand_compliance]\n)\n","python",[335],{"type":32,"tag":62,"props":336,"children":337},{"__ignoreMap":16},[338,362,371,389,435,462,517,579,586,594,616,634],{"type":32,"tag":171,"props":339,"children":340},{"class":173,"line":174},[341,347,352,357],{"type":32,"tag":171,"props":342,"children":344},{"style":343},"--shiki-default:#F97583",[345],{"type":37,"value":346},"from",{"type":32,"tag":171,"props":348,"children":349},{"style":184},[350],{"type":37,"value":351}," langsmith ",{"type":32,"tag":171,"props":353,"children":354},{"style":343},[355],{"type":37,"value":356},"import",{"type":32,"tag":171,"props":358,"children":359},{"style":184},[360],{"type":37,"value":361}," evaluate\n",{"type":32,"tag":171,"props":363,"children":364},{"class":173,"line":190},[365],{"type":32,"tag":171,"props":366,"children":368},{"emptyLinePlaceholder":367},true,[369],{"type":37,"value":370},"\n",{"type":32,"tag":171,"props":372,"children":373},{"class":173,"line":199},[374,379,384],{"type":32,"tag":171,"props":375,"children":376},{"style":343},[377],{"type":37,"value":378},"def",{"type":32,"tag":171,"props":380,"children":381},{"style":178},[382],{"type":37,"value":383}," check_brand_compliance",{"type":32,"tag":171,"props":385,"children":386},{"style":184},[387],{"type":37,"value":388},"(run, example):\n",{"type":32,"tag":171,"props":390,"children":391},{"class":173,"line":219},[392,397,402,407,412,417,422,426,431],{"type":32,"tag":171,"props":393,"children":394},{"style":184},[395],{"type":37,"value":396},"    forbidden ",{"type":32,"tag":171,"props":398,"children":399},{"style":343},[400],{"type":37,"value":401},"=",{"type":32,"tag":171,"props":403,"children":404},{"style":184},[405],{"type":37,"value":406}," [",{"type":32,"tag":171,"props":408,"children":409},{"style":208},[410],{"type":37,"value":411},"\"uzman\"",{"type":32,"tag":171,"props":413,"children":414},{"style":184},[415],{"type":37,"value":416},", ",{"type":32,"tag":171,"props":418,"children":419},{"style":208},[420],{"type":37,"value":421},"\"lider\"",{"type":32,"tag":171,"props":423,"children":424},{"style":184},[425],{"type":37,"value":416},{"type":32,"tag":171,"props":427,"children":428},{"style":208},[429],{"type":37,"value":430},"\"devrim\"",{"type":32,"tag":171,"props":432,"children":433},{"style":184},[434],{"type":37,"value":295},{"type":32,"tag":171,"props":436,"children":437},{"class":173,"line":233},[438,443,447,452,457],{"type":32,"tag":171,"props":439,"children":440},{"style":184},[441],{"type":37,"value":442},"    output ",{"type":32,"tag":171,"props":444,"children":445},{"style":343},[446],{"type":37,"value":401},{"type":32,"tag":171,"props":448,"children":449},{"style":184},[450],{"type":37,"value":451}," run.outputs[",{"type":32,"tag":171,"props":453,"children":454},{"style":208},[455],{"type":37,"value":456},"\"text\"",{"type":32,"tag":171,"props":458,"children":459},{"style":184},[460],{"type":37,"value":461},"].lower()\n",{"type":32,"tag":171,"props":463,"children":464},{"class":173,"line":242},[465,470,474,479,484,489,494,499,504,508,512],{"type":32,"tag":171,"props":466,"children":467},{"style":184},[468],{"type":37,"value":469},"    violations ",{"type":32,"tag":171,"props":471,"children":472},{"style":343},[473],{"type":37,"value":401},{"type":32,"tag":171,"props":475,"children":476},{"style":184},[477],{"type":37,"value":478}," [w ",{"type":32,"tag":171,"props":480,"children":481},{"style":343},[482],{"type":37,"value":483},"for",{"type":32,"tag":171,"props":485,"children":486},{"style":184},[487],{"type":37,"value":488}," w ",{"type":32,"tag":171,"props":490,"children":491},{"style":343},[492],{"type":37,"value":493},"in",{"type":32,"tag":171,"props":495,"children":496},{"style":184},[497],{"type":37,"value":498}," forbidden ",{"type":32,"tag":171,"props":500,"children":501},{"style":343},[502],{"type":37,"value":503},"if",{"type":32,"tag":171,"props":505,"children":506},{"style":184},[507],{"type":37,"value":488},{"type":32,"tag":171,"props":509,"children":510},{"style":343},[511],{"type":37,"value":493},{"type":32,"tag":171,"props":513,"children":514},{"style":184},[515],{"type":37,"value":516}," output]\n",{"type":32,"tag":171,"props":518,"children":519},{"class":173,"line":250},[520,525,530,535,540,545,550,555,560,565,569,574],{"type":32,"tag":171,"props":521,"children":522},{"style":343},[523],{"type":37,"value":524},"    return",{"type":32,"tag":171,"props":526,"children":527},{"style":184},[528],{"type":37,"value":529}," {",{"type":32,"tag":171,"props":531,"children":532},{"style":208},[533],{"type":37,"value":534},"\"score\"",{"type":32,"tag":171,"props":536,"children":537},{"style":184},[538],{"type":37,"value":539},": ",{"type":32,"tag":171,"props":541,"children":542},{"style":274},[543],{"type":37,"value":544},"0",{"type":32,"tag":171,"props":546,"children":547},{"style":343},[548],{"type":37,"value":549}," if",{"type":32,"tag":171,"props":551,"children":552},{"style":184},[553],{"type":37,"value":554}," violations ",{"type":32,"tag":171,"props":556,"children":557},{"style":343},[558],{"type":37,"value":559},"else",{"type":32,"tag":171,"props":561,"children":562},{"style":274},[563],{"type":37,"value":564}," 1",{"type":32,"tag":171,"props":566,"children":567},{"style":184},[568],{"type":37,"value":416},{"type":32,"tag":171,"props":570,"children":571},{"style":208},[572],{"type":37,"value":573},"\"violations\"",{"type":32,"tag":171,"props":575,"children":576},{"style":184},[577],{"type":37,"value":578},": violations}\n",{"type":32,"tag":171,"props":580,"children":581},{"class":173,"line":26},[582],{"type":32,"tag":171,"props":583,"children":584},{"emptyLinePlaceholder":367},[585],{"type":37,"value":370},{"type":32,"tag":171,"props":587,"children":588},{"class":173,"line":280},[589],{"type":32,"tag":171,"props":590,"children":591},{"style":184},[592],{"type":37,"value":593},"evaluate(\n",{"type":32,"tag":171,"props":595,"children":596},{"class":173,"line":289},[597,603,607,612],{"type":32,"tag":171,"props":598,"children":600},{"style":599},"--shiki-default:#FFAB70",[601],{"type":37,"value":602},"    dataset_name",{"type":32,"tag":171,"props":604,"children":605},{"style":343},[606],{"type":37,"value":401},{"type":32,"tag":171,"props":608,"children":609},{"style":208},[610],{"type":37,"value":611},"\"marketing_blog_posts\"",{"type":32,"tag":171,"props":613,"children":614},{"style":184},[615],{"type":37,"value":216},{"type":32,"tag":171,"props":617,"children":619},{"class":173,"line":618},11,[620,625,629],{"type":32,"tag":171,"props":621,"children":622},{"style":599},[623],{"type":37,"value":624},"    evaluators",{"type":32,"tag":171,"props":626,"children":627},{"style":343},[628],{"type":37,"value":401},{"type":32,"tag":171,"props":630,"children":631},{"style":184},[632],{"type":37,"value":633},"[check_brand_compliance]\n",{"type":32,"tag":171,"props":635,"children":637},{"class":173,"line":636},12,[638],{"type":32,"tag":171,"props":639,"children":640},{"style":184},[641],{"type":37,"value":642},")\n",{"type":32,"tag":33,"props":644,"children":645},{},[646,651],{"type":32,"tag":123,"props":647,"children":648},{},[649],{"type":37,"value":650},"Business outcome katmanı",{"type":37,"value":652}," — gerçek etki:",{"type":32,"tag":84,"props":654,"children":655},{},[656,661,666],{"type":32,"tag":88,"props":657,"children":658},{},[659],{"type":37,"value":660},"CTR değişti mi?",{"type":32,"tag":88,"props":662,"children":663},{},[664],{"type":37,"value":665},"Conversion düştü mü?",{"type":32,"tag":88,"props":667,"children":668},{},[669],{"type":37,"value":670},"Bounce rate arttı mı?",{"type":32,"tag":33,"props":672,"children":673},{},[674,676,685],{"type":37,"value":675},"Bu katman production telemetry ile bağlanır — ",{"type":32,"tag":677,"props":678,"children":682},"a",{"href":679,"rel":680},"https:\u002F\u002Fwww.roibase.com.tr\u002Ftr\u002Ffirstparty",[681],"nofollow",[683],{"type":37,"value":684},"First-Party Veri & Ölçüm Mimarisi",{"type":37,"value":686}," sisteminde event tracking ile prompt versiyonu metadata'ya eklenir, BigQuery'de JOIN edilir, dbt model'i her versiyonun conversion rate'ini hesaplar.",{"type":32,"tag":688,"props":689,"children":691},"h3",{"id":690},"promptfoo-deterministik-test-suitei-kurmak",[692],{"type":37,"value":693},"Promptfoo: Deterministik Test Suite'i Kurmak",{"type":32,"tag":33,"props":695,"children":696},{},[697],{"type":37,"value":698},"Promptfoo lokal çalışan, YAML-based eval framework'ü. Amaç: her prompt değişikliği öncesi regression testiyle doğrulama.",{"type":32,"tag":33,"props":700,"children":701},{},[702],{"type":37,"value":703},"Basit config:",{"type":32,"tag":162,"props":705,"children":709},{"className":706,"code":707,"language":708,"meta":16,"style":16},"language-yaml shiki shiki-themes github-dark","prompts:\n  - file:\u002F\u002Fprompts\u002Fmarketing_blog_v1.md\n  - file:\u002F\u002Fprompts\u002Fmarketing_blog_v2.md\n\nproviders:\n  - anthropic:messages:claude-3-5-sonnet-20241022\n\ntests:\n  - vars:\n      topic: \"Server-side GTM\"\n      category: \"tech\"\n    assert:\n      - type: is-json\n      - type: javascript\n        value: \"output.title.length \u003C= 60\"\n      - type: similar\n        value: \"server-side tracking architecture\"\n        threshold: 0.8\n      - type: not-contains\n        value: \"devrim\"\n","yaml",[710],{"type":32,"tag":62,"props":711,"children":712},{"__ignoreMap":16},[713,727,740,752,759,771,783,790,802,818,835,852,864,887,908,926,947,964,982,1003],{"type":32,"tag":171,"props":714,"children":715},{"class":173,"line":174},[716,722],{"type":32,"tag":171,"props":717,"children":719},{"style":718},"--shiki-default:#85E89D",[720],{"type":37,"value":721},"prompts",{"type":32,"tag":171,"props":723,"children":724},{"style":184},[725],{"type":37,"value":726},":\n",{"type":32,"tag":171,"props":728,"children":729},{"class":173,"line":190},[730,735],{"type":32,"tag":171,"props":731,"children":732},{"style":184},[733],{"type":37,"value":734},"  - ",{"type":32,"tag":171,"props":736,"children":737},{"style":208},[738],{"type":37,"value":739},"file:\u002F\u002Fprompts\u002Fmarketing_blog_v1.md\n",{"type":32,"tag":171,"props":741,"children":742},{"class":173,"line":199},[743,747],{"type":32,"tag":171,"props":744,"children":745},{"style":184},[746],{"type":37,"value":734},{"type":32,"tag":171,"props":748,"children":749},{"style":208},[750],{"type":37,"value":751},"file:\u002F\u002Fprompts\u002Fmarketing_blog_v2.md\n",{"type":32,"tag":171,"props":753,"children":754},{"class":173,"line":219},[755],{"type":32,"tag":171,"props":756,"children":757},{"emptyLinePlaceholder":367},[758],{"type":37,"value":370},{"type":32,"tag":171,"props":760,"children":761},{"class":173,"line":233},[762,767],{"type":32,"tag":171,"props":763,"children":764},{"style":718},[765],{"type":37,"value":766},"providers",{"type":32,"tag":171,"props":768,"children":769},{"style":184},[770],{"type":37,"value":726},{"type":32,"tag":171,"props":772,"children":773},{"class":173,"line":242},[774,778],{"type":32,"tag":171,"props":775,"children":776},{"style":184},[777],{"type":37,"value":734},{"type":32,"tag":171,"props":779,"children":780},{"style":208},[781],{"type":37,"value":782},"anthropic:messages:claude-3-5-sonnet-20241022\n",{"type":32,"tag":171,"props":784,"children":785},{"class":173,"line":250},[786],{"type":32,"tag":171,"props":787,"children":788},{"emptyLinePlaceholder":367},[789],{"type":37,"value":370},{"type":32,"tag":171,"props":791,"children":792},{"class":173,"line":26},[793,798],{"type":32,"tag":171,"props":794,"children":795},{"style":718},[796],{"type":37,"value":797},"tests",{"type":32,"tag":171,"props":799,"children":800},{"style":184},[801],{"type":37,"value":726},{"type":32,"tag":171,"props":803,"children":804},{"class":173,"line":280},[805,809,814],{"type":32,"tag":171,"props":806,"children":807},{"style":184},[808],{"type":37,"value":734},{"type":32,"tag":171,"props":810,"children":811},{"style":718},[812],{"type":37,"value":813},"vars",{"type":32,"tag":171,"props":815,"children":816},{"style":184},[817],{"type":37,"value":726},{"type":32,"tag":171,"props":819,"children":820},{"class":173,"line":289},[821,826,830],{"type":32,"tag":171,"props":822,"children":823},{"style":718},[824],{"type":37,"value":825},"      topic",{"type":32,"tag":171,"props":827,"children":828},{"style":184},[829],{"type":37,"value":539},{"type":32,"tag":171,"props":831,"children":832},{"style":208},[833],{"type":37,"value":834},"\"Server-side GTM\"\n",{"type":32,"tag":171,"props":836,"children":837},{"class":173,"line":618},[838,843,847],{"type":32,"tag":171,"props":839,"children":840},{"style":718},[841],{"type":37,"value":842},"      category",{"type":32,"tag":171,"props":844,"children":845},{"style":184},[846],{"type":37,"value":539},{"type":32,"tag":171,"props":848,"children":849},{"style":208},[850],{"type":37,"value":851},"\"tech\"\n",{"type":32,"tag":171,"props":853,"children":854},{"class":173,"line":636},[855,860],{"type":32,"tag":171,"props":856,"children":857},{"style":718},[858],{"type":37,"value":859},"    assert",{"type":32,"tag":171,"props":861,"children":862},{"style":184},[863],{"type":37,"value":726},{"type":32,"tag":171,"props":865,"children":867},{"class":173,"line":866},13,[868,873,878,882],{"type":32,"tag":171,"props":869,"children":870},{"style":184},[871],{"type":37,"value":872},"      - ",{"type":32,"tag":171,"props":874,"children":875},{"style":718},[876],{"type":37,"value":877},"type",{"type":32,"tag":171,"props":879,"children":880},{"style":184},[881],{"type":37,"value":539},{"type":32,"tag":171,"props":883,"children":884},{"style":208},[885],{"type":37,"value":886},"is-json\n",{"type":32,"tag":171,"props":888,"children":890},{"class":173,"line":889},14,[891,895,899,903],{"type":32,"tag":171,"props":892,"children":893},{"style":184},[894],{"type":37,"value":872},{"type":32,"tag":171,"props":896,"children":897},{"style":718},[898],{"type":37,"value":877},{"type":32,"tag":171,"props":900,"children":901},{"style":184},[902],{"type":37,"value":539},{"type":32,"tag":171,"props":904,"children":905},{"style":208},[906],{"type":37,"value":907},"javascript\n",{"type":32,"tag":171,"props":909,"children":911},{"class":173,"line":910},15,[912,917,921],{"type":32,"tag":171,"props":913,"children":914},{"style":718},[915],{"type":37,"value":916},"        value",{"type":32,"tag":171,"props":918,"children":919},{"style":184},[920],{"type":37,"value":539},{"type":32,"tag":171,"props":922,"children":923},{"style":208},[924],{"type":37,"value":925},"\"output.title.length \u003C= 60\"\n",{"type":32,"tag":171,"props":927,"children":929},{"class":173,"line":928},16,[930,934,938,942],{"type":32,"tag":171,"props":931,"children":932},{"style":184},[933],{"type":37,"value":872},{"type":32,"tag":171,"props":935,"children":936},{"style":718},[937],{"type":37,"value":877},{"type":32,"tag":171,"props":939,"children":940},{"style":184},[941],{"type":37,"value":539},{"type":32,"tag":171,"props":943,"children":944},{"style":208},[945],{"type":37,"value":946},"similar\n",{"type":32,"tag":171,"props":948,"children":950},{"class":173,"line":949},17,[951,955,959],{"type":32,"tag":171,"props":952,"children":953},{"style":718},[954],{"type":37,"value":916},{"type":32,"tag":171,"props":956,"children":957},{"style":184},[958],{"type":37,"value":539},{"type":32,"tag":171,"props":960,"children":961},{"style":208},[962],{"type":37,"value":963},"\"server-side tracking architecture\"\n",{"type":32,"tag":171,"props":965,"children":967},{"class":173,"line":966},18,[968,973,977],{"type":32,"tag":171,"props":969,"children":970},{"style":718},[971],{"type":37,"value":972},"        threshold",{"type":32,"tag":171,"props":974,"children":975},{"style":184},[976],{"type":37,"value":539},{"type":32,"tag":171,"props":978,"children":979},{"style":274},[980],{"type":37,"value":981},"0.8\n",{"type":32,"tag":171,"props":983,"children":985},{"class":173,"line":984},19,[986,990,994,998],{"type":32,"tag":171,"props":987,"children":988},{"style":184},[989],{"type":37,"value":872},{"type":32,"tag":171,"props":991,"children":992},{"style":718},[993],{"type":37,"value":877},{"type":32,"tag":171,"props":995,"children":996},{"style":184},[997],{"type":37,"value":539},{"type":32,"tag":171,"props":999,"children":1000},{"style":208},[1001],{"type":37,"value":1002},"not-contains\n",{"type":32,"tag":171,"props":1004,"children":1006},{"class":173,"line":1005},20,[1007,1011,1015],{"type":32,"tag":171,"props":1008,"children":1009},{"style":718},[1010],{"type":37,"value":916},{"type":32,"tag":171,"props":1012,"children":1013},{"style":184},[1014],{"type":37,"value":539},{"type":32,"tag":171,"props":1016,"children":1017},{"style":208},[1018],{"type":37,"value":1019},"\"devrim\"\n",{"type":32,"tag":33,"props":1021,"children":1022},{},[1023,1029],{"type":32,"tag":62,"props":1024,"children":1026},{"className":1025},[],[1027],{"type":37,"value":1028},"promptfoo eval",{"type":37,"value":1030}," komutuyla tüm varyantlar test edilir, metrik tablosu döner:",{"type":32,"tag":1032,"props":1033,"children":1034},"table",{},[1035,1064],{"type":32,"tag":1036,"props":1037,"children":1038},"thead",{},[1039],{"type":32,"tag":1040,"props":1041,"children":1042},"tr",{},[1043,1049,1054,1059],{"type":32,"tag":1044,"props":1045,"children":1046},"th",{},[1047],{"type":37,"value":1048},"Prompt",{"type":32,"tag":1044,"props":1050,"children":1051},{},[1052],{"type":37,"value":1053},"Pass Rate",{"type":32,"tag":1044,"props":1055,"children":1056},{},[1057],{"type":37,"value":1058},"Avg Latency",{"type":32,"tag":1044,"props":1060,"children":1061},{},[1062],{"type":37,"value":1063},"Cost",{"type":32,"tag":1065,"props":1066,"children":1067},"tbody",{},[1068,1092],{"type":32,"tag":1040,"props":1069,"children":1070},{},[1071,1077,1082,1087],{"type":32,"tag":1072,"props":1073,"children":1074},"td",{},[1075],{"type":37,"value":1076},"v1",{"type":32,"tag":1072,"props":1078,"children":1079},{},[1080],{"type":37,"value":1081},"92%",{"type":32,"tag":1072,"props":1083,"children":1084},{},[1085],{"type":37,"value":1086},"2.3s",{"type":32,"tag":1072,"props":1088,"children":1089},{},[1090],{"type":37,"value":1091},"$0.012",{"type":32,"tag":1040,"props":1093,"children":1094},{},[1095,1100,1105,1110],{"type":32,"tag":1072,"props":1096,"children":1097},{},[1098],{"type":37,"value":1099},"v2",{"type":32,"tag":1072,"props":1101,"children":1102},{},[1103],{"type":37,"value":1104},"98%",{"type":32,"tag":1072,"props":1106,"children":1107},{},[1108],{"type":37,"value":1109},"2.1s",{"type":32,"tag":1072,"props":1111,"children":1112},{},[1113],{"type":37,"value":1114},"$0.014",{"type":32,"tag":33,"props":1116,"children":1117},{},[1118],{"type":37,"value":1119},"v2'de pass rate artmış ama cost 17% yükselmiş — token count artıyor, detayda kontrol etmek lazım. Bu tradeoff'u görmeden deploy etseydik monthly budget patlamıştı.",{"type":32,"tag":45,"props":1121,"children":1123},{"id":1122},"ab-testi-prompt-varyantlarını-productionda-karşılaştırmak",[1124],{"type":37,"value":1125},"A\u002FB Testi: Prompt Varyantlarını Production'da Karşılaştırmak",{"type":32,"tag":33,"props":1127,"children":1128},{},[1129],{"type":37,"value":1130},"Evaluation suite yeşil döndü, şimdi gerçek trafik gerekiyor. A\u002FB testi LLM sisteminde şu şekilde kurulur:",{"type":32,"tag":1132,"props":1133,"children":1134},"ol",{},[1135,1145,1163,1173],{"type":32,"tag":88,"props":1136,"children":1137},{},[1138,1143],{"type":32,"tag":123,"props":1139,"children":1140},{},[1141],{"type":37,"value":1142},"Variant routing",{"type":37,"value":1144}," — kullanıcı\u002Fsession ID'sine göre prompt versiyonu seç (% split)",{"type":32,"tag":88,"props":1146,"children":1147},{},[1148,1153,1155,1161],{"type":32,"tag":123,"props":1149,"children":1150},{},[1151],{"type":37,"value":1152},"Metadata tagging",{"type":37,"value":1154}," — her API call'a ",{"type":32,"tag":62,"props":1156,"children":1158},{"className":1157},[],[1159],{"type":37,"value":1160},"prompt_version",{"type":37,"value":1162}," ekle",{"type":32,"tag":88,"props":1164,"children":1165},{},[1166,1171],{"type":32,"tag":123,"props":1167,"children":1168},{},[1169],{"type":37,"value":1170},"Metric tracking",{"type":37,"value":1172}," — downstream event'lere variant bilgisi tut",{"type":32,"tag":88,"props":1174,"children":1175},{},[1176,1181],{"type":32,"tag":123,"props":1177,"children":1178},{},[1179],{"type":37,"value":1180},"Statistical significance",{"type":37,"value":1182}," — yeterli sample size toplandığında (min 385 observation per variant, %95 confidence) karar ver",{"type":32,"tag":33,"props":1184,"children":1185},{},[1186],{"type":37,"value":1187},"n8n workflow örneği:",{"type":32,"tag":162,"props":1189,"children":1191},{"className":164,"code":1190,"language":158,"meta":16,"style":16},"\u002F\u002F A\u002FB variant seçimi\nconst userId = $json.user_id;\nconst variant = (userId % 100 \u003C 50) ? 'v1' : 'v2';\nconst promptUrl = `https:\u002F\u002Fraw.githubusercontent.com\u002Froibase\u002Fprompts\u002Fmain\u002F${variant}.md`;\n\n\u002F\u002F API call'a metadata ekle\nreturn {\n  json: {\n    prompt: await fetch(promptUrl).then(r => r.text()),\n    metadata: {\n      prompt_version: variant,\n      experiment_id: 'blog_tone_test_2026_05'\n    }\n  }\n};\n",[1192],{"type":32,"tag":62,"props":1193,"children":1194},{"__ignoreMap":16},[1195,1204,1227,1298,1333,1340,1348,1361,1369,1426,1434,1442,1455,1463,1470],{"type":32,"tag":171,"props":1196,"children":1197},{"class":173,"line":174},[1198],{"type":32,"tag":171,"props":1199,"children":1201},{"style":1200},"--shiki-default:#6A737D",[1202],{"type":37,"value":1203},"\u002F\u002F A\u002FB variant seçimi\n",{"type":32,"tag":171,"props":1205,"children":1206},{"class":173,"line":190},[1207,1212,1217,1222],{"type":32,"tag":171,"props":1208,"children":1209},{"style":343},[1210],{"type":37,"value":1211},"const",{"type":32,"tag":171,"props":1213,"children":1214},{"style":274},[1215],{"type":37,"value":1216}," userId",{"type":32,"tag":171,"props":1218,"children":1219},{"style":343},[1220],{"type":37,"value":1221}," =",{"type":32,"tag":171,"props":1223,"children":1224},{"style":184},[1225],{"type":37,"value":1226}," $json.user_id;\n",{"type":32,"tag":171,"props":1228,"children":1229},{"class":173,"line":199},[1230,1234,1239,1243,1248,1253,1258,1263,1268,1273,1278,1283,1288,1293],{"type":32,"tag":171,"props":1231,"children":1232},{"style":343},[1233],{"type":37,"value":1211},{"type":32,"tag":171,"props":1235,"children":1236},{"style":274},[1237],{"type":37,"value":1238}," variant",{"type":32,"tag":171,"props":1240,"children":1241},{"style":343},[1242],{"type":37,"value":1221},{"type":32,"tag":171,"props":1244,"children":1245},{"style":184},[1246],{"type":37,"value":1247}," (userId ",{"type":32,"tag":171,"props":1249,"children":1250},{"style":343},[1251],{"type":37,"value":1252},"%",{"type":32,"tag":171,"props":1254,"children":1255},{"style":274},[1256],{"type":37,"value":1257}," 100",{"type":32,"tag":171,"props":1259,"children":1260},{"style":343},[1261],{"type":37,"value":1262}," \u003C",{"type":32,"tag":171,"props":1264,"children":1265},{"style":274},[1266],{"type":37,"value":1267}," 50",{"type":32,"tag":171,"props":1269,"children":1270},{"style":184},[1271],{"type":37,"value":1272},") ",{"type":32,"tag":171,"props":1274,"children":1275},{"style":343},[1276],{"type":37,"value":1277},"?",{"type":32,"tag":171,"props":1279,"children":1280},{"style":208},[1281],{"type":37,"value":1282}," 'v1'",{"type":32,"tag":171,"props":1284,"children":1285},{"style":343},[1286],{"type":37,"value":1287}," :",{"type":32,"tag":171,"props":1289,"children":1290},{"style":208},[1291],{"type":37,"value":1292}," 'v2'",{"type":32,"tag":171,"props":1294,"children":1295},{"style":184},[1296],{"type":37,"value":1297},";\n",{"type":32,"tag":171,"props":1299,"children":1300},{"class":173,"line":219},[1301,1305,1310,1314,1319,1324,1329],{"type":32,"tag":171,"props":1302,"children":1303},{"style":343},[1304],{"type":37,"value":1211},{"type":32,"tag":171,"props":1306,"children":1307},{"style":274},[1308],{"type":37,"value":1309}," promptUrl",{"type":32,"tag":171,"props":1311,"children":1312},{"style":343},[1313],{"type":37,"value":1221},{"type":32,"tag":171,"props":1315,"children":1316},{"style":208},[1317],{"type":37,"value":1318}," `https:\u002F\u002Fraw.githubusercontent.com\u002Froibase\u002Fprompts\u002Fmain\u002F${",{"type":32,"tag":171,"props":1320,"children":1321},{"style":184},[1322],{"type":37,"value":1323},"variant",{"type":32,"tag":171,"props":1325,"children":1326},{"style":208},[1327],{"type":37,"value":1328},"}.md`",{"type":32,"tag":171,"props":1330,"children":1331},{"style":184},[1332],{"type":37,"value":1297},{"type":32,"tag":171,"props":1334,"children":1335},{"class":173,"line":233},[1336],{"type":32,"tag":171,"props":1337,"children":1338},{"emptyLinePlaceholder":367},[1339],{"type":37,"value":370},{"type":32,"tag":171,"props":1341,"children":1342},{"class":173,"line":242},[1343],{"type":32,"tag":171,"props":1344,"children":1345},{"style":1200},[1346],{"type":37,"value":1347},"\u002F\u002F API call'a metadata ekle\n",{"type":32,"tag":171,"props":1349,"children":1350},{"class":173,"line":250},[1351,1356],{"type":32,"tag":171,"props":1352,"children":1353},{"style":343},[1354],{"type":37,"value":1355},"return",{"type":32,"tag":171,"props":1357,"children":1358},{"style":184},[1359],{"type":37,"value":1360}," {\n",{"type":32,"tag":171,"props":1362,"children":1363},{"class":173,"line":26},[1364],{"type":32,"tag":171,"props":1365,"children":1366},{"style":184},[1367],{"type":37,"value":1368},"  json: {\n",{"type":32,"tag":171,"props":1370,"children":1371},{"class":173,"line":280},[1372,1377,1382,1387,1392,1397,1402,1407,1412,1417,1421],{"type":32,"tag":171,"props":1373,"children":1374},{"style":184},[1375],{"type":37,"value":1376},"    prompt: ",{"type":32,"tag":171,"props":1378,"children":1379},{"style":343},[1380],{"type":37,"value":1381},"await",{"type":32,"tag":171,"props":1383,"children":1384},{"style":178},[1385],{"type":37,"value":1386}," fetch",{"type":32,"tag":171,"props":1388,"children":1389},{"style":184},[1390],{"type":37,"value":1391},"(promptUrl).",{"type":32,"tag":171,"props":1393,"children":1394},{"style":178},[1395],{"type":37,"value":1396},"then",{"type":32,"tag":171,"props":1398,"children":1399},{"style":184},[1400],{"type":37,"value":1401},"(",{"type":32,"tag":171,"props":1403,"children":1404},{"style":599},[1405],{"type":37,"value":1406},"r",{"type":32,"tag":171,"props":1408,"children":1409},{"style":343},[1410],{"type":37,"value":1411}," =>",{"type":32,"tag":171,"props":1413,"children":1414},{"style":184},[1415],{"type":37,"value":1416}," r.",{"type":32,"tag":171,"props":1418,"children":1419},{"style":178},[1420],{"type":37,"value":37},{"type":32,"tag":171,"props":1422,"children":1423},{"style":184},[1424],{"type":37,"value":1425},"()),\n",{"type":32,"tag":171,"props":1427,"children":1428},{"class":173,"line":289},[1429],{"type":32,"tag":171,"props":1430,"children":1431},{"style":184},[1432],{"type":37,"value":1433},"    metadata: {\n",{"type":32,"tag":171,"props":1435,"children":1436},{"class":173,"line":618},[1437],{"type":32,"tag":171,"props":1438,"children":1439},{"style":184},[1440],{"type":37,"value":1441},"      prompt_version: variant,\n",{"type":32,"tag":171,"props":1443,"children":1444},{"class":173,"line":636},[1445,1450],{"type":32,"tag":171,"props":1446,"children":1447},{"style":184},[1448],{"type":37,"value":1449},"      experiment_id: ",{"type":32,"tag":171,"props":1451,"children":1452},{"style":208},[1453],{"type":37,"value":1454},"'blog_tone_test_2026_05'\n",{"type":32,"tag":171,"props":1456,"children":1457},{"class":173,"line":866},[1458],{"type":32,"tag":171,"props":1459,"children":1460},{"style":184},[1461],{"type":37,"value":1462},"    }\n",{"type":32,"tag":171,"props":1464,"children":1465},{"class":173,"line":889},[1466],{"type":32,"tag":171,"props":1467,"children":1468},{"style":184},[1469],{"type":37,"value":286},{"type":32,"tag":171,"props":1471,"children":1472},{"class":173,"line":910},[1473],{"type":32,"tag":171,"props":1474,"children":1475},{"style":184},[1476],{"type":37,"value":1477},"};\n",{"type":32,"tag":33,"props":1479,"children":1480},{},[1481],{"type":37,"value":1482},"BigQuery'de analiz:",{"type":32,"tag":162,"props":1484,"children":1488},{"className":1485,"code":1486,"language":1487,"meta":16,"style":16},"language-sql shiki shiki-themes github-dark","SELECT\n  metadata.value:prompt_version AS variant,\n  COUNT(DISTINCT user_id) AS users,\n  AVG(session_duration_sec) AS avg_duration,\n  SUM(conversion) \u002F COUNT(*) AS cvr\nFROM events\nWHERE experiment_id = 'blog_tone_test_2026_05'\n  AND event_date >= '2026-05-01'\nGROUP BY 1\n","sql",[1489],{"type":32,"tag":62,"props":1490,"children":1491},{"__ignoreMap":16},[1492,1500,1533,1564,1586,1631,1644,1666,1689],{"type":32,"tag":171,"props":1493,"children":1494},{"class":173,"line":174},[1495],{"type":32,"tag":171,"props":1496,"children":1497},{"style":343},[1498],{"type":37,"value":1499},"SELECT\n",{"type":32,"tag":171,"props":1501,"children":1502},{"class":173,"line":190},[1503,1508,1513,1518,1523,1528],{"type":32,"tag":171,"props":1504,"children":1505},{"style":274},[1506],{"type":37,"value":1507},"  metadata",{"type":32,"tag":171,"props":1509,"children":1510},{"style":184},[1511],{"type":37,"value":1512},".",{"type":32,"tag":171,"props":1514,"children":1515},{"style":274},[1516],{"type":37,"value":1517},"value",{"type":32,"tag":171,"props":1519,"children":1520},{"style":184},[1521],{"type":37,"value":1522},":prompt_version ",{"type":32,"tag":171,"props":1524,"children":1525},{"style":343},[1526],{"type":37,"value":1527},"AS",{"type":32,"tag":171,"props":1529,"children":1530},{"style":184},[1531],{"type":37,"value":1532}," variant,\n",{"type":32,"tag":171,"props":1534,"children":1535},{"class":173,"line":199},[1536,1541,1545,1550,1555,1559],{"type":32,"tag":171,"props":1537,"children":1538},{"style":274},[1539],{"type":37,"value":1540},"  COUNT",{"type":32,"tag":171,"props":1542,"children":1543},{"style":184},[1544],{"type":37,"value":1401},{"type":32,"tag":171,"props":1546,"children":1547},{"style":343},[1548],{"type":37,"value":1549},"DISTINCT",{"type":32,"tag":171,"props":1551,"children":1552},{"style":184},[1553],{"type":37,"value":1554}," user_id) ",{"type":32,"tag":171,"props":1556,"children":1557},{"style":343},[1558],{"type":37,"value":1527},{"type":32,"tag":171,"props":1560,"children":1561},{"style":184},[1562],{"type":37,"value":1563}," users,\n",{"type":32,"tag":171,"props":1565,"children":1566},{"class":173,"line":219},[1567,1572,1577,1581],{"type":32,"tag":171,"props":1568,"children":1569},{"style":274},[1570],{"type":37,"value":1571},"  AVG",{"type":32,"tag":171,"props":1573,"children":1574},{"style":184},[1575],{"type":37,"value":1576},"(session_duration_sec) ",{"type":32,"tag":171,"props":1578,"children":1579},{"style":343},[1580],{"type":37,"value":1527},{"type":32,"tag":171,"props":1582,"children":1583},{"style":184},[1584],{"type":37,"value":1585}," avg_duration,\n",{"type":32,"tag":171,"props":1587,"children":1588},{"class":173,"line":233},[1589,1594,1599,1604,1609,1613,1618,1622,1626],{"type":32,"tag":171,"props":1590,"children":1591},{"style":274},[1592],{"type":37,"value":1593},"  SUM",{"type":32,"tag":171,"props":1595,"children":1596},{"style":184},[1597],{"type":37,"value":1598},"(conversion) ",{"type":32,"tag":171,"props":1600,"children":1601},{"style":343},[1602],{"type":37,"value":1603},"\u002F",{"type":32,"tag":171,"props":1605,"children":1606},{"style":274},[1607],{"type":37,"value":1608}," COUNT",{"type":32,"tag":171,"props":1610,"children":1611},{"style":184},[1612],{"type":37,"value":1401},{"type":32,"tag":171,"props":1614,"children":1615},{"style":343},[1616],{"type":37,"value":1617},"*",{"type":32,"tag":171,"props":1619,"children":1620},{"style":184},[1621],{"type":37,"value":1272},{"type":32,"tag":171,"props":1623,"children":1624},{"style":343},[1625],{"type":37,"value":1527},{"type":32,"tag":171,"props":1627,"children":1628},{"style":184},[1629],{"type":37,"value":1630}," cvr\n",{"type":32,"tag":171,"props":1632,"children":1633},{"class":173,"line":242},[1634,1639],{"type":32,"tag":171,"props":1635,"children":1636},{"style":343},[1637],{"type":37,"value":1638},"FROM",{"type":32,"tag":171,"props":1640,"children":1641},{"style":184},[1642],{"type":37,"value":1643}," events\n",{"type":32,"tag":171,"props":1645,"children":1646},{"class":173,"line":250},[1647,1652,1657,1661],{"type":32,"tag":171,"props":1648,"children":1649},{"style":343},[1650],{"type":37,"value":1651},"WHERE",{"type":32,"tag":171,"props":1653,"children":1654},{"style":184},[1655],{"type":37,"value":1656}," experiment_id ",{"type":32,"tag":171,"props":1658,"children":1659},{"style":343},[1660],{"type":37,"value":401},{"type":32,"tag":171,"props":1662,"children":1663},{"style":208},[1664],{"type":37,"value":1665}," 'blog_tone_test_2026_05'\n",{"type":32,"tag":171,"props":1667,"children":1668},{"class":173,"line":26},[1669,1674,1679,1684],{"type":32,"tag":171,"props":1670,"children":1671},{"style":343},[1672],{"type":37,"value":1673},"  AND",{"type":32,"tag":171,"props":1675,"children":1676},{"style":184},[1677],{"type":37,"value":1678}," event_date ",{"type":32,"tag":171,"props":1680,"children":1681},{"style":343},[1682],{"type":37,"value":1683},">=",{"type":32,"tag":171,"props":1685,"children":1686},{"style":208},[1687],{"type":37,"value":1688}," '2026-05-01'\n",{"type":32,"tag":171,"props":1690,"children":1691},{"class":173,"line":280},[1692,1697],{"type":32,"tag":171,"props":1693,"children":1694},{"style":343},[1695],{"type":37,"value":1696},"GROUP BY",{"type":32,"tag":171,"props":1698,"children":1699},{"style":274},[1700],{"type":37,"value":1701}," 1\n",{"type":32,"tag":33,"props":1703,"children":1704},{},[1705],{"type":37,"value":1706},"Sonuç: v2 variant CVR'ı 0.042'den 0.051'e çıkarmış (+21%), p-value 0.003 — güvenle production'a alınır.",{"type":32,"tag":45,"props":1708,"children":1710},{"id":1709},"langsmith-observability-ve-long-term-regression-detection",[1711],{"type":37,"value":1712},"LangSmith: Observability ve Long-Term Regression Detection",{"type":32,"tag":33,"props":1714,"children":1715},{},[1716],{"type":37,"value":1717},"Promptfoo lokal test, LangSmith production observability. Her LLM call trace edilir: input, output, latency, token count, model version, prompt version.",{"type":32,"tag":33,"props":1719,"children":1720},{},[1721,1723,1728],{"type":37,"value":1722},"LangSmith avantajı ",{"type":32,"tag":123,"props":1724,"children":1725},{},[1726],{"type":37,"value":1727},"long-term metrik tracking",{"type":37,"value":1729},". 3 ay önceki prompt versiyonunun bug'ı bugün feedback'le fark ediliyor — trace'e geri dön, input\u002Foutput diff'i gör, o gün hangi versiyondu bul, rollback et.",{"type":32,"tag":33,"props":1731,"children":1732},{},[1733],{"type":37,"value":1734},"Örnek trace:",{"type":32,"tag":162,"props":1736,"children":1740},{"className":1737,"code":1738,"language":1739,"meta":16,"style":16},"language-json shiki shiki-themes github-dark","{\n  \"run_id\": \"abc123\",\n  \"prompt_version\": \"v2.1\",\n  \"model\": \"claude-3-5-sonnet-20241022\",\n  \"input\": {\"topic\": \"Server-side GTM\", \"category\": \"tech\"},\n  \"output\": \"---\\ntitle: \\\"Server-Side GTM...\\\"\",\n  \"latency_ms\": 2341,\n  \"tokens\": {\"input\": 1842, \"output\": 1523},\n  \"cost_usd\": 0.0137,\n  \"feedback\": {\"score\": 4, \"comment\": \"title çok uzun\"}\n}\n","json",[1741],{"type":32,"tag":62,"props":1742,"children":1743},{"__ignoreMap":16},[1744,1752,1773,1794,1815,1865,1915,1936,1984,2005,2053],{"type":32,"tag":171,"props":1745,"children":1746},{"class":173,"line":174},[1747],{"type":32,"tag":171,"props":1748,"children":1749},{"style":184},[1750],{"type":37,"value":1751},"{\n",{"type":32,"tag":171,"props":1753,"children":1754},{"class":173,"line":190},[1755,1760,1764,1769],{"type":32,"tag":171,"props":1756,"children":1757},{"style":274},[1758],{"type":37,"value":1759},"  \"run_id\"",{"type":32,"tag":171,"props":1761,"children":1762},{"style":184},[1763],{"type":37,"value":539},{"type":32,"tag":171,"props":1765,"children":1766},{"style":208},[1767],{"type":37,"value":1768},"\"abc123\"",{"type":32,"tag":171,"props":1770,"children":1771},{"style":184},[1772],{"type":37,"value":216},{"type":32,"tag":171,"props":1774,"children":1775},{"class":173,"line":199},[1776,1781,1785,1790],{"type":32,"tag":171,"props":1777,"children":1778},{"style":274},[1779],{"type":37,"value":1780},"  \"prompt_version\"",{"type":32,"tag":171,"props":1782,"children":1783},{"style":184},[1784],{"type":37,"value":539},{"type":32,"tag":171,"props":1786,"children":1787},{"style":208},[1788],{"type":37,"value":1789},"\"v2.1\"",{"type":32,"tag":171,"props":1791,"children":1792},{"style":184},[1793],{"type":37,"value":216},{"type":32,"tag":171,"props":1795,"children":1796},{"class":173,"line":219},[1797,1802,1806,1811],{"type":32,"tag":171,"props":1798,"children":1799},{"style":274},[1800],{"type":37,"value":1801},"  \"model\"",{"type":32,"tag":171,"props":1803,"children":1804},{"style":184},[1805],{"type":37,"value":539},{"type":32,"tag":171,"props":1807,"children":1808},{"style":208},[1809],{"type":37,"value":1810},"\"claude-3-5-sonnet-20241022\"",{"type":32,"tag":171,"props":1812,"children":1813},{"style":184},[1814],{"type":37,"value":216},{"type":32,"tag":171,"props":1816,"children":1817},{"class":173,"line":233},[1818,1823,1828,1833,1837,1842,1846,1851,1855,1860],{"type":32,"tag":171,"props":1819,"children":1820},{"style":274},[1821],{"type":37,"value":1822},"  \"input\"",{"type":32,"tag":171,"props":1824,"children":1825},{"style":184},[1826],{"type":37,"value":1827},": {",{"type":32,"tag":171,"props":1829,"children":1830},{"style":274},[1831],{"type":37,"value":1832},"\"topic\"",{"type":32,"tag":171,"props":1834,"children":1835},{"style":184},[1836],{"type":37,"value":539},{"type":32,"tag":171,"props":1838,"children":1839},{"style":208},[1840],{"type":37,"value":1841},"\"Server-side GTM\"",{"type":32,"tag":171,"props":1843,"children":1844},{"style":184},[1845],{"type":37,"value":416},{"type":32,"tag":171,"props":1847,"children":1848},{"style":274},[1849],{"type":37,"value":1850},"\"category\"",{"type":32,"tag":171,"props":1852,"children":1853},{"style":184},[1854],{"type":37,"value":539},{"type":32,"tag":171,"props":1856,"children":1857},{"style":208},[1858],{"type":37,"value":1859},"\"tech\"",{"type":32,"tag":171,"props":1861,"children":1862},{"style":184},[1863],{"type":37,"value":1864},"},\n",{"type":32,"tag":171,"props":1866,"children":1867},{"class":173,"line":242},[1868,1873,1877,1882,1887,1892,1897,1902,1906,1911],{"type":32,"tag":171,"props":1869,"children":1870},{"style":274},[1871],{"type":37,"value":1872},"  \"output\"",{"type":32,"tag":171,"props":1874,"children":1875},{"style":184},[1876],{"type":37,"value":539},{"type":32,"tag":171,"props":1878,"children":1879},{"style":208},[1880],{"type":37,"value":1881},"\"---",{"type":32,"tag":171,"props":1883,"children":1884},{"style":274},[1885],{"type":37,"value":1886},"\\n",{"type":32,"tag":171,"props":1888,"children":1889},{"style":208},[1890],{"type":37,"value":1891},"title: ",{"type":32,"tag":171,"props":1893,"children":1894},{"style":274},[1895],{"type":37,"value":1896},"\\\"",{"type":32,"tag":171,"props":1898,"children":1899},{"style":208},[1900],{"type":37,"value":1901},"Server-Side GTM...",{"type":32,"tag":171,"props":1903,"children":1904},{"style":274},[1905],{"type":37,"value":1896},{"type":32,"tag":171,"props":1907,"children":1908},{"style":208},[1909],{"type":37,"value":1910},"\"",{"type":32,"tag":171,"props":1912,"children":1913},{"style":184},[1914],{"type":37,"value":216},{"type":32,"tag":171,"props":1916,"children":1917},{"class":173,"line":250},[1918,1923,1927,1932],{"type":32,"tag":171,"props":1919,"children":1920},{"style":274},[1921],{"type":37,"value":1922},"  \"latency_ms\"",{"type":32,"tag":171,"props":1924,"children":1925},{"style":184},[1926],{"type":37,"value":539},{"type":32,"tag":171,"props":1928,"children":1929},{"style":274},[1930],{"type":37,"value":1931},"2341",{"type":32,"tag":171,"props":1933,"children":1934},{"style":184},[1935],{"type":37,"value":216},{"type":32,"tag":171,"props":1937,"children":1938},{"class":173,"line":26},[1939,1944,1948,1953,1957,1962,1966,1971,1975,1980],{"type":32,"tag":171,"props":1940,"children":1941},{"style":274},[1942],{"type":37,"value":1943},"  \"tokens\"",{"type":32,"tag":171,"props":1945,"children":1946},{"style":184},[1947],{"type":37,"value":1827},{"type":32,"tag":171,"props":1949,"children":1950},{"style":274},[1951],{"type":37,"value":1952},"\"input\"",{"type":32,"tag":171,"props":1954,"children":1955},{"style":184},[1956],{"type":37,"value":539},{"type":32,"tag":171,"props":1958,"children":1959},{"style":274},[1960],{"type":37,"value":1961},"1842",{"type":32,"tag":171,"props":1963,"children":1964},{"style":184},[1965],{"type":37,"value":416},{"type":32,"tag":171,"props":1967,"children":1968},{"style":274},[1969],{"type":37,"value":1970},"\"output\"",{"type":32,"tag":171,"props":1972,"children":1973},{"style":184},[1974],{"type":37,"value":539},{"type":32,"tag":171,"props":1976,"children":1977},{"style":274},[1978],{"type":37,"value":1979},"1523",{"type":32,"tag":171,"props":1981,"children":1982},{"style":184},[1983],{"type":37,"value":1864},{"type":32,"tag":171,"props":1985,"children":1986},{"class":173,"line":280},[1987,1992,1996,2001],{"type":32,"tag":171,"props":1988,"children":1989},{"style":274},[1990],{"type":37,"value":1991},"  \"cost_usd\"",{"type":32,"tag":171,"props":1993,"children":1994},{"style":184},[1995],{"type":37,"value":539},{"type":32,"tag":171,"props":1997,"children":1998},{"style":274},[1999],{"type":37,"value":2000},"0.0137",{"type":32,"tag":171,"props":2002,"children":2003},{"style":184},[2004],{"type":37,"value":216},{"type":32,"tag":171,"props":2006,"children":2007},{"class":173,"line":289},[2008,2013,2017,2021,2025,2030,2034,2039,2043,2048],{"type":32,"tag":171,"props":2009,"children":2010},{"style":274},[2011],{"type":37,"value":2012},"  \"feedback\"",{"type":32,"tag":171,"props":2014,"children":2015},{"style":184},[2016],{"type":37,"value":1827},{"type":32,"tag":171,"props":2018,"children":2019},{"style":274},[2020],{"type":37,"value":534},{"type":32,"tag":171,"props":2022,"children":2023},{"style":184},[2024],{"type":37,"value":539},{"type":32,"tag":171,"props":2026,"children":2027},{"style":274},[2028],{"type":37,"value":2029},"4",{"type":32,"tag":171,"props":2031,"children":2032},{"style":184},[2033],{"type":37,"value":416},{"type":32,"tag":171,"props":2035,"children":2036},{"style":274},[2037],{"type":37,"value":2038},"\"comment\"",{"type":32,"tag":171,"props":2040,"children":2041},{"style":184},[2042],{"type":37,"value":539},{"type":32,"tag":171,"props":2044,"children":2045},{"style":208},[2046],{"type":37,"value":2047},"\"title çok uzun\"",{"type":32,"tag":171,"props":2049,"children":2050},{"style":184},[2051],{"type":37,"value":2052},"}\n",{"type":32,"tag":171,"props":2054,"children":2055},{"class":173,"line":618},[2056],{"type":32,"tag":171,"props":2057,"children":2058},{"style":184},[2059],{"type":37,"value":2052},{"type":32,"tag":33,"props":2061,"children":2062},{},[2063],{"type":37,"value":2064},"Feedback loop: editör her blog'a 1-5 puan veriyor, LangSmith bu puanları trace'e bağlıyor, haftalık rapor \"v2.3 versiyonu avg score 3.2'ye düştü\" uyarısı veriyor. Hemen rollback → prompt diff → problemi gör → fix et.",{"type":32,"tag":688,"props":2066,"children":2068},{"id":2067},"dataset-management-golden-seti-version-control-altında-tutmak",[2069],{"type":37,"value":2070},"Dataset Management: Golden Set'i Version Control Altında Tutmak",{"type":32,"tag":33,"props":2072,"children":2073},{},[2074,2076,2081],{"type":37,"value":2075},"Eval pipeline'ın kalbi ",{"type":32,"tag":123,"props":2077,"children":2078},{},[2079],{"type":37,"value":2080},"golden dataset",{"type":37,"value":2082}," — bilinen input\u002Foutput çiftleri, beklenen davranışın referansı. Bu dataset'i Notion'da tutmak, Google Sheets'te manuel güncellemek regression riski.",{"type":32,"tag":33,"props":2084,"children":2085},{},[2086],{"type":37,"value":2087},"LangSmith dataset'i version control altında:",{"type":32,"tag":162,"props":2089,"children":2091},{"className":331,"code":2090,"language":333,"meta":16,"style":16},"from langsmith import Client\n\nclient = Client()\n\ndataset = client.create_dataset(\"marketing_blog_golden_v3\")\n\n# Golden örnekleri ekle\nexamples = [\n    {\n        \"inputs\": {\"topic\": \"Server-side GTM\", \"category\": \"tech\"},\n        \"outputs\": {\"title\": \"Server-Side GTM: Cookie Sonrası Ölçüm\"},\n        \"metadata\": {\"expected_h2_count\": 5, \"expected_word_count\": 1500}\n    },\n    # 50+ örnek...\n]\n\nfor ex in examples:\n    client.create_example(**ex, dataset_id=dataset.id)\n",[2092],{"type":32,"tag":62,"props":2093,"children":2094},{"__ignoreMap":16},[2095,2115,2122,2139,2146,2172,2179,2187,2204,2212,2256,2286,2334,2342,2350,2357,2364,2385],{"type":32,"tag":171,"props":2096,"children":2097},{"class":173,"line":174},[2098,2102,2106,2110],{"type":32,"tag":171,"props":2099,"children":2100},{"style":343},[2101],{"type":37,"value":346},{"type":32,"tag":171,"props":2103,"children":2104},{"style":184},[2105],{"type":37,"value":351},{"type":32,"tag":171,"props":2107,"children":2108},{"style":343},[2109],{"type":37,"value":356},{"type":32,"tag":171,"props":2111,"children":2112},{"style":184},[2113],{"type":37,"value":2114}," Client\n",{"type":32,"tag":171,"props":2116,"children":2117},{"class":173,"line":190},[2118],{"type":32,"tag":171,"props":2119,"children":2120},{"emptyLinePlaceholder":367},[2121],{"type":37,"value":370},{"type":32,"tag":171,"props":2123,"children":2124},{"class":173,"line":199},[2125,2130,2134],{"type":32,"tag":171,"props":2126,"children":2127},{"style":184},[2128],{"type":37,"value":2129},"client ",{"type":32,"tag":171,"props":2131,"children":2132},{"style":343},[2133],{"type":37,"value":401},{"type":32,"tag":171,"props":2135,"children":2136},{"style":184},[2137],{"type":37,"value":2138}," Client()\n",{"type":32,"tag":171,"props":2140,"children":2141},{"class":173,"line":219},[2142],{"type":32,"tag":171,"props":2143,"children":2144},{"emptyLinePlaceholder":367},[2145],{"type":37,"value":370},{"type":32,"tag":171,"props":2147,"children":2148},{"class":173,"line":233},[2149,2154,2158,2163,2168],{"type":32,"tag":171,"props":2150,"children":2151},{"style":184},[2152],{"type":37,"value":2153},"dataset ",{"type":32,"tag":171,"props":2155,"children":2156},{"style":343},[2157],{"type":37,"value":401},{"type":32,"tag":171,"props":2159,"children":2160},{"style":184},[2161],{"type":37,"value":2162}," client.create_dataset(",{"type":32,"tag":171,"props":2164,"children":2165},{"style":208},[2166],{"type":37,"value":2167},"\"marketing_blog_golden_v3\"",{"type":32,"tag":171,"props":2169,"children":2170},{"style":184},[2171],{"type":37,"value":642},{"type":32,"tag":171,"props":2173,"children":2174},{"class":173,"line":242},[2175],{"type":32,"tag":171,"props":2176,"children":2177},{"emptyLinePlaceholder":367},[2178],{"type":37,"value":370},{"type":32,"tag":171,"props":2180,"children":2181},{"class":173,"line":250},[2182],{"type":32,"tag":171,"props":2183,"children":2184},{"style":1200},[2185],{"type":37,"value":2186},"# Golden örnekleri ekle\n",{"type":32,"tag":171,"props":2188,"children":2189},{"class":173,"line":26},[2190,2195,2199],{"type":32,"tag":171,"props":2191,"children":2192},{"style":184},[2193],{"type":37,"value":2194},"examples ",{"type":32,"tag":171,"props":2196,"children":2197},{"style":343},[2198],{"type":37,"value":401},{"type":32,"tag":171,"props":2200,"children":2201},{"style":184},[2202],{"type":37,"value":2203}," [\n",{"type":32,"tag":171,"props":2205,"children":2206},{"class":173,"line":280},[2207],{"type":32,"tag":171,"props":2208,"children":2209},{"style":184},[2210],{"type":37,"value":2211},"    {\n",{"type":32,"tag":171,"props":2213,"children":2214},{"class":173,"line":289},[2215,2220,2224,2228,2232,2236,2240,2244,2248,2252],{"type":32,"tag":171,"props":2216,"children":2217},{"style":208},[2218],{"type":37,"value":2219},"        \"inputs\"",{"type":32,"tag":171,"props":2221,"children":2222},{"style":184},[2223],{"type":37,"value":1827},{"type":32,"tag":171,"props":2225,"children":2226},{"style":208},[2227],{"type":37,"value":1832},{"type":32,"tag":171,"props":2229,"children":2230},{"style":184},[2231],{"type":37,"value":539},{"type":32,"tag":171,"props":2233,"children":2234},{"style":208},[2235],{"type":37,"value":1841},{"type":32,"tag":171,"props":2237,"children":2238},{"style":184},[2239],{"type":37,"value":416},{"type":32,"tag":171,"props":2241,"children":2242},{"style":208},[2243],{"type":37,"value":1850},{"type":32,"tag":171,"props":2245,"children":2246},{"style":184},[2247],{"type":37,"value":539},{"type":32,"tag":171,"props":2249,"children":2250},{"style":208},[2251],{"type":37,"value":1859},{"type":32,"tag":171,"props":2253,"children":2254},{"style":184},[2255],{"type":37,"value":1864},{"type":32,"tag":171,"props":2257,"children":2258},{"class":173,"line":618},[2259,2264,2268,2273,2277,2282],{"type":32,"tag":171,"props":2260,"children":2261},{"style":208},[2262],{"type":37,"value":2263},"        \"outputs\"",{"type":32,"tag":171,"props":2265,"children":2266},{"style":184},[2267],{"type":37,"value":1827},{"type":32,"tag":171,"props":2269,"children":2270},{"style":208},[2271],{"type":37,"value":2272},"\"title\"",{"type":32,"tag":171,"props":2274,"children":2275},{"style":184},[2276],{"type":37,"value":539},{"type":32,"tag":171,"props":2278,"children":2279},{"style":208},[2280],{"type":37,"value":2281},"\"Server-Side GTM: Cookie Sonrası Ölçüm\"",{"type":32,"tag":171,"props":2283,"children":2284},{"style":184},[2285],{"type":37,"value":1864},{"type":32,"tag":171,"props":2287,"children":2288},{"class":173,"line":636},[2289,2294,2298,2303,2307,2312,2316,2321,2325,2330],{"type":32,"tag":171,"props":2290,"children":2291},{"style":208},[2292],{"type":37,"value":2293},"        \"metadata\"",{"type":32,"tag":171,"props":2295,"children":2296},{"style":184},[2297],{"type":37,"value":1827},{"type":32,"tag":171,"props":2299,"children":2300},{"style":208},[2301],{"type":37,"value":2302},"\"expected_h2_count\"",{"type":32,"tag":171,"props":2304,"children":2305},{"style":184},[2306],{"type":37,"value":539},{"type":32,"tag":171,"props":2308,"children":2309},{"style":274},[2310],{"type":37,"value":2311},"5",{"type":32,"tag":171,"props":2313,"children":2314},{"style":184},[2315],{"type":37,"value":416},{"type":32,"tag":171,"props":2317,"children":2318},{"style":208},[2319],{"type":37,"value":2320},"\"expected_word_count\"",{"type":32,"tag":171,"props":2322,"children":2323},{"style":184},[2324],{"type":37,"value":539},{"type":32,"tag":171,"props":2326,"children":2327},{"style":274},[2328],{"type":37,"value":2329},"1500",{"type":32,"tag":171,"props":2331,"children":2332},{"style":184},[2333],{"type":37,"value":2052},{"type":32,"tag":171,"props":2335,"children":2336},{"class":173,"line":866},[2337],{"type":32,"tag":171,"props":2338,"children":2339},{"style":184},[2340],{"type":37,"value":2341},"    },\n",{"type":32,"tag":171,"props":2343,"children":2344},{"class":173,"line":889},[2345],{"type":32,"tag":171,"props":2346,"children":2347},{"style":1200},[2348],{"type":37,"value":2349},"    # 50+ örnek...\n",{"type":32,"tag":171,"props":2351,"children":2352},{"class":173,"line":910},[2353],{"type":32,"tag":171,"props":2354,"children":2355},{"style":184},[2356],{"type":37,"value":295},{"type":32,"tag":171,"props":2358,"children":2359},{"class":173,"line":928},[2360],{"type":32,"tag":171,"props":2361,"children":2362},{"emptyLinePlaceholder":367},[2363],{"type":37,"value":370},{"type":32,"tag":171,"props":2365,"children":2366},{"class":173,"line":949},[2367,2371,2376,2380],{"type":32,"tag":171,"props":2368,"children":2369},{"style":343},[2370],{"type":37,"value":483},{"type":32,"tag":171,"props":2372,"children":2373},{"style":184},[2374],{"type":37,"value":2375}," ex ",{"type":32,"tag":171,"props":2377,"children":2378},{"style":343},[2379],{"type":37,"value":493},{"type":32,"tag":171,"props":2381,"children":2382},{"style":184},[2383],{"type":37,"value":2384}," examples:\n",{"type":32,"tag":171,"props":2386,"children":2387},{"class":173,"line":966},[2388,2393,2398,2403,2408,2412],{"type":32,"tag":171,"props":2389,"children":2390},{"style":184},[2391],{"type":37,"value":2392},"    client.create_example(",{"type":32,"tag":171,"props":2394,"children":2395},{"style":343},[2396],{"type":37,"value":2397},"**",{"type":32,"tag":171,"props":2399,"children":2400},{"style":184},[2401],{"type":37,"value":2402},"ex, ",{"type":32,"tag":171,"props":2404,"children":2405},{"style":599},[2406],{"type":37,"value":2407},"dataset_id",{"type":32,"tag":171,"props":2409,"children":2410},{"style":343},[2411],{"type":37,"value":401},{"type":32,"tag":171,"props":2413,"children":2414},{"style":184},[2415],{"type":37,"value":2416},"dataset.id)\n",{"type":32,"tag":33,"props":2418,"children":2419},{},[2420],{"type":37,"value":2421},"Her prompt değişikliğinde bu dataset'e karşı test et. Pass rate düşerse deploy yapma. Dataset'e yeni edge case ekle (production'da bulduğun bug'lar), regression olmasın.",{"type":32,"tag":45,"props":2423,"children":2425},{"id":2424},"tradeoff-deterministik-metrik-vs-yaratıcı-output",[2426],{"type":37,"value":2427},"Tradeoff: Deterministik Metrik vs Yaratıcı Output",{"type":32,"tag":33,"props":2429,"children":2430},{},[2431],{"type":37,"value":2432},"LLM'in gücü non-deterministik olması — aynı input'a farklı output. Ama production sisteminde bu güç risk: müşteri her sayfa yenilemede farklı markdown görüyor, bazıları hatalı.",{"type":32,"tag":33,"props":2434,"children":2435},{},[2436],{"type":37,"value":2437},"Temperature 0 ile determinizm artar ama output tekdüzeleşir. Tradeoff:",{"type":32,"tag":84,"props":2439,"children":2440},{},[2441,2451,2461],{"type":32,"tag":88,"props":2442,"children":2443},{},[2444,2449],{"type":32,"tag":123,"props":2445,"children":2446},{},[2447],{"type":37,"value":2448},"Temperature 0",{"type":37,"value":2450},": eval suite için ideal, production için monoton",{"type":32,"tag":88,"props":2452,"children":2453},{},[2454,2459],{"type":32,"tag":123,"props":2455,"children":2456},{},[2457],{"type":37,"value":2458},"Temperature 0.3-0.5",{"type":37,"value":2460},": makul çeşitlilik, yine de tutarlı",{"type":32,"tag":88,"props":2462,"children":2463},{},[2464,2469],{"type":32,"tag":123,"props":2465,"children":2466},{},[2467],{"type":37,"value":2468},"Temperature 0.7+",{"type":37,"value":2470},": yaratıcı ama test suite'i yeşil döndürse bile production'da sürpriz",{"type":32,"tag":33,"props":2472,"children":2473},{},[2474],{"type":37,"value":2475},"Çözüm: eval'de temperature 0, production'da 0.4, golden set'te her input için 5 farklı acceptable output sakla (range kontrolü).",{"type":32,"tag":33,"props":2477,"children":2478},{},[2479,2481,2486],{"type":37,"value":2480},"Başka tradeoff: ",{"type":32,"tag":123,"props":2482,"children":2483},{},[2484],{"type":37,"value":2485},"latency vs kalite",{"type":37,"value":2487},". Uzun prompt daha iyi output veriyor ama input token cost artıyor, latency yükseliyor. Promptfoo'da latency metriği 2.5s'yi geçerse alert ver — kullanıcı deneyimi bozulmasın.",{"type":32,"tag":45,"props":2489,"children":2491},{"id":2490},"production-checklist-llm-sistemini-deploy-etmeden-önce",[2492],{"type":37,"value":2493},"Production Checklist: LLM Sistemini Deploy Etmeden Önce",{"type":32,"tag":33,"props":2495,"children":2496},{},[2497],{"type":37,"value":2498},"Deploy öncesi kontrol listesi:",{"type":32,"tag":84,"props":2500,"children":2503},{"className":2501},[2502],"contains-task-list",[2504,2516,2525,2534,2543,2552,2561,2570,2579],{"type":32,"tag":88,"props":2505,"children":2508},{"className":2506},[2507],"task-list-item",[2509,2514],{"type":32,"tag":2510,"props":2511,"children":2513},"input",{"disabled":367,"type":2512},"checkbox",[],{"type":37,"value":2515}," Prompt git repo'da, commit history temiz",{"type":32,"tag":88,"props":2517,"children":2519},{"className":2518},[2507],[2520,2523],{"type":32,"tag":2510,"props":2521,"children":2522},{"disabled":367,"type":2512},[],{"type":37,"value":2524}," Promptfoo eval suite pass rate > %95",{"type":32,"tag":88,"props":2526,"children":2528},{"className":2527},[2507],[2529,2532],{"type":32,"tag":2510,"props":2530,"children":2531},{"disabled":367,"type":2512},[],{"type":37,"value":2533}," Golden dataset min 50 örnek",{"type":32,"tag":88,"props":2535,"children":2537},{"className":2536},[2507],[2538,2541],{"type":32,"tag":2510,"props":2539,"children":2540},{"disabled":367,"type":2512},[],{"type":37,"value":2542}," A\u002FB test planı hazır, sample size hesaplandı",{"type":32,"tag":88,"props":2544,"children":2546},{"className":2545},[2507],[2547,2550],{"type":32,"tag":2510,"props":2548,"children":2549},{"disabled":367,"type":2512},[],{"type":37,"value":2551}," LangSmith trace açık, API key production'da",{"type":32,"tag":88,"props":2553,"children":2555},{"className":2554},[2507],[2556,2559],{"type":32,"tag":2510,"props":2557,"children":2558},{"disabled":367,"type":2512},[],{"type":37,"value":2560}," Feedback loop kurulu (editör puanlama, BigQuery join)",{"type":32,"tag":88,"props":2562,"children":2564},{"className":2563},[2507],[2565,2568],{"type":32,"tag":2510,"props":2566,"children":2567},{"disabled":367,"type":2512},[],{"type":37,"value":2569}," Rollback prosedürü tanımlı (hangi metrik düşerse otomatik geri al)",{"type":32,"tag":88,"props":2571,"children":2573},{"className":2572},[2507],[2574,2577],{"type":32,"tag":2510,"props":2575,"children":2576},{"disabled":367,"type":2512},[],{"type":37,"value":2578}," Cost monitoring — daily token spend threshold $X",{"type":32,"tag":88,"props":2580,"children":2582},{"className":2581},[2507],[2583,2586],{"type":32,"tag":2510,"props":2584,"children":2585},{"disabled":367,"type":2512},[],{"type":37,"value":2587}," Latency SLA — p95 \u003C 3s",{"type":32,"tag":33,"props":2589,"children":2590},{},[2591],{"type":37,"value":2592},"Bu listeyi tamamlamadan \"AI hizmeti\" sunduğunu söylemen erken. Versiyonlama, eval, observability olmadan production LLM operasyonu değil, kontrollü kaos.",{"type":32,"tag":2594,"props":2595,"children":2596},"hr",{},[],{"type":32,"tag":33,"props":2598,"children":2599},{},[2600,2602,2609],{"type":37,"value":2601},"Prompt versiyonlama disiplin meselesi — hız için değil, güvenilirlik için. ",{"type":32,"tag":677,"props":2603,"children":2606},{"href":2604,"rel":2605},"https:\u002F\u002Fwww.roibase.com.tr\u002Ftr\u002Fgeo",[681],[2607],{"type":37,"value":2608},"Generative Engine Optimization",{"type":37,"value":2610}," gibi LLM-native taktiklerde output kalitesi direkt business outcome'a bağlanıyor. Eval pipeline'ı olmadan her deployment eski performansı riske atıyor. Promptfoo lokal güvenceyi, LangSmith production görünürlüğü sağlıyor. İkisi birlikte LLM operasyonunu yazılım mühendisliği standardına çıkarıyor.",{"type":32,"tag":2612,"props":2613,"children":2614},"style",{},[2615],{"type":37,"value":2616},"html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}",{"title":16,"searchDepth":199,"depth":199,"links":2618},[2619,2620,2623,2624,2627,2628],{"id":47,"depth":190,"text":50},{"id":110,"depth":190,"text":113,"children":2621},[2622],{"id":690,"depth":199,"text":693},{"id":1122,"depth":190,"text":1125},{"id":1709,"depth":190,"text":1712,"children":2625},[2626],{"id":2067,"depth":199,"text":2070},{"id":2424,"depth":190,"text":2427},{"id":2490,"depth":190,"text":2493},"markdown","content:tr:ai:prompt-versiyonlama-ve-a-b-testi-llm-operasyonun-disiplini.md","content","tr\u002Fai\u002Fprompt-versiyonlama-ve-a-b-testi-llm-operasyonun-disiplini.md","tr\u002Fai\u002Fprompt-versiyonlama-ve-a-b-testi-llm-operasyonun-disiplini","md",1778709807489]