![]()
Bu noktaya kadar kursta, az login ve birkaç ortam değişkeni tarafından yönlendirilen, dizüstü bilgisayarınızda, bir not defteri içinde çalışan ajanlar oluşturdunuz. Bu, öğrenmek için tam olarak doğru yoldur. Ancak binlerce müşterinin 3 sabah saatinde bağımlı olduğu bir ajanı çalıştırmak için doğru yol değildir.
Bu ders, “kendi makinemde çalışıyor” ile “prodüksiyonda güvenilir ve uygun maliyetli şekilde çalışıyor” arasındaki boşluktan bahseder. Bu boşluğu Microsoft Foundry ve Microsoft Foundry Agent Service kullanarak kapatıyoruz ve araçlar, getirme, bellek, değerlendirme ve izleme özelliklerine sahip gerçek bir müşteri destek ajanı inşa ediyoruz.
Bu ders şunları kapsayacak:
Bu dersi tamamladıktan sonra şunları bileceksiniz:
Bu dersin önceki derslerin tamamlandığını ve şu konularda rahat olduğunuzu varsayar:
Ayrıca ihtiyacınız olacak:
az login).requirements.txt.Bir prototip ajan ile prodüksiyon ajanı aynı temel döngüyü paylaşır — mantık yürütme, araç çağırma, yanıt verme. Değişen, o döngünün etrafında sarılı olan her şeydir. Model, prodüksiyon ajanının yaklaşık %20’sidir; kalan %80 ise operasyonel iskelettir.
| Konu | Prototip | Prodüksiyon |
|---|---|---|
| Barındırma | Dizüstünüzde çalışır | Barındırılan bir hizmet olarak çalışır, sürümlenir ve dağıtılır |
| Kimlik | Kendi az login jetonunuz |
Kapsamlı RBAC ile yönetilen kimlik |
| Durum | Bellekte, yeniden başlatmada kaybolur | Harici (thread deposu, bellek servisi) |
| Hata | Hata izlerini görürsünüz | Yeniden deneme, geri dönüşler, ölü mektup, uyarılar |
| Maliyet | “Birkaç sent” | İstek başına takip edilir, yönlendirilir, önbelleğe alınır, bütçelenir |
| Kalite | Çıktıyı gözle kontrol edersiniz | Her sürüm öncesi otomatik olarak değerlendirilir |
| Güven | Her işlemi onaylarsınız | Politika + riskli işlemler için insan aracı |
Bu tabloyu aklınızda tutun. Aşağıdaki her bölüm bunlardan birine karşılık gelir.
Sık sık birlikte kullanacağınız üç desen vardır.
Ajan nesnesi kendi uygulama sürecinizin içindedir. Kodunuz model sağlayıcıyı doğrudan çağırır; mantık döngüsü servisinizde çalışır. Önceki tüm derslerde bu yöntem kullanıldı.
Ajan, Microsoft Foundry’de bir kaynak olarak kayıtlıdır. Foundry mantık döngüsünü barındırır, threadleri saklar, içerik güvenliğini ve RBAC’yi uygular, ajanı Foundry portalında görünür hale getirir. Uygulamanız, thread oluşturup yanıtları okuyan ince bir istemci olur.
Birden çok ajan (ve araç) açık kontrol akışıyla bir grafik halinde birleşir — sıralı adımlar, dallanma, insan onay düğümleri ve duraklatılabilen ve devam ettirilebilen dayanıklı kontrol noktaları. Bu, Microsoft Agent Framework’ün İş Akışları özelliğinin dağıtım ölçeğinde uygulamasıdır.
flowchart TB
subgraph P1[Client-Hosted]
A1[Your App Process] --> M1[Model Provider]
end
subgraph P2[Hosted Agent]
A2[Thin Client] --> F2[Foundry Agent Service]
F2 --> M2[Model + Tools + Thread Store]
end
subgraph P3[Agent Workflow]
A3[Orchestrator] --> S1[Triage Agent]
S1 --> S2[Resolver Agent]
S2 --> H[Human Approval Node]
H --> S3[Action Agent]
end
Bir ajan dağıtmak tek seferlik bir push değildir. Bir döngüdür ve yazılım sürüm döngüsü gibidir çünkü aslında odur.
flowchart LR
Create[Create / Author] --> Version[Version]
Version --> Evaluate[Evaluate offline]
Evaluate -->|passes gate| Deploy[Deploy hosted]
Evaluate -->|fails gate| Create
Deploy --> Observe[Observe online]
Observe --> Improve[Collect failures]
Improve --> Create
Deploy --> Retire[Retire old version]
Önemli fikir, Ders 10 dan alınmıştır: çevrimdışı değerlendirme bir kapıdır, sonradan düşünülmez. Yeni bir ajan sürümü değerlendirme eşiklerinizi geçmeden dağıtılmaz. Çevrimiçi gözlemlenebilirlik gerçek dünya hatalarını çevrimdışı test setinize geri besler. İşte tüm döngü budur.
Bir ajanı ölçeklendirmek, durumsuz bir web API’sini ölçeklendirmekten farklıdır çünkü her istek birden çok pahalı model ve araç çağrısı tetikleyebilir. Yükün çoğunu taşıyan dört teknik vardır.
Durumsuz istek işleme. İşlem belleğinde kullanıcıya özel durum tutmayın. Konuşma threadlerini Foundry thread deposunda veya bir bellek servisi içinde saklayın, böylece herhangi bir örnek herhangi bir isteği işleyebilir. Bu yatay ölçeklendirmeyi mümkün kılar — örnek ekleyin, yapışkan oturumlara gerek yok.
Model yönlendirme. Her istek en yetenekli (ve en pahalı) modelinizi gerektirmez. Basit istekleri — niyet sınıflandırması, kısa gerçekçi cevaplar — küçük, hızlı bir modele yönlendirin ve büyük modeli gerçek mantık yürütme için ayırın. Foundry’nin Model Router bunu sizin için yapabilir veya hafif bir sınıflandırıcıyı kendiniz uygulayabilirsiniz. Labda bu DIY versiyonunu inşa edeceksiniz.
Yanıt önbellekleme. Birçok destek sorgusu neredeyse tekrarlanan sorulardır (“şifremi nasıl sıfırlarım?”). Yaygın soruların cevaplarını önbelleğe alın ve model çağrısı yapmadan servis edin. Orta derecede bir önbellek isabet oranı anlamlı olarak maliyet ve gecikmeyi düşürür.
Eşzamanlılık ve geri basınç. Model sağlayıcılar oran limitlerine sahiptir. Eşzamanlılığı sınırlandırın, üssel geri çekilme ile yeniden denemeler kullanın ve nazikçe başarısız olun (sıraya alınmış “üzerinde çalışıyoruz” yanıtı 500 hatasından iyidir).
flowchart LR
Q[User query] --> C{Cache hit?}
C -->|yes| R[Return cached answer]
C -->|no| Router{Complexity?}
Router -->|simple| SLM[Small model]
Router -->|complex| LLM[Large model]
SLM --> Out[Response]
LLM --> Out
Out --> Store[Cache + trace]
Göremediğinizi yönetemezsiniz. Ders 10’da anlatıldığı gibi, Microsoft Agent Framework OpenTelemetry izlerini doğal olarak yayımlar — her model çağrısı, araç çağrısı ve düzenleme adımı bir iz aralığı olur. Prodüksiyonda bu aralıkları Microsoft Foundry’e (ya da herhangi bir OTel uyumlu arka uca) aktarırsınız, böylece:
from agent_framework.observability import get_tracer
tracer = get_tracer()
with tracer.start_as_current_span("support_request") as span:
span.set_attribute("customer.tier", "enterprise")
span.set_attribute("routed.model", "gpt-5-nano")
# agent execution is traced automatically inside this span
customer.tier ve routed.model gibi özellikler, iz duvarını cevap verilebilir sorulara dönüştürür (“kurumsal müşteriler küçük modele çok sık mı yönlendiriliyor?”).
Prodüksiyon ajanlarındaki maliyet en çok tokenlardan kaynaklanır. Etkiye göre sıralanmış üç kaldıraç:
Değerlendirme kapıları ve maliyet kontrolü aynı disiplindir, iki farklı açıdan: değerlendirme size kalite tabanını söyler, yönlendirme ve önbellekleme sizi o tabanın maliyetine mümkün olduğunca yakın tutar.
Yönetişim. Barındırılan Ajanlar Foundry’nin RBAC’sini, içerik güvenliğini ve denetim kayıtlarını devralır. Her ajan için en az ayrıcalığa sahip yönetilen bir kimlik verin — bilgi tabanına salt okuma erişimi, bilet API’sine kapsamlı erişim, başka bir şey değil.
İnsan aracı. Bazı işlemler doğrudan otomatikleştirilemeyecek kadar önemlidir — geri ödeme yapma, hesap silme, hukuk ekibine yükseltme gibi. Microsoft Agent Framework onay gerektiren araçları destekler: ajan işlemi önerir, yürütme duraklar, insan onaylar veya reddeder ve iş akışı devam eder. Bu temel yapıyı Ders 6 ‘da gördünüz; burada dağıtıyorsunuz.
Prodüksiyonda MCP. MCP, ajanınızın harici araçları standart bir arayüzle kullanmasını sağlar. Prodüksiyonda her MCP sunucusunu güvensiz bir sınır olarak ele alın: sunucu sürümünü sabitleyin, kapsamlı kimlikle çalıştırın, çıktılarını doğrulayın ve asla sırları ona açmayın. MCP sunucu bir bağımlılıktır; bağımlılıklar yamalanır, denetlenir ve oran sınırına tabi tutulur.
flowchart TB
subgraph Dev[Development Architecture]
D1[Notebook] --> D2[Agent Framework]
D2 --> D3[Model Provider]
D2 --> D4[Local tools]
end
subgraph Deploy[Deployment Architecture]
E1[CI pipeline] --> E2[Evaluation gate]
E2 -->|pass| E3[Foundry Agent Service]
E3 --> E4[Versioned hosted agent]
end
subgraph Run[Runtime Architecture]
F1[Client app] --> F2[Hosted agent]
F2 --> F3[Model Router]
F2 --> F4[Azure AI Search RAG]
F2 --> F5[Memory service]
F2 --> F6[MCP tools]
F2 --> F7[OTel -> Foundry tracing]
F2 --> F8[Human approval]
end
Bu üç diyagram — geliştirme, dağıtım, çalışma zamanı — ajanın yaşamının üç aşamasındaki aynı halidir. Ardından gelen lab size bunu inşa ettirir.
code_samples/16-python-agent-framework.ipynb dosyasını açın ve baştan sona ilerleyin. Her prodüksiyon konusu iç içe olan bir Contoso müşteri destek ajanı oluşturacaksınız:
Dizüstü, her prodüksiyon konusu için kendi içinde çalıştırılabilir bölüm olacak şekilde düzenlenmiştir. Kalbi yönlendirme-artı-önbellekleme istek işlemcisidir:
async def handle_support_request(query: str, customer_id: str) -> str:
# 1. Serve from cache when we can.
cached = response_cache.get(normalize(query))
if cached:
return cached
# 2. Route by complexity to control cost.
model = "gpt-5-nano" if is_simple(query) else "gpt-5-mini"
# 3. Run the agent inside a trace span for observability.
with tracer.start_as_current_span("support_request") as span:
span.set_attribute("routed.model", model)
span.set_attribute("customer.id", customer_id)
response = await support_agent.run(query, model=model)
# 4. Cache and return.
response_cache.set(normalize(query), response.text)
return response.text
Sürümü koruyan değerlendirme kapısı şöyle görünür:
async def evaluation_gate(agent, test_cases, threshold: float = 0.8) -> bool:
passed = 0
for case in test_cases:
result = await agent.run(case["input"])
if score_response(result.text, case["expected"]) >= 0.8:
passed += 1
pass_rate = passed / len(test_cases)
print(f"Evaluation pass rate: {pass_rate:.0%} (gate: {threshold:.0%})")
return pass_rate >= threshold # only deploy if the gate passes
Her satırı okuyun — dizüstü, hiçbir şeyin bir framework çağrısının arkasına saklanmaması için primitifleri kasıtlı olarak küçük tutar.
Yukarıdaki değerlendirme kapısı ajan nesnenize çevrimdışı çalışır. Bir Ajan Barındırılan Ajan olarak dağıtıldıktan sonra, bir tane daha, hatta daha ucuz bir kontrol gerekir: dağıtılan uç nokta gerçekten cevap veriyor mu?
“Başarıyla” dağıtmak sadece kontrol düzleminin tanımı kabul ettiğini kanıtlar — ajan yanıt verdiğini kanıtlamaz. Eksik bir bağımlılık, yanlış model yönlendirme veya süresi dolmuş bir bağlantı, hiçbir şey döndürmeyen yeşil bir dağıtıma yol açabilir. Bir duman testi, tam değerlendirme maliyetine katlanmadan saniyeler içinde, her dağıtımda bunu yakalar.
Bu depo, AI Smoke Test GitHub Action üzerinde inşa edilmiş kullanıma hazır bir duman testi hattı sağlar:
tests/lesson-16-smoke-tests.json, Contoso destek ajanı için istemleri ve doğrulamaları içerir (temellendirilmiş politika cevapları, sipariş sorgulama, konu dışına çıkmama ve çok turlu thread sürekliliği). Diğer derslerin ajan katalogları onun yanındadır — bkz. tests/README.md..github/workflows/smoke-test.yml Azure OIDC ile giriş yapar ve her istemi ajanın Yanıtlar uç noktasına POST eder, herhangi bir doğrulama başarısızlığında işi başarısız sayar.- name: Smoke-test hosted agent
uses: JFolberth/ai-smoketest@v1
with:
project_endpoint: $
agent_name: ContosoSupportAgent
tests_file: tests/lesson-16-smoke-tests.json
Ajanınız dağıtıldıktan sonra Actions sekmesinden çalıştırın, Foundry proje uç noktanızı ve ajan adınızı sağlayarak. Federated identity, Foundry proje kapsamı için Azure AI User rolüne ihtiyaç duyar. Katmanları bir piramit olarak düşünün: her dağıtımdan sonra çalışan duman testleri (erişilebilir ve yanıt veriyor mu?), terfi öncesi çalışan çevrimdışı değerlendirme (gönderime uygun mu?) ve sürekli çalışan çevrimiçi değerlendirme (gerçek ortamda nasıl çalışıyor?).
Ödeve geçmeden önce anlayışınızı test edin.
1. Üretim ajanının yaklaşık ne kadarı “model”dir ve geri kalanı nedir?
2. Ne zaman bir Hosted Agent yerine istemci barındırılan ajan tercih edersiniz?
3. Ölçeklenebilir bir ajanın kendi işlem belleğinde durumsuz olması neden zorunludur?
4. Model yönlendirmesi hangi problemi çözer ve değerlendirme ile ilişkisi nedir?
5. “Değerlendirme geçidi” nedir ve yaşam döngüsünde nerededir?
6. Üretimde bir MCP sunucusu neden güvenilmeyen bir sınır olarak değerlendirilmelidir?
7. Genellikle üretim ajanı maliyetine en büyük etkiyi yapan tek değişiklik nedir ve neden?
8. customer.tier ve routed.model gibi span özniteliklerinin gözlemlenebilirlikte rolü nedir?
Laboratuvardaki müşteri destek ajanını alın ve belirli bir senaryo için güçlendirin: bir SaaS şirketi için abonelik faturalama destek ajanı.
Teslimatınız şunları içermelidir:
get_subscription_status, get_invoice, ve issue_credit (50$ üzeri kredi insan onayı gerektirir).Kısa bir paragraf (markdown hücresinde) yazarak hangi model yönlendirme kuralını seçtiğinizi ve gerçek trafikle nasıl doğrulayacağınızı açıklayın. Tek bir doğru cevap yoktur — değerlendirmeniz, üretimle ilgili endişelerin birlikte mantıklı bağlandığına dayalıdır.
Bu derste Microsoft Foundry ile bir ajanı prototipten üretime taşıdınız:
Bir sonraki ders zıt bir yolculuğu anlatır: ajanları buluta ölçeklendirmek yerine, onları aşağı indirip tamamen yerel olarak bir geliştirici makinesinde çalıştıracaksınız.
Computer Use Agents (CUA) Oluşturma
Feragatname: Bu belge, AI çeviri hizmeti Co-op Translator kullanılarak çevrilmiştir. Doğruluk için çaba sarf etsek de, otomatik çevirilerin hata veya yanlışlık içerebileceğini lütfen unutmayınız. Orijinal belge, kendi dilinde yetkili kaynak olarak kabul edilmelidir. Kritik bilgiler için profesyonel insan çevirisi önerilir. Bu çevirinin kullanımı sonucu ortaya çıkabilecek yanlış anlamalardan veya yanlış yorumlamalardan sorumlu değiliz.