[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"me":3,"catalog:tr:ai-engineer\u002Fsenior":4,"config":193},null,{"field_key":5,"field_name":6,"seniority":7,"topic_key":8,"topic_name":8,"spec_key":8,"spec_name":8,"locale":9,"cell_total":10,"field_total":11,"seniorities":12,"topics":15,"specs":98,"samples":109},"ai-engineer","AI Engineer","senior","","tr",1285,2025,[13,14,7],"junior","mid",[16,20,23,26,29,32,35,38,41,44,47,50,53,56,59,62,65,68,71,74,77,80,83,86,89,92,95],{"key":17,"name":18,"count":19},"agents-tool-use","Agents Tool Use",75,{"key":21,"name":22,"count":19},"aimlops-deployment-strategies-ml","Aimlops Deployment Strategies Ml",{"key":24,"name":25,"count":19},"aimlops-experiment-tracking-reproducibility","Aimlops Experiment Tracking Reproducibility",{"key":27,"name":28,"count":19},"aimlops-feature-store-data-versioning","Aimlops Feature Store Data Versioning",{"key":30,"name":31,"count":19},"aimlops-ml-cicd-pipelines","Aimlops Ml Cicd Pipelines",{"key":33,"name":34,"count":19},"aimlops-model-monitoring-drift-detection","Aimlops Model Monitoring Drift Detection",{"key":36,"name":37,"count":19},"aimlops-model-versioning-registry","Aimlops Model Versioning Registry",{"key":39,"name":40,"count":19},"aipy-async-concurrency-ml-serving","Aipy Async Concurrency Ml Serving",{"key":42,"name":43,"count":19},"aipy-data-pipeline-dataloader","Aipy Data Pipeline Dataloader",{"key":45,"name":46,"count":19},"aipy-gpu-memory-management","Aipy Gpu Memory Management",{"key":48,"name":49,"count":19},"aipy-numpy-vectorization-broadcasting","Aipy Numpy Vectorization Broadcasting",{"key":51,"name":52,"count":19},"aipy-python-ml-packaging-environments","Aipy Python Ml Packaging Environments",{"key":54,"name":55,"count":19},"aipy-tensor-ops-autograd","Aipy Tensor Ops Autograd",{"key":57,"name":58,"count":19},"embeddings-vector-search","Embeddings Vector Search",{"key":60,"name":61,"count":19},"evaluation-testing","Evaluation Testing",{"key":63,"name":64,"count":19},"fine-tuning-adaptation","Fine Tuning Adaptation",{"key":66,"name":67,"count":19},"inference-serving","Inference Serving",{"key":69,"name":70,"count":19},"llm-fundamentals","Llm Fundamentals",{"key":72,"name":73,"count":19},"prompt-engineering","Prompt Engineering",{"key":75,"name":76,"count":19},"rag-chunking-indexing","Rag Chunking Indexing",{"key":78,"name":79,"count":19},"rag-embeddings-similarity","Rag Embeddings Similarity",{"key":81,"name":82,"count":19},"rag-evaluation","Rag Evaluation",{"key":84,"name":85,"count":19},"rag-generation-context","Rag Generation Context",{"key":87,"name":88,"count":19},"rag-reranking-fusion","Rag Reranking Fusion",{"key":90,"name":91,"count":19},"rag-retrieval","Rag Retrieval",{"key":93,"name":94,"count":19},"rag-retrieval-search","Rag Retrieval Search",{"key":96,"name":97,"count":19},"safety-guardrails","Safety Guardrails",[99,103,106],{"key":100,"name":101,"count":102},"llm-rag","LLM\u002FRAG",450,{"key":104,"name":105,"count":102},"mlops","MLOps",{"key":107,"name":108,"count":102},"python","Python",[110,128,141,154,167,180],{"id":111,"topic":18,"difficulty":112,"body":113,"options":114,"correct_key":122,"explanation":127},"019f5912-4584-7167-bd34-bbf5c9fe3f06",3,"Test sırasında bir agent, birkaç iterasyon boyunca aynı aracı aynı argümanlarla tekrar tekrar çağırıyor ve dönen gözlem de her seferinde değişmiyor, yine de agent nihai bir cevap üretmiyor. Bu en olası nasıl açıklanır ve makul bir çözüm nedir?",[115,118,121,124],{"key":116,"text":117},"a","Bu, tasarımı gereği herhangi bir agent loop için beklenen bir davranıştır ve müdahale gerekmez; değişmeyen bir gözlemle tekrarlanan çağrılar zaman içinde kendiliğinden çözülür.",{"key":119,"text":120},"b","Aracın kendisi non-deterministik olmalı; doğru çalışan bir agent loop, iyi kurulmuş deterministik bir aracı asla birden fazla kez çağırmaz.",{"key":122,"text":123},"c","Agent muhtemelen bir döngüye takılmıştır; gözlemi yanlış yorumluyor ya da bir durma koşulu eksik. Aynı çağrının tekrarını tespit edip döngüden çıkmak, adım limitinin yanında makul bir çözümdür.",{"key":125,"text":126},"d","Bu, modelin context window'unun aşıldığını gösterir ve agent'ın tekrarı bırakmasının tek yolu tamamen farklı bir araca geçmektir.","Değişmeyen bir gözlemle aynı çağrının tekrar tekrar yapılması ve cevaba doğru hiç ilerleme olmaması, agent'ın takıldığının klasik bir işaretidir (ör. gözlemi yanlış okuması ya da bir durma koşulunun eksikliği); sabit bir adım limitinin yanında hedefe yönelik bir tekrar kontrolü faydalı bir çözümdür. Bunu beklenen davranış saymak, aracın non-determinizmine bağlamak ya da context window boyutuna atfetmek tarif edilen belirtiyle örtüşmez.",{"id":129,"topic":18,"difficulty":112,"body":130,"options":131,"correct_key":119,"explanation":140},"019f5912-4584-7d95-91dd-5666cb100ef1","Bir agent'ın erişebildiği bir `delete_customer_account` aracı var. Agent loop içinde bu spesifik aracı ele almak için en güvenli tasarım hangisidir?",[132,134,136,138],{"key":116,"text":133},"Bunu tıpkı `get_customer_info` gibi salt-okunur bir araç gibi ele al, çünkü model açısından ikisi de her an isteyebileceği sıradan araç çağrılarıdır.",{"key":119,"text":135},"Bu çağrı yıkıcı ve geri döndürülmesi zor olduğundan, okuma araçlarının aksine, çalıştırılmadan önce açık bir insan onayı ya da güçlü bir iş kuralı kontrolü şart koş.",{"key":122,"text":137},"Modelin yanlışlıkla çağırma olasılığını azaltmak için araca daha uzun ve detaylı bir açıklama ver, çalışma zamanı için herhangi bir güvenlik önlemi ekleme.",{"key":125,"text":139},"Agent'a doğru yapması için sınırsız deneme hakkı vermek üzere, özellikle bu araç için adım limitlerini devre dışı bırak.","Hesap silme gibi yıkıcı ve geri döndürülmesi zor bir eylem, salt-okunur bir aracın ihtiyaç duymadığı ekstra bir çalışma zamanı güvenlik önlemini (onay ya da iş kuralı kapısı) gerektirir; çünkü yanlış bir çağrının sonucu çok daha ağırdır. Sadece daha iyi bir açıklamaya güvenmek, onu bir okuma aracıyla aynı şekilde ele almak ya da adım limitlerini kaldırmak, bu spesifik aracın ihtiyaç duyduğu korumayı sağlamaz.",{"id":142,"topic":18,"difficulty":112,"body":143,"options":144,"correct_key":116,"explanation":153},"019f5912-4585-761b-becf-a224ce31730d","Ekipler, bir agent'ın araç setini tasarlarken 'okuma' araçlarını (ör. `get_order_status`) ile 'yazma' veya yan-etkili araçları (ör. `cancel_order`) neden yaygın olarak birbirinden ayırır?",[145,147,149,151],{"key":116,"text":146},"Yazma araçları yanlış çağrıldığında gerçek, bazen geri döndürülemez değişikliklere yol açabilir; bu yüzden en kötü ihtimalde yalnızca yanlış\u002Feski veri döndüren okuma araçlarından daha sıkı güvenlik önlemleri (onay, doğrulama, idempotency) gerektirirler.",{"key":119,"text":148},"Okuma araçları her zaman yazma araçlarından daha hızlı çalışır, çünkü veri okumak her implementasyonda veri yazmaktan doğası gereği daha hafif bir veritabanı işlemidir.",{"key":122,"text":150},"Model, şema formatı içinde okuma işlemlerini yazma işlemlerinden teknik olarak ayırt edemez; bu yüzden bu ayrımı uygulamanın kendi kodunda ayrıca takip etmesi gerekir.",{"key":125,"text":152},"Yazma araçları, okuma araçlarıyla aynı şema formatı kullanılarak tanımlanamaz, çünkü yan-etkili işlemler temelde farklı bir parametre yapısı gerektirir.","Risk profili farklıdır: yanlış bir okuma sadece hatalı bilgi döndürür, oysa yanlış bir yazma gerçek, bazen geri döndürülemez bir değişikliğe yol açabilir; bu yüzden yazma araçları genellikle onay ve idempotency gibi ekstra güvenlik önlemleri alır. Bu ayrım execution hızıyla ya da şema-format kısıtlamalarıyla değil, risk ve sonuçla ilgilidir.",{"id":155,"topic":18,"difficulty":112,"body":156,"options":157,"correct_key":125,"explanation":166},"019f5912-4586-7ee0-b6fc-1e6e96df862a","Bir turda model iki araç çağrısı istiyor: `get_weather(city=\"Paris\")` ve `get_weather(city=\"Tokyo\")`; hiçbirinin argümanları diğerinin sonucuna bağlı değil. Ayrı bir senaryoda ise model `get_user_id(email=...)` istiyor ve ancak daha sonraki bir turda, birinci çağrının döndürdüğü ID'yi kullanarak `get_orders(user_id=...)` istiyor. Bu iki durum arasındaki temel fark nedir?",[158,160,162,164],{"key":116,"text":159},"Gerçek bir fark yoktur; uygulama araç çağrılarını ne olursa olsun kesinlikle birer birer işlediğinden, her çağrı her zaman bir öncekinin bitmesini beklemelidir.",{"key":119,"text":161},"İki `get_weather` çağrısı kesinlikle birbiri ardına çalıştırılmalıdır ve asla eş zamanlı çalıştırılamaz, çünkü tek bir konuşma turu yalnızca bir bağımsız eylem içerebilir.",{"key":122,"text":163},"`get_user_id` ve `get_orders` çağrıları aynı turda güvenle gönderilebilir, çünkü bağımlı çağrıları birlikte gruplamak, eksik girdiden bağımsız olarak her zaman daha verimlidir.",{"key":125,"text":165},"İki `get_weather` çağrısı birbirinden bağımsızdır ve paralel çalıştırılabilir; `get_orders` ise `get_user_id`'nin sonucuna bağlı olduğundan önce o gözlemi beklemelidir.","Bağımsız çağrıların (iki hava durumu sorgusu) aralarında veri bağımlılığı yoktur ve potansiyel olarak eş zamanlı çalıştırılabilirler; bağımlı bir çağrı ise (`get_orders`, kullanıcı ID'sine ihtiyaç duyar) önceki gözlem elde edilene kadar doğru şekilde gönderilemez. Her iki durumu aynı kabul etmek ya da bağımlı bir çağrıyı girdisi henüz yokken gruplamak, bu veri akışı farkını göz ardı eder.",{"id":168,"topic":18,"difficulty":112,"body":169,"options":170,"correct_key":125,"explanation":179},"019f5912-4587-7a72-b520-94410db1ff7f","`create_shipping_label` aracı, dahili olarak üçüncü taraf bir kargo API'sini çağırıyor; bu API, aynı mantıksal isteğe (ör. kargo tarafındaki dahili bir retry nedeniyle) aynı idempotency key ile çağrıldığında bile bazen farklı bir takip numarası döndürüyor. Bu, agent'ın retry mantığı için neden bir sorun?",[171,173,175,177],{"key":116,"text":172},"Sorun değildir, çünkü bir idempotency key göndermek, altta yatan kargo servisinin kendi içinde nasıl implemente edildiğinden bağımsız olarak her zaman aynı çıktıyı garanti eder.",{"key":119,"text":174},"Sadece agent'ın adım limiti çok düşük ayarlanmışsa önemlidir; bu limiti artırmak, dönen takip numaralarındaki tutarsızlığı tamamen çözer.",{"key":122,"text":176},"Agent loop ile ilgisi yoktur, çünkü aracın determinizmi yalnızca modelin tükettiği muhakeme token sayısını etkiler, gerçekte oluşan hiçbir yan etkiyi değil.",{"key":125,"text":178},"Araç aynı key'e rağmen retry'da hâlâ farklı bir gerçek sonuç üretebiliyorsa, agent'ın güvenlik varsayımı yanlıştır ve retry yapmak fazladan bir sevkiyat gibi mükerrer yan etkilere yol açabilir.","Bir idempotency key, ancak altta yatan servis onu tutarlı biçimde gerçekten uyguluyorsa işe yarar; kargo servisi aynı key'e rağmen retry'da farklı bir gerçek-dünya sonucu üretebiliyorsa, agent'ın güvenlik varsayımı yanlıştır ve mükerrer sevkiyatlar oluşabilir. Adım limitini artırmak ya da determinizmin sadece muhakeme token'larını etkilediğini iddia etmek, bu gerçek servis-seviyesi açığı çözmez.",{"id":181,"topic":58,"difficulty":112,"body":182,"options":183,"correct_key":119,"explanation":192},"019f5912-4591-7319-b15a-61c835a91e9f","Junior bir mühendis şu benzerlik fonksiyonunu yazıyor:\n```\nscore = dot(query_vec, doc_vec)\n```\nBu hesaplamadan önce vektörler normalize edilmiyor. Bu ne tür bir soruna yol açabilir?",[184,186,188,190],{"key":116,"text":185},"İki vektörün boyutu farklı olduğunda dot product bir runtime hatası fırlatır.",{"key":119,"text":187},"Büyüklüğü daha fazla olan vektörler, anlamca daha ilgili olmasalar bile daha yüksek skor alarak sıralamayı bozabilir.",{"key":122,"text":189},"Sonuç, vektör uzunluğundan bağımsız olarak her zaman cosine similarity değerine eşit olur.",{"key":125,"text":191},"İki metin anlamca ilgisiz olduğunda skor her zaman negatif çıkar.","Ham dot product vektör uzunluğuna duyarlıdır; bu yüzden embedding'i büyük büyüklükte çıkan dokümanlar, daha küçük büyüklükteki gerçekten ilgili dokümanları skorla geçebilir. (c) şıkkı bunun tersini anlatır: normalize edilmemiş dot product yalnızca her iki vektör de zaten birim uzunluktaysa cosine similarity'ye eşit olur.",{"fields":194,"seniorities":373,"interview_shapes":374,"locales":379,"oauth":381,"question_count":384,"coach_enabled":385,"jd_match_enabled":385},[195,219,240,256,280,287,306,325,347,354,360,367],{"key":196,"name_tr":197,"name_en":197,"sort":198,"specializations":199},"backend","Backend",1,[200,203,206,207,210,213,216],{"key":201,"name":202,"field":196},"general","Genel",{"key":204,"name":205,"field":196},"go","Go",{"key":107,"name":108,"field":196},{"key":208,"name":209,"field":196},"java","Java",{"key":211,"name":212,"field":196},"csharp","C#\u002F.NET",{"key":214,"name":215,"field":196},"nodejs","Node.js",{"key":217,"name":218,"field":196},"php","PHP",{"key":220,"name_tr":221,"name_en":221,"sort":222,"specializations":223},"frontend","Frontend",2,[224,225,228,231,234,237],{"key":201,"name":202,"field":220},{"key":226,"name":227,"field":220},"javascript","JavaScript",{"key":229,"name":230,"field":220},"typescript","TypeScript",{"key":232,"name":233,"field":220},"react","React",{"key":235,"name":236,"field":220},"vue","Vue",{"key":238,"name":239,"field":220},"angular","Angular",{"key":241,"name_tr":242,"name_en":242,"sort":112,"specializations":243},"fullstack","Fullstack",[244,245,246,247,248,249,250,251,252,253,254,255],{"key":201,"name":202,"field":241},{"key":204,"name":205,"field":196},{"key":107,"name":108,"field":196},{"key":208,"name":209,"field":196},{"key":211,"name":212,"field":196},{"key":214,"name":215,"field":196},{"key":217,"name":218,"field":196},{"key":226,"name":227,"field":220},{"key":229,"name":230,"field":220},{"key":232,"name":233,"field":220},{"key":235,"name":236,"field":220},{"key":238,"name":239,"field":220},{"key":257,"name_tr":258,"name_en":258,"sort":259,"specializations":260},"devops-cloud","DevOps \u002F Cloud",4,[261,262,265,268,271,274,277],{"key":201,"name":202,"field":257},{"key":263,"name":264,"field":257},"aws","AWS",{"key":266,"name":267,"field":257},"gcp","GCP",{"key":269,"name":270,"field":257},"azure","Azure",{"key":272,"name":273,"field":257},"kubernetes","Kubernetes",{"key":275,"name":276,"field":257},"terraform","Terraform",{"key":278,"name":279,"field":257},"linux","Linux",{"key":5,"name_tr":6,"name_en":6,"sort":281,"specializations":282},5,[283,284,285,286],{"key":201,"name":202,"field":5},{"key":107,"name":108,"field":5},{"key":100,"name":101,"field":5},{"key":104,"name":105,"field":5},{"key":288,"name_tr":289,"name_en":290,"sort":291,"specializations":292},"database","Veritabanı","Database",6,[293,294,297,300,303],{"key":201,"name":202,"field":288},{"key":295,"name":296,"field":288},"postgresql","PostgreSQL",{"key":298,"name":299,"field":288},"mysql","MySQL",{"key":301,"name":302,"field":288},"mongodb","MongoDB",{"key":304,"name":305,"field":288},"redis","Redis",{"key":307,"name_tr":308,"name_en":309,"sort":310,"specializations":311},"mobile","Mobil","Mobile",7,[312,313,316,319,322],{"key":201,"name":202,"field":307},{"key":314,"name":315,"field":307},"ios-swift","iOS (Swift)",{"key":317,"name":318,"field":307},"android-kotlin","Android (Kotlin)",{"key":320,"name":321,"field":307},"flutter","Flutter",{"key":323,"name":324,"field":307},"react-native","React Native",{"key":326,"name_tr":327,"name_en":328,"sort":329,"specializations":330},"security","Güvenlik","Security",8,[331,332,335,338,341,344],{"key":201,"name":202,"field":326},{"key":333,"name":334,"field":326},"appsec","AppSec",{"key":336,"name":337,"field":326},"offensive-pentest","Offensive \u002F Pentest",{"key":339,"name":340,"field":326},"cloud-security","Cloud Security",{"key":342,"name":343,"field":326},"devsecops","DevSecOps",{"key":345,"name":346,"field":326},"blue-team-incident","Blue Team \u002F Incident",{"key":348,"name_tr":349,"name_en":350,"sort":351,"specializations":352},"qa-test-automation","QA \u002F Test Otomasyonu","QA \u002F Test Automation",9,[353],{"key":201,"name":202,"field":348},{"key":355,"name_tr":356,"name_en":356,"sort":357,"specializations":358},"data-engineer","Data Engineer",10,[359],{"key":201,"name":202,"field":355},{"key":361,"name_tr":362,"name_en":363,"sort":364,"specializations":365},"game-dev","Oyun Geliştirme","Game Development",11,[366],{"key":201,"name":202,"field":361},{"key":368,"name_tr":369,"name_en":369,"sort":370,"specializations":371},"ml-engineer","ML Engineer",12,[372],{"key":201,"name":202,"field":368},[13,14,7],{"junior":375,"mid":377,"senior":378},{"questions":376,"median_sec":3},20,{"questions":376,"median_sec":3},{"questions":376,"median_sec":3},[9,380],"en",[382,383],"google","github",21750,true]