[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"me":3,"catalog:tr:ai-engineer\u002Fmid":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","mid","","tr",1713,2025,[13,7,14],"junior","senior",[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-456f-7228-983d-cd3cee4bf968",2,"Bir agent, görevi tamamlandığına karar verene kadar araç çağırmaya ve muhakeme etmeye devam edecek şekilde tasarlanmış. Bir bug ya da kafa karıştırıcı bir araç sonucu yüzünden sonsuza kadar çalışmasını önlemek için hangi güvenlik önlemi eklenmeli?",[115,118,121,124],{"key":116,"text":117},"a","Herhangi bir aracı konuşma başına birden fazla çağırma olasılığını tamamen kaldır.",{"key":119,"text":120},"b","Döngünün hiçbir sınır olmadan süresiz çalışmasına izin ver; iyi yazılmış bir prompt modelin er ya da geç araç çağırmayı kendiliğinden bırakmasını güvenilir biçimde garanti eder.",{"key":122,"text":123},"c","Maksimum bir iterasyon sayısı ya da zaman\u002Fmaliyet bütçesi belirle; bu limite ulaşıldığında döngü zorla durdurulup bir fallback yanıt döndürülür.",{"key":125,"text":126},"d","Modelin temperature'ını artır ki daha çeşitli eylemler üretsin ve tekrarlayan örüntülerden çıksın.","Sabit bir iterasyon veya bütçe limiti, kaçak agent döngülerine karşı standart güvenlik önlemidir; limite ulaşıldığında uygulama döngüyü durdurur ve modelin kendiliğinden sonlanmasına güvenmek yerine bir fallback döner. Salt bir prompt sonlanmayı garanti edemez; temperature artırmak da altta yatan döngü-kontrol sorununu çözmez.",{"id":129,"topic":18,"difficulty":112,"body":130,"options":131,"correct_key":116,"explanation":140},"019f5912-4570-7ac2-801b-b378acec5e45","Bir araç çağrısı, hedef servisin bir hata döndürmesi (ör. geçersiz parametre) nedeniyle başarısız oluyor. Agent loop içinde bunu ele almanın önerilen yolu nedir?",[132,134,136,138],{"key":116,"text":133},"Hata mesajını modele aracın sonucu olarak geri ver; böylece hatayı muhakeme edip retry mi yapacağına, argümanları mı düzelteceğine yoksa vazgeçeceğine karar verebilsin.",{"key":119,"text":135},"Hatayı tamamen sessizce yok say ve modelin, araç çağrısının aslında başarılı olduğunu varsaymasına izin ver.",{"key":122,"text":137},"Tüm konuşmayı hemen çökert ve hiçbir zarif kurtarma girişiminde bulunmadan ham, işlenmemiş bir exception'ı doğrudan son kullanıcıya göster.",{"key":125,"text":139},"Modele hiçbir şeyin gerçekten yanlış gittiğini hiç bildirmeden, arka planda aynı çağrıyı sınırsız sayıda otomatik olarak tekrarla.","Hatalar, başarılı bir sonuç gibi modele bir gözlem olarak sunulmalıdır; böylece model uyum sağlayacak bilgiye sahip olur (argümanları düzeltmek, farklı bir yaklaşım denemek ya da durmak). Hatayı gizlemek, çökmek veya körü körüne sonsuza kadar retry yapmak modelin hatayı muhakeme etme yetisini ortadan kaldırır.",{"id":142,"topic":18,"difficulty":112,"body":143,"options":144,"correct_key":119,"explanation":153},"019f5912-4573-7530-a999-dcc3a2850554","`create_order` gibi agent'ın çağırabileceği bir araç için idempotency neden önemli bir özelliktir?",[145,147,149,151],{"key":116,"text":146},"Aracın JSON şemasını gözle görülür biçimde küçültür ve modelin daha hızlı parse etmesini sağlar; şemaların idempotent tasarlanmasının asıl pratik nedeni de zaten budur.",{"key":119,"text":148},"Bir agent loop, timeout sonrası aynı çağrıyı tekrar edebilir; idempotent bir araç, tekrarlanan çağrının siparişi iki kez oluşturmak gibi bir yan etki yaratmamasını sağlar.",{"key":122,"text":150},"Modelin her zaman bu aracı diğer araçlara tercih edeceğini garanti eder.",{"key":125,"text":152},"Aracın girdi parametrelerini doğrulama ihtiyacını ortadan kaldırır.","Agent döngüleri, aynı yan-etkili aracı birden fazla kez çağırmakla sonuçlanabilir (ör. sonucun belirsiz olduğu bir timeout sonrası); idempotency, bu tekrarın gerçek dünyada yinelenen etkiler yaratmasını önleyen özelliktir. Şema boyutu, araç tercih sırası ya da girdi doğrulamasını atlamakla ilgisi yoktur.",{"id":155,"topic":18,"difficulty":112,"body":156,"options":157,"correct_key":125,"explanation":166},"019f5912-4575-7480-bf2f-7dadec0e4a5d","Bir agent'ın kendi başına çağırabileceği `charge_customer` aracı ekliyorsunuz. Bu araç gerçekten çalışmadan önce makul bir güvenlik pratiği nedir?",[158,160,162,164],{"key":116,"text":159},"Aracın açıklamasında tutar belirtildiği sürece, agent'ın ödemeleri serbestçe yürütmesine izin ver.",{"key":119,"text":161},"Uygulamada ek bir kontrol olmadan, ödeme yapmanın uygun olup olmadığına dair yalnızca modelin kendi kararına güven.",{"key":122,"text":163},"Ödemeyi sistemde yalnızca gerçekleştikten sonra logla; önceden hiçbir kontrol ekleme, çünkü burada sonradan loglamak tek başına genellikle yeterli bir kontrol sayılır.",{"key":125,"text":165},"Gerçek bir ödeme gibi yan-etkili ve geri döndürülmesi zor bir eylem çalıştırılmadan önce, insan onayı gibi açık bir onay adımı şart koş.","Gerçek ödemeler gibi yan-etkili ve geri döndürülmesi zor eylemler, tam olarak model hata yapabileceği için, modelin kendi kararının ötesinde ek bir onay ya da iş kuralı kontrolü gerektirir. Açıklama metni, salt model kararı ya da sonradan loglama, hatalı bir ödemenin gerçekten yaşanmasını engellemez.",{"id":168,"topic":18,"difficulty":112,"body":169,"options":170,"correct_key":116,"explanation":179},"019f5912-4576-7dac-910a-013795714434","Aynı aracın iki farklı şema versiyonu aşağıda gösteriliyor:\n```\n\u002F\u002F Versiyon 1\n{\"name\": \"search\", \"description\": \"Arama yapar.\", \"parameters\": {\"query\": \"string\"}}\n\n\u002F\u002F Versiyon 2\n{\"name\": \"search_orders\", \"description\": \"Müşterinin geçmiş siparişlerini sipariş ID'sine veya tarih aralığına göre arar. Sadece sipariş sorguları için kullan, genel ürün araması için değil.\", \"parameters\": {\"query\": \"string\"}}\n```\nHangi ifade en doğrusudur?",[171,173,175,177],{"key":116,"text":172},"Versiyon 2'nin doğru seçilme ve mantıklı argümanlarla çağrılma olasılığı daha yüksektir; çünkü adı ve açıklaması kapsamını netleştirir ve onu diğer araçlardan ayırt eder.",{"key":119,"text":174},"Her iki versiyon da model için aynı davranışı gösterir, çünkü araç seçimini sadece parametre adları etkiler.",{"key":122,"text":176},"Versiyon 1 tercih edilmelidir, çünkü daha kısa açıklama modele gönderilen token sayısını azaltır.",{"key":125,"text":178},"Açıklama alanının araç seçimine hiçbir etkisi yoktur; sadece fonksiyonun iç implementasyonu önemlidir.","Açıklayıcı bir ad ve kapsamı net, özgül bir açıklama, modele bu aracı doğru seçmesi (ve örneğin genel bir ürün arama aracıyla karıştırmaması) için gereken bağlamı verir. Daha kısa açıklamayla elde edilen token tasarrufu, seçim hatalarına karşı kötü bir takastır; açıklama model davranışını gerçekten etkiler.",{"id":181,"topic":18,"difficulty":112,"body":182,"options":183,"correct_key":122,"explanation":192},"019f5912-457a-703a-a9ae-f2138d193356","Bir seyahat rezervasyon agent'ının şunları yapması gerekiyor: (1) uygun uçuşları bulmak, (2) kullanıcının kayıtlı ödeme yöntemini kontrol etmek, (3) seçilen uçuşu rezerve etmek. Bu, tek bir araç çağrısı yerine agent loop için neden iyi bir aday?",[184,186,188,190],{"key":116,"text":185},"Çünkü tek bir araç çağrısı, altta yatan API nasıl tasarlanmış olursa olsun asla birden fazla veri alanı döndüremez.",{"key":119,"text":187},"Çünkü agent loop'lar, gerçek implementasyon detaylarından bağımsız olarak her zaman tek, iyi tasarlanmış bir API çağrısından daha hızlıdır.",{"key":122,"text":189},"Adımlar birbirinin sonucuna bağlıdır — hangi uçuşun rezerve edileceği uygunluğa, rezervasyon ise hangi uçuşun seçildiğine bağlıdır — bu yüzden araçlar sırayla çağrılmalıdır.",{"key":125,"text":191},"Model, tek bir konuşma oturumunun tüm yaşam döngüsü boyunca birden fazla farklı araç çağrısı adı içeren bir JSON payload'ı teknik olarak üretemez.","Burada agent loop kullanmanın temel nedeni, adımlar arasındaki veri bağımlılığıdır: bir çağrının sonucu, bir sonrakinin girdisini belirler. Bu, tüm gerekli bilginin baştan bilindiği görevlerin aksine, tam olarak yinelemeli bir döngünün tasarlandığı senaryodur.",{"fields":194,"seniorities":373,"interview_shapes":374,"locales":379,"oauth":381,"question_count":384,"coach_enabled":385,"jd_match_enabled":385},[195,219,239,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":112,"specializations":222},"frontend","Frontend",[223,224,227,230,233,236],{"key":201,"name":202,"field":220},{"key":225,"name":226,"field":220},"javascript","JavaScript",{"key":228,"name":229,"field":220},"typescript","TypeScript",{"key":231,"name":232,"field":220},"react","React",{"key":234,"name":235,"field":220},"vue","Vue",{"key":237,"name":238,"field":220},"angular","Angular",{"key":240,"name_tr":241,"name_en":241,"sort":242,"specializations":243},"fullstack","Fullstack",3,[244,245,246,247,248,249,250,251,252,253,254,255],{"key":201,"name":202,"field":240},{"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":225,"name":226,"field":220},{"key":228,"name":229,"field":220},{"key":231,"name":232,"field":220},{"key":234,"name":235,"field":220},{"key":237,"name":238,"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,7,14],{"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]