﻿
{"id":27549,"date":"2025-02-18T16:01:22","date_gmt":"2025-02-18T16:01:22","guid":{"rendered":"https:\/\/www.gencayyildiz.com\/blog\/?p=27549"},"modified":"2025-02-20T22:25:11","modified_gmt":"2025-02-20T22:25:11","slug":"semantic-kernel-nedir-deepseek-r1-esliginde-net-acisindan-derinlemesine-degerlendirelim","status":"publish","type":"post","link":"https:\/\/www.gencayyildiz.com\/blog\/semantic-kernel-nedir-deepseek-r1-esliginde-net-acisindan-derinlemesine-degerlendirelim\/","title":{"rendered":"Semantic Kernel Nedir? (DeepSeek R1 E\u015fli\u011finde .NET A\u00e7\u0131s\u0131ndan Derinlemesine De\u011ferlendirelim)"},"content":{"rendered":"<div id=\"fb-root\"><\/div>\n<p><a href=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2025\/02\/Semantic-Kernel-Nedir-DeepSeek-R1-Esliginde-.NET-Acisindan-Derinlemesine-Degerlendirelim-1.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2025\/02\/Semantic-Kernel-Nedir-DeepSeek-R1-Esliginde-.NET-Acisindan-Derinlemesine-Degerlendirelim-1.png\" alt=\"Semantic Kernel Nedir (DeepSeek R1 E\u015fli\u011finde .NET A\u00e7\u0131s\u0131ndan Derinlemesine De\u011ferlendirelim)\" width=\"3424\" height=\"1612\" class=\"aligncenter size-full wp-image-27566\" srcset=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2025\/02\/Semantic-Kernel-Nedir-DeepSeek-R1-Esliginde-.NET-Acisindan-Derinlemesine-Degerlendirelim-1.png 3424w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2025\/02\/Semantic-Kernel-Nedir-DeepSeek-R1-Esliginde-.NET-Acisindan-Derinlemesine-Degerlendirelim-1-300x141.png 300w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2025\/02\/Semantic-Kernel-Nedir-DeepSeek-R1-Esliginde-.NET-Acisindan-Derinlemesine-Degerlendirelim-1-1024x482.png 1024w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2025\/02\/Semantic-Kernel-Nedir-DeepSeek-R1-Esliginde-.NET-Acisindan-Derinlemesine-Degerlendirelim-1-768x362.png 768w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2025\/02\/Semantic-Kernel-Nedir-DeepSeek-R1-Esliginde-.NET-Acisindan-Derinlemesine-Degerlendirelim-1-1536x723.png 1536w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2025\/02\/Semantic-Kernel-Nedir-DeepSeek-R1-Esliginde-.NET-Acisindan-Derinlemesine-Degerlendirelim-1-2048x964.png 2048w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2025\/02\/Semantic-Kernel-Nedir-DeepSeek-R1-Esliginde-.NET-Acisindan-Derinlemesine-Degerlendirelim-1-520x245.png 520w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2025\/02\/Semantic-Kernel-Nedir-DeepSeek-R1-Esliginde-.NET-Acisindan-Derinlemesine-Degerlendirelim-1-720x340.png 720w\" sizes=\"auto, (max-width: 3424px) 100vw, 3424px\" \/><\/a><br \/>\nMerhaba,<\/p>\n<p>Bu i\u00e7eri\u011fimizde Microsoft taraf\u0131ndan .NET ekosisteminde Yapay Zek\u00e2 (AI) uygulamalar\u0131n\u0131 geli\u015ftirmemizi kolayla\u015ft\u0131rmak amac\u0131yla sunulan <em>Semantic Kernel<\/em> k\u00fct\u00fcphanesini hem teorik hem de pratik bir \u015fekilde derinlemesine inceliyor olaca\u011f\u0131z. O halde buyurun hi\u00e7 vakit kaybetmeksizin ba\u015flayal\u0131m&#8230;<\/p>\n<h3>Semantic Kernel Nedir?<\/h3>\n<p>Semantic Kernel, yukar\u0131daki sat\u0131rlarda da bahsedildi\u011fi \u00fczere Microsoft taraf\u0131ndan sunulan ve \u00f6zellikle .NET ekosisteminde Yapay Zeka (AI) uygulamalar\u0131 geli\u015ftirmeyi kolayla\u015ft\u0131rmay\u0131 hedefleyen a\u00e7\u0131k kaynakl\u0131 bir k\u00fct\u00fcphanedir. B\u00fcy\u00fck Dil Modelleri (Large Language Models &#8211; LLM) ve yapay zek\u00e2 tabanl\u0131 yetenekleri ile yaz\u0131l\u0131m d\u00fcnyas\u0131n\u0131n geleneksel i\u015f ak\u0131\u015flar\u0131n\u0131 birle\u015ftirmeye y\u00f6nelik \u00e7e\u015fitli ara\u00e7lar ve soyutlamalar sa\u011flamaktad\u0131r. Bu minvalde, .NET uygulamalar\u0131nda OpenAI, Azure OpenAI, DeepSeek vs. gibi b\u00fcy\u00fck dil modeli servislerini entegre edebilecek bir &#8216;\u00e7er\u00e7eve&#8217; veya &#8216;iskelet&#8217; rol\u00fc g\u00f6rmektedir diyebiliriz.<\/p>\n<p>Semantic Kernel, .NET \u00e7al\u0131\u015fmalar\u0131nda AI destekli uygulamalar geli\u015ftirmek i\u00e7in \u00f6zelle\u015ftirilebilir ve geni\u015fletilebilir bir yap\u0131 sunmaktad\u0131r. LLM&#8217;lerin \u00e7\u0131kt\u0131lar\u0131yla geleneksel i\u015f ak\u0131\u015flar\u0131n\u0131 birle\u015ftirebilir, i\u015f mant\u0131klar\u0131ndaki kararlar\u0131 LLM destekli verebilir, ge\u00e7mi\u015f verileri hat\u0131rlayarak uygulaman\u0131n \u00f6\u011frenmesini ve konu ba\u011flam\u0131n\u0131n hat\u0131rlanmas\u0131n\u0131 sa\u011flayabilir, mevcut AI sistemlerini .NET yetenekleriyle geni\u015fletebilir ve kendimize uygun \u00f6zelle\u015ftirerek ihtiya\u00e7lar\u0131m\u0131za AI destekli tam bir altyap\u0131 sa\u011flayabiliriz.<\/p>\n<p>\u015eimdi gelin, Semantic Kernel&#8217;\u0131n yeteneklerini alt ba\u015fl\u0131klar alt\u0131nda tek tek de\u011ferlendirmeye ve b\u00f6ylece yap\u0131sal zenginli\u011fini ortaya \u00e7\u0131karmaya \u00e7al\u0131\u015fal\u0131m.<\/p>\n<h5>B\u00fcy\u00fck Dil Modelleriyle Entegrasyon<\/h5>\n<p>Semantic Kernel, OpenAI veya Azure OpenAI gibi servislerdeki b\u00fcy\u00fck dil modelleri ile etkile\u015fimi standart bir aray\u00fcz \u00fczerinden sunmakta ve \u00f6zellikle .NET uygulamalar\u0131nda istemci \u00e7a\u011fr\u0131lar\u0131, kimlik do\u011frulama ve istemci yap\u0131land\u0131rmalar\u0131 gibi ayr\u0131nt\u0131lar\u0131 kolayl\u0131kla y\u00f6neterek LLM&#8217;lerden faydalan\u0131lmas\u0131n\u0131 sa\u011flamaktad\u0131r.<\/p>\n<h5>&#8216;Plugins&#8217; (Eklenti) ve &#8216;Functions&#8217; (Fonksiyonlar)<\/h5>\n<p>Semantic Kernel, &#8216;Plugins&#8217; (eklenti) ve &#8216;Function&#8217; (fonksiyon) gibi yap\u0131lar\u0131 tan\u0131mlayarak yeniden kullan\u0131labilir yapay zeka i\u015flevsellikleri yaratmam\u0131za olanak tan\u0131maktad\u0131r. Bu yakla\u015f\u0131m \u00f6zellikle .NET uygulamalar\u0131 i\u00e7inde katmanl\u0131 ve mod\u00fcler bir mimari kurmay\u0131 kolayla\u015ft\u0131rmaktad\u0131r.<\/p>\n<table>\n<thead>\n<tr>\n<th style=\"width:50%\">Plugins<\/th>\n<th>Function<\/th>\n<\/tr>\n<\/thead>\n<tbody style=\"font-size:12px;line-height:1.8\">\n<tr>\n<td style=\"text-align:left;vertical-align: text-top;\">\nSemantic Kernel&#8217;da belirli bir g\u00f6revi yerine getiren mod\u00fcler bile\u015fene &#8216;Plugins&#8217; denmektedir. Ba\u015fka bir deyi\u015fle, LLM&#8217;lere \u00e7e\u015fitli g\u00f6revleri yapt\u0131rmak ve uygulamaya belirli yetenekler kazand\u0131rmak i\u00e7in tan\u0131mlanm\u0131\u015f mod\u00fcler yeteneklerdir.<\/p>\n<p>Teknik olarak birbiriyle ili\u015fkili &#8216;fonksiyonlar&#8217; grubudur.<\/p>\n<p>\u00d6rnek olarak;<\/p>\n<ul>\n<li><em>Matematik Plugin&#8217;i<\/em> : \u0130\u00e7inde toplama, \u00e7\u0131karma, \u00e7arpma vs. gibi fonksiyonlar\u0131 bar\u0131nd\u0131r\u0131r.<\/li>\n<li><em>Metin Analizi Plugin&#8217;i<\/em> : \u0130\u00e7inde duygu analizi, \u00f6zetleme gibi i\u015flemler yapan fonksiyonlar bulunur.<\/li>\n<li><em>\u00c7eviri Plugin&#8217;i<\/em> : Metinleri bir dilden di\u011ferine \u00e7evirmek i\u00e7in fonksiyonlar i\u00e7erir. &#8220;T\u00fcrk\u00e7e&#8217;den \u0130ngilizce&#8217;ye \u00e7evir&#8221; ya da &#8220;\u0130ngilizce&#8217;den T\u00fcrk\u00e7e&#8217;ye \u00e7evir&#8221; gibi farkl\u0131 fonksiyonlar bar\u0131nd\u0131rabilir.<\/li>\n<\/ul>\n<\/td>\n<td style=\"text-align:left;vertical-align: text-top;\">\nFunction ise tek bir amac\u0131 ve belirli bir g\u00f6revi ger\u00e7ekle\u015ftirmeye odakl\u0131 olan ba\u011f\u0131ms\u0131z bir i\u015flemdir. Genelde bir LLM \u00e7a\u011fr\u0131s\u0131 veya belirli bir i\u015f mant\u0131\u011f\u0131n\u0131 y\u00fcr\u00fctmekten sorumlu fonksiyondur.<\/p>\n<p>Bir plugin i\u00e7erisinde bir veya birden fazla function bulunabilir. Yap\u0131sal olarak da function&#8217;lar; genellikle bir girdi almakta, i\u015f mant\u0131\u011f\u0131 do\u011frultusunda operatif i\u015flem yapmakta ve bu i\u015flem neticesinde bir \u00e7\u0131kt\u0131 \u00fcretmektedir.<\/p>\n<p>\u00d6rnek olarak;<\/p>\n<ul>\n<li><em>SummarizeText()<\/em> : Bir metni \u00f6zetleyen fonksiyondur.<\/li>\n<li><em>ExtractKeywords()<\/em> : Metinden anahtar kelimeleri ay\u0131klayan fonksiyondur.<\/li>\n<li><em>TranslateText()<\/em> : Metni farkl\u0131 bir dile \u00e7eviren fonksiyondur.<\/li>\n<\/ul>\n<\/td>\n<\/tr>\n<tr>\n<td colspan=\"2\">Plugin, bir dizi fonksiyonu i\u00e7eren daha b\u00fcy\u00fck bir yap\u0131yken, function ise tek ba\u015f\u0131na \u00e7al\u0131\u015fan belirli bir g\u00f6reve odakl\u0131 operatif \u00e7al\u0131\u015fma sergileyen bir i\u015flemdir.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<h5>Prompt \u015eablonlama ve D\u00fczg\u00fcn Prompt Y\u00f6netimi<\/h5>\n<p>B\u00fcy\u00fck dil modellerine g\u00f6nderilen prompt&#8217;lar\u0131n tutarl\u0131 ve s\u00fcrd\u00fcr\u00fclebilir olmas\u0131 i\u00e7in Semantic Kernel prompt \u015fablonlama \u00f6zelli\u011fi sunmaktad\u0131r. Bu \u00f6zellik sayesinde modelin nas\u0131l cevap vermesi, hangi bilgilerin dikkate al\u0131nmas\u0131 veya nas\u0131l bir \u00fcslup kullan\u0131lmas\u0131 gerekti\u011fini belirleyen \u015fablonlar olu\u015fturulabilmekte ve y\u00f6netilebilmektedir. Tabi bunu yaparken bir yandan da uygulaman\u0131n farkl\u0131 s\u00fcr\u00fcmleri veya ortamlar\u0131na g\u00f6re prompt&#8217;lar\u0131 ay\u0131rabilir ve kullan\u0131c\u0131lardan yahut ba\u015fka sistemlerden gelen verileri de \u015fablona kolayca entegre edebilirsiniz.<\/p>\n<h5>Ba\u011flam (Context) ve Memory (Bellek)<\/h5>\n<p>Semantic Kernel, uygulamalar\u0131n\u0131zda diyalo\u011fa veya senaryoya dayal\u0131 bir bellek\/memory kavram\u0131 getirmektedir. Bir LLM ile konu\u015fma halindeyken veya ard\u0131\u015f\u0131k sorgular yaparken \u00f6nceki ad\u0131mlardan elde edilen bilgilerin saklanmas\u0131 ve bu bilgilerin gelecekteki sorgularda kullan\u0131lmas\u0131 olduk\u00e7a kritik \u00f6neme sahiptir diyebiliriz. Haliyle Semantic Kernel ile ister o anki istek veya konu\u015fma ak\u0131\u015f\u0131na g\u00f6re gerekli bilgilerin sakland\u0131\u011f\u0131 ge\u00e7ici belle\u011fi<span style=\"font-size:12px;\">(K\u0131sa Vadeli Haf\u0131za \/ Short-Term Memory)<\/span>, isterseniz de kullan\u0131c\u0131n\u0131n ge\u00e7mi\u015f etkile\u015fimleri, veritaban\u0131 bilgileri veya \u00f6nceki sorgulardan t\u00fcretilmi\u015f sonu\u00e7lar gibi kal\u0131c\u0131 verilerin bulundu\u011fu uzun vadeli haf\u0131zay\u0131<span style=\"font-size:12px;\">(Uzun Vadeli Haf\u0131za \/ Long-Term Memory)<\/span> kullanabilirsiniz.<\/p>\n<h5>Y\u00fcksek Seviyeli Senaryo Deste\u011fi<\/h5>\n<p>Semantic Kernel sadece temel fonksiyon \u00e7a\u011fr\u0131lar\u0131n\u0131 de\u011fil, daha karma\u015f\u0131k senaryolar\u0131n da ele al\u0131nabilmesi i\u00e7in \u00e7e\u015fitli y\u00fcksek seviyeli soyutlamalar da sunmaktad\u0131r. Misal olarak; bir fonksiyonun \u00e7\u0131kt\u0131s\u0131n\u0131 bir ba\u015fka fonksiyonun girdisi olarak al\u0131p i\u015flemek <span style=\"font-size:12px;\">(zincirleme prompt&#8217;lar &#8211; chaining)<\/span>, model cevab\u0131na g\u00f6re farkl\u0131 i\u015f ak\u0131\u015f\u0131 ad\u0131mlar\u0131n\u0131 tetiklemek veya sonland\u0131rmak gibi ko\u015fullu i\u015f ak\u0131\u015flar\u0131 ve domain&#8217;e \u00f6zel senaryolarda LLM&#8217;in yan\u0131tlar\u0131n\u0131 ek mant\u0131kla birle\u015ftirerek karar mekanizmalar\u0131 olu\u015fturmak \u00f6rnek verilebilir.<\/p>\n<h5>Semantic Kernel \u0130le Hangi Uygulamalar Yap\u0131labilir?<\/h5>\n<p>Semantic Kernel sayesinde .NET uygulamalar\u0131nda a\u015fa\u011f\u0131daki gibi yapay zeka tabanl\u0131 pek \u00e7ok senaryoyu hayata ge\u00e7irmek m\u00fcmk\u00fcnd\u00fcr.<\/p>\n<table style=\"font-size:14px;\">\n<tbody>\n<tr>\n<td style=\"width:25%;text-align:left;vertical-align: text-top;line-height:1.8\"><strong>Sohbet Uygulamalar\u0131 (Chatbot&#8217;lar)<\/strong><\/td>\n<td style=\"text-align:left;vertical-align: text-top;line-height:1.8\">M\u00fc\u015fteri hizmetleri, teknik destek veya i\u00e7 kaynak dan\u0131\u015fmanl\u0131\u011f\u0131 gibi \u00f6zel alanlarda sohbet robotlar\u0131 gibi \u00f6zel ama\u00e7l\u0131 Chatbot&#8217;lar ve kullan\u0131c\u0131larla farkl\u0131 dillerde etkile\u015fim kurabilen, sorular\u0131 anlay\u0131p cevaplayabilen \u00e7oklu dil destekli sohbet uygulamalar\u0131 geli\u015ftirilebilir. T\u00fcm bunlar\u0131 yaparken kullan\u0131c\u0131lar\u0131n \u00f6nceki mesajlar\u0131ndan veya uygulama i\u00e7inde yap\u0131lan aksiyonlardan gelen bilgileri Semantic Kernal&#8217;\u0131n sa\u011flad\u0131\u011f\u0131 memory\/bellek mekanizmas\u0131yla saklay\u0131p ileri ad\u0131mlarda kullanarak daha insans\u0131 etkile\u015fimler sa\u011flanabilir.<\/td>\n<\/tr>\n<tr>\n<td style=\"width:25%;text-align:left;vertical-align: text-top;line-height:1.8\"><strong>\u0130\u00e7erik Olu\u015fturma (Content Generation)<\/strong><\/td>\n<td style=\"text-align:left;vertical-align: text-top;line-height:1.8\">\u00d6zg\u00fcn blog yaz\u0131lar\u0131, makaleler, sosyal medya g\u00f6nderileri, \u00fcr\u00fcn tan\u0131t\u0131mlar\u0131 veya reklam kampanyalar\u0131 i\u00e7in yarat\u0131c\u0131 pazarlama ve reklam metinleri, mevcut bir i\u00e7eri\u011fi \u00f6zetlemek ya da detayland\u0131rmak i\u00e7in metin geni\u015fletme yahut k\u0131saltma i\u015flemleri yap\u0131labilir.<\/td>\n<\/tr>\n<tr>\n<td style=\"width:25%;text-align:left;vertical-align: text-top;line-height:1.8\"><strong>Soru &#8211; Cevap (Q &#038; A) ve Bilgi Y\u00f6netimi<\/strong><\/td>\n<td style=\"text-align:left;vertical-align: text-top;line-height:1.8\">Kurumsal dok\u00fcmantasyon, veri tabanlar\u0131ndan veya belge depolar\u0131 i\u00e7inden cevap bulabilen sistemler ya da kullan\u0131c\u0131lar\u0131n sorular\u0131na g\u00f6re ilgili belgeler \u00fczerinden arama yapabilen ve \u00f6nerilerde bulunabilen sistemler geli\u015ftirilebilir.<\/td>\n<\/tr>\n<tr>\n<td style=\"width:25%;text-align:left;vertical-align: text-top;line-height:1.8\"><strong>Metin D\u00f6n\u00fc\u015f\u00fcmleri ve Dil \u0130\u015fleme<\/strong><\/td>\n<td style=\"text-align:left;vertical-align: text-top;line-height:1.8\">Farkl\u0131 dillere \u00e7eviri, uzun metinleri \u00f6zetleme, raporlama veya konu\u015fma transkriptlerini k\u0131salt\u0131p \u00f6zetleme yaz\u0131l\u0131mlar\u0131 olu\u015fturulabilir. Bunlar\u0131n d\u0131\u015f\u0131nda metinde ifade edilen duygu, ton veya niyet gibi \u00f6\u011feleri tespit ederek duygu analizinin de yap\u0131labilmesi muhtemeldir.<\/td>\n<\/tr>\n<tr>\n<td style=\"text-align:left;vertical-align: text-top;line-height:1.8\" colspan=\"2\">Vee daha fazlas\u0131n\u0131&#8230;<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Bunlar\u0131n d\u0131\u015f\u0131nda genel anlamda AI agent dedi\u011fimiz ve \u00f6nceden belirlenmi\u015f hedeflere ula\u015fabilen programlar da geli\u015ftirebilirsiniz. Ne gibi mi? Kod yazan, e-posta olu\u015fturup g\u00f6nderen, toplant\u0131lar\u0131 \u00f6zetleyen, \u00f6nerilerde bulunan vs. gibi&#8230;<\/p>\n<h5>Semantic Kernel \u0130le ML.NET Aras\u0131ndaki Fark Nedir?<\/h5>\n<p>ML.NET, genel makine \u00f6\u011frenimi i\u00e7in tasarlanm\u0131\u015fken, Semantic Kernel ise b\u00fcy\u00fck dil modellerini ve yarat\u0131c\u0131 AI g\u00f6revlerini kullanabilmek i\u00e7in bir orkestrasyon sa\u011flamas\u0131 maksad\u0131yla tasarlanm\u0131\u015ft\u0131r.<\/p>\n<table style=\"font-size:14px;\">\n<thead>\n<tr>\n<th style=\"width:14%text-align:left;\">\u00d6zellik \/ Kriter<\/th>\n<th style=\"width:43%text-align:left;\">ML.NET<\/th>\n<th style=\"width:43%text-align:left;\">Semantic Kernel<\/th>\n<\/tr>\n<\/thead>\n<tbody>\n<tr>\n<td style=\";text-align:left;vertical-align: text-top;line-height:1.8\"><strong>Kullan\u0131m Alan\u0131<\/strong><\/td>\n<td style=\"text-align:left;vertical-align: text-top;line-height:1.8\">Makine \u00f6\u011frenmesi (ML) modellerini .NET i\u00e7inde e\u011fitmek ve \u00e7al\u0131\u015ft\u0131rmak i\u00e7in geli\u015ftirilmi\u015ftir.<\/p>\n<blockquote><p>Modeli kendiniz e\u011fitirsiniz.<br \/>&nbsp;<\/p><\/blockquote>\n<p>Tahmin, s\u0131n\u0131fland\u0131rma, regresyon, zaman serisi, anormallik tespiti vs. kullan\u0131m alanlar\u0131d\u0131r.\n<\/td>\n<td style=\"text-align:left;vertical-align: text-top;line-height:1.8\">B\u00fcy\u00fck dil modelleri (LLM) ile \u00e7al\u0131\u015fabilmek ve AI destekli uygulamalar geli\u015ftirebilmek i\u00e7in tasarlanm\u0131\u015ft\u0131r.<\/p>\n<blockquote><p>Var olan LLM&#8217;leri kullan\u0131r, e\u011fitim yapmazs\u0131n\u0131z.<\/p><\/blockquote>\n<p>Chatbot, i\u00e7erik olu\u015fturma, Q &#038; A, metin \u00f6zetleme, \u00e7eviri vs. kullan\u0131m alanlar\u0131d\u0131r.\n<\/td>\n<\/tr>\n<tr>\n<td style=\"width:25%;text-align:left;vertical-align: text-top;line-height:1.8\"><strong>Ama\u00e7<\/strong><\/td>\n<td style=\"text-align:left;vertical-align: text-top;line-height:1.8\">Geleneksel makine \u00f6\u011frenmesi modellerini e\u011fitmeyi ve tahmin yapmay\u0131 ama\u00e7lar.<\/td>\n<td style=\"text-align:left;vertical-align: text-top;line-height:1.8\">LLM&#8217;leri ve geleneksel programlamay\u0131 birle\u015ftirmek ve Chatbox, metin i\u015fleme, planlama vb. i\u015flemleri yapmay\u0131 ama\u00e7lar.<\/td>\n<\/tr>\n<tr>\n<td style=\"width:25%;text-align:left;vertical-align: text-top;line-height:1.8\"><strong>Model E\u011fitimi<\/strong><\/td>\n<td style=\"text-align:left;vertical-align: text-top;line-height:1.8\">\u00d6zel ML modellerini e\u011fitmek m\u00fcmk\u00fcnd\u00fcr. S\u0131n\u0131fland\u0131rma, regresyon, tahminleme vs. yap\u0131labilir.<\/td>\n<td style=\"text-align:left;vertical-align: text-top;line-height:1.8\">Kendi modelini e\u011fitmemektedir. OpenAI, Azure OpenAI, DeepSeek vs. gibi b\u00fcy\u00fck AI modellerini kullan\u0131r.<\/td>\n<\/tr>\n<tr>\n<td style=\"width:25%;text-align:left;vertical-align: text-top;line-height:1.8\"><strong>Ba\u011f\u0131ml\u0131l\u0131klar<\/strong><\/td>\n<td style=\"text-align:left;vertical-align: text-top;line-height:1.8\">Tamamen lokal \u00e7al\u0131\u015fabilir, d\u0131\u015f API ba\u011f\u0131ml\u0131l\u0131\u011f\u0131 yoktur.<\/td>\n<td style=\"text-align:left;vertical-align: text-top;line-height:1.8\">D\u0131\u015f AI API&#8217;lerine ba\u011f\u0131ml\u0131d\u0131r. OpenAI, Azure OpenAI, Hugging Face, DeepSeek vs.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>Evet, art\u0131k Semantic Kernel&#8217;\u0131 yeterince tan\u0131d\u0131\u011f\u0131m\u0131za g\u00f6re .NET platformunda pratiksel olarak deneyimlemeye ge\u00e7ebiliriz.<\/p>\n<h3>.NET Projesinde Semantic Kernel Kullan\u0131m\u0131<\/h3>\n<p>Semantic Kernel&#8217;\u0131 minimum kurulumla kullanabilmek i\u00e7in SDK paketine ve kullan\u0131lacak LLM servisinden bir endpoint&#8217;e ihtiyac\u0131m\u0131z vard\u0131r diyebiliriz. Misal olarak a\u015fa\u011f\u0131daki s\u00fcre\u00e7te DeepSeek R1 e\u015fli\u011finde \u00e7al\u0131\u015fan bir Semantic Kernel \u00f6rneklendirmesini inceleyebilirsiniz;<\/p>\n<ul>\n<li><em style=\"color:green;\">Ad\u0131m 1<\/em><br \/>\nUygulamaya <a href=\"https:\/\/www.nuget.org\/packages\/Microsoft.SemanticKernel\" target=\"_blank\"><code style=\"font-size:12px;\">Install-Package Microsoft.SemanticKernel<\/code><\/a> paketini y\u00fckleyiniz.<\/li>\n<li><em style=\"color:green;\">Ad\u0131m 2<\/em><br \/>\nDeepSeek R1, LLaMA, Phi vs. gibi open source olan LLM&#8217;lerle yerel olarak etkile\u015fim kurabilmemize olanak tan\u0131yan Ollama platformunu <a href=\"https:\/\/ollama.com\/download\" target=\"_blank\">\u015furadan<\/a> indirip bilgisayar\u0131n\u0131za kurunuz.<\/li>\n<li><em style=\"color:green;\">Ad\u0131m 3<\/em><br \/>\nHerhangi bir terminal&#8217;dan <code>ollama run deepseek-r1<\/code> talimat\u0131yla DeepSeek R1 modelini y\u00fckleyiniz.<\/p>\n<blockquote><p>DeepSeek, OpenAI-o1 ile kar\u015f\u0131la\u015ft\u0131r\u0131labilir performansa sahip birinci nesil bir modeldir.<\/p><\/blockquote>\n<p><a href=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2025\/02\/Semantic-Kernel-Nedir-.NET-Acisindan-Derinlemesine-Degerlendirelim.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2025\/02\/Semantic-Kernel-Nedir-.NET-Acisindan-Derinlemesine-Degerlendirelim.png\" alt=\"Semantic Kernel Nedir (.NET A\u00e7\u0131s\u0131ndan Derinlemesine De\u011ferlendirelim)\" width=\"388\" height=\"73\" class=\"aligncenter size-full wp-image-27553\" srcset=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2025\/02\/Semantic-Kernel-Nedir-.NET-Acisindan-Derinlemesine-Degerlendirelim.png 388w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2025\/02\/Semantic-Kernel-Nedir-.NET-Acisindan-Derinlemesine-Degerlendirelim-300x56.png 300w\" sizes=\"auto, (max-width: 388px) 100vw, 388px\" \/><\/a>\u0130\u015flem tamamland\u0131ktan sonra <code>ollama list<\/code> talimat\u0131yla modelin kullan\u0131labilir oldu\u011funu do\u011frulayabilirsiniz.\n<\/li>\n<li><em style=\"color:green;\">Ad\u0131m 4<\/em><br \/>\nSemantic Kernel&#8217;i a\u015fa\u011f\u0131daki gibi yap\u0131land\u0131r\u0131n\u0131z;<\/p>\n<p><em>Console Application<\/em>;<\/p>\n<div style=\"font-size:12px;\">\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\nusing Microsoft.SemanticKernel;\r\n\r\nvar builder = Kernel.CreateBuilder();\r\n\r\nvar kernel = builder.Build();\r\n<\/pre>\n<\/div>\n<p><em>Asp.NET Core Application<\/em>;<\/p>\n<div style=\"font-size:12px;\">\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\nvar builder = WebApplication.CreateBuilder(args);\r\nbuilder.Services.AddKernel();\r\n\r\nvar app = builder.Build();\r\n<\/pre>\n<\/div>\n<p>Ve ard\u0131ndan DeepSeek R1&#8217;i Semantic Kernel&#8217;a entegre edebilmek i\u00e7in<br \/>\n<a href=\"https:\/\/www.nuget.org\/packages\/Codeblaze.SemanticKernel.Connectors.Ollama\" target=\"_blank\"><code style=\"font-size:12px;\">Install-Package Codeblaze.SemanticKernel.Connectors.Ollama<\/code><\/a> k\u00fct\u00fcphanesini y\u00fcklemeli ve a\u015fa\u011f\u0131daki gibi entegrasyon i\u015flemlerini ger\u00e7ekle\u015ftirmelisiniz;<\/p>\n<p><em>Console Application<\/em>;<\/p>\n<div style=\"font-size:12px;\">\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\nusing Codeblaze.SemanticKernel.Connectors.Ollama;\r\nusing Microsoft.SemanticKernel;\r\nusing Microsoft.Extensions.DependencyInjection;\r\n\r\nvar builder = Kernel.CreateBuilder()\r\n                    .AddOllamaChatCompletion(&quot;deepseek-r1:latest&quot;, &quot;http:\/\/localhost:11434&quot;);\r\n\r\nbuilder.Services.AddScoped&lt;HttpClient&gt;();\r\n\r\nvar kernel = builder.Build();\r\n\r\nwhile (true)\r\n{\r\n    Console.WriteLine(&quot;Soru sor :&quot;);\r\n    string input = Console.ReadLine();\r\n    var response = await kernel.InvokePromptAsync(input);\r\n    Console.WriteLine($&quot;Cevap :\\n------------------------\\n{response}\\n------------------------&quot;);\r\n}\r\n<\/pre>\n<\/div>\n<p><em>Asp.NET Core Application<\/em>;<\/p>\n<div style=\"font-size:12px;\">\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\nusing Codeblaze.SemanticKernel.Connectors.Ollama;\r\nusing Level1.Essentials.ViewModels;\r\nusing Microsoft.SemanticKernel.ChatCompletion;\r\n\r\nvar builder = WebApplication.CreateBuilder(args);\r\nbuilder.Services.AddKernel()\r\n                .AddOllamaChatCompletion(&quot;deepseek-r1&quot;, &quot;http:\/\/localhost:11434&quot;);\r\n\r\nbuilder.Services.AddRequestTimeouts();\r\nbuilder.Services.AddHttpClient();\r\n\r\nvar app = builder.Build();\r\n\r\napp.UseRequestTimeouts();\r\n\r\napp.MapPost(&quot;\/chat&quot;, async (IChatCompletionService chatCompletionService, ChatModel chatModel) =&gt;\r\n{\r\n    var response = await chatCompletionService.GetChatMessageContentAsync(chatModel.Input);\r\n    return response.ToString();\r\n}).WithRequestTimeout(TimeSpan.FromMinutes(10));\r\n\r\napp.Run();\r\n<\/pre>\n<\/div>\n<\/li>\n<li><em style=\"color:green;\">Ad\u0131m 5<\/em><br \/>\nVe son olarak yap\u0131lan \u00e7al\u0131\u015fmalar\u0131 derleyip, \u00e7al\u0131\u015ft\u0131r\u0131n\u0131z ve test ediniz.<br \/>\n<div id=\"attachment_27555\" style=\"width: 1621px\" class=\"wp-caption aligncenter\"><a href=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2025\/02\/Semantic-Kernel-Nedir-DeepSeek-R1-Esliginde-.NET-Acisindan-Derinlemesine-Degerlendirelim.png\"><img loading=\"lazy\" decoding=\"async\" aria-describedby=\"caption-attachment-27555\" src=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2025\/02\/Semantic-Kernel-Nedir-DeepSeek-R1-Esliginde-.NET-Acisindan-Derinlemesine-Degerlendirelim.png\" alt=\"Semantic Kernel Nedir? (DeepSeek R1 E\u015fli\u011finde .NET A\u00e7\u0131s\u0131ndan Derinlemesine De\u011ferlendirelim)\" width=\"1611\" height=\"611\" class=\"size-full wp-image-27555\" srcset=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2025\/02\/Semantic-Kernel-Nedir-DeepSeek-R1-Esliginde-.NET-Acisindan-Derinlemesine-Degerlendirelim.png 1611w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2025\/02\/Semantic-Kernel-Nedir-DeepSeek-R1-Esliginde-.NET-Acisindan-Derinlemesine-Degerlendirelim-300x114.png 300w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2025\/02\/Semantic-Kernel-Nedir-DeepSeek-R1-Esliginde-.NET-Acisindan-Derinlemesine-Degerlendirelim-1024x388.png 1024w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2025\/02\/Semantic-Kernel-Nedir-DeepSeek-R1-Esliginde-.NET-Acisindan-Derinlemesine-Degerlendirelim-768x291.png 768w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2025\/02\/Semantic-Kernel-Nedir-DeepSeek-R1-Esliginde-.NET-Acisindan-Derinlemesine-Degerlendirelim-1536x583.png 1536w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2025\/02\/Semantic-Kernel-Nedir-DeepSeek-R1-Esliginde-.NET-Acisindan-Derinlemesine-Degerlendirelim-1320x500.png 1320w\" sizes=\"auto, (max-width: 1611px) 100vw, 1611px\" \/><\/a><p id=\"caption-attachment-27555\" class=\"wp-caption-text\">\u0130yi k\u00f6t\u00fc sorulan soruya bi\u015feyler anlatarak cevap vermi\u015f \ud83d\ude42<\/p><\/div>\n<\/li>\n<\/ul>\n<p>Evet, g\u00f6r\u00fcld\u00fc\u011f\u00fc \u00fczere .NET platformunda Semantic Kernel&#8217;\u0131 kullanmak bu kadar basit&#8230; \u015eimdi gelin .NET a\u00e7\u0131s\u0131ndan olaya biraz daha hakimiyet sa\u011flayabilmek i\u00e7in teknik detaylara dalmaya ba\u015flayal\u0131m&#8230;<\/p>\n<h5>Prompt \u015eablonlar\u0131n\u0131n(Templates) Kullan\u0131m\u0131<\/h5>\n<p>Semantic Kernel&#8217;daki promt \u015fablonlar\u0131, Do\u011fal Dil \u0130\u015fleme (NLP) ile yapay zeka modellerini kullanarak dinamik prompt&#8217;lar olu\u015fturmak i\u00e7in kullan\u0131lan bir yap\u0131d\u0131r. Bunlar, belirli bir ba\u011flam veya girdiye g\u00f6re \u00f6zelle\u015ftirilebilen \u015fablonlard\u0131r. Yap\u0131sal olarak yer tutucular(placeholders) ve parametreler e\u015fli\u011finde \u00e7al\u0131\u015fmaktad\u0131rlar.<\/p>\n<p>Misal olarak a\u015fa\u011f\u0131da basit bir \u015fablon yap\u0131s\u0131n\u0131 inceleyebilirsiniz;<\/p>\n<div style=\"text-align:center;font-size:12px;color:red;\">Yandaki i\u015flemi hesapla:: <span style=\"color:green;\">{{$input}}<\/span><\/div>\n<p>Burada <em><span style=\"color:green;\">{{$input}}<\/span><\/em> ifadesi placeholder&#8217;a kar\u015f\u0131l\u0131k gelirken, parametre ise kullan\u0131c\u0131 ya da sistem taraf\u0131ndan sa\u011flanan ger\u00e7ek de\u011fere kar\u015f\u0131l\u0131k gelmektedir.<\/p>\n<p>E\u011fer bu \u015fablonu Semantic Kernal&#8217;da kullanmak isterseniz a\u015fa\u011f\u0131daki gibi bir \u00e7al\u0131\u015fma yapabilirsiniz;<\/p>\n<div style=\"font-size:12px;\">\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\nvar builder = Kernel.CreateBuilder()\r\n                    .AddOllamaChatCompletion(&quot;deepseek-r1:latest&quot;, &quot;http:\/\/localhost:11434&quot;);\r\n\r\nbuilder.Services.AddScoped&lt;HttpClient&gt;();\r\n\r\nvar kernel = builder.Build();\r\n\r\nvar promptTemplate = &quot;Yandaki i\u015flemi hesapla: {{$input}}&quot;;\r\nvar function = kernel.CreateFunctionFromPrompt(promptTemplate);\r\nvar arguments = new KernelArguments { &#x5B;&quot;input&quot;] = &quot;1 + 2 + 5 * 3&quot; };\r\nvar result = await function.InvokeAsync(kernel, arguments);\r\nConsole.WriteLine(result);\r\n<\/pre>\n<\/div>\n<blockquote><p><em>Prompt \u015fablonlar\u0131, daha ak\u0131ll\u0131 ve daha uyarlanabilir uygulamalar olu\u015fturman\u0131n basit ve g\u00fc\u00e7l\u00fc bir yoludur.<\/em><\/p><\/blockquote>\n<h5>History Objesi \u0130le Ge\u00e7mi\u015f Ba\u011flam\u0131n Hat\u0131rlanmas\u0131<\/h5>\n<p>Semantic Kernel&#8217;da History objesi, bir konu\u015fman\u0131n ge\u00e7mi\u015fini saklamak ve modelin \u00f6nceki mesajlara g\u00f6re daha ba\u011flamsal yan\u0131tlar vermesini sa\u011flamak i\u00e7in kullan\u0131lmaktad\u0131r. Bu yetenek, \u00f6zellikle <em>chat-based AI<\/em> uygulamalar\u0131nda ge\u00e7mi\u015f konu\u015fmalar\u0131 takip etmek i\u00e7in \u00f6nemlidir. Yap\u0131sal olarak memory mekanizmas\u0131yla birlikte \u00e7al\u0131\u015fmakta ve kullan\u0131c\u0131n\u0131n \u00f6nceki mesajlar\u0131n\u0131 saklamaktad\u0131r. Bunun i\u00e7in <code>SemanticKernal.Chat<\/code> veya <code>SemanticKernel.Memory<\/code> gibi bile\u015fenlerden yararlanmaktad\u0131r.<\/p>\n<p>Kullan\u0131m mant\u0131\u011f\u0131 olduk\u00e7a basittir. History nesnesi olu\u015fturulmal\u0131 ve \u00f6nceki mesajlar bu nesnede depolanmal\u0131d\u0131r. Ve kullan\u0131c\u0131lardan yeni mesajlar geldik\u00e7e bu nesne g\u00fcncellenmeli ve bir yandan da model kullan\u0131l\u0131rken de bu obje ba\u011flamsal veri olarak de\u011ferlendirilmelidir. Bunu daha iyi anlayabilmek i\u00e7in a\u015fa\u011f\u0131daki \u00f6rnek kullan\u0131m\u0131 inceleyebilirsiniz;<\/p>\n<div style=\"font-size:12px;\">\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\nusing Codeblaze.SemanticKernel.Connectors.Ollama;\r\nusing Microsoft.Extensions.DependencyInjection;\r\nusing Microsoft.SemanticKernel;\r\nusing Microsoft.SemanticKernel.ChatCompletion;\r\n\r\nvar builder = Kernel.CreateBuilder()\r\n                    .AddOllamaChatCompletion(&quot;deepseek-r1:latest&quot;, &quot;http:\/\/localhost:11434&quot;);\r\n\r\nbuilder.Services.AddScoped&lt;HttpClient&gt;();\r\n\r\nvar kernel = builder.Build();\r\n\r\nvar history = new ChatHistory();\r\n\/\/\u0130lk mesaj eklenmektedir.\r\nhistory.AddUserMessage(&quot;Merhaba! Bu g\u00fcn hava nas\u0131l?&quot;);\r\n\r\n\/\/Model \u00e7a\u011fr\u0131s\u0131 yap\u0131lmaktad\u0131r.\r\nvar chatCompletionService = kernel.GetRequiredService&lt;IChatCompletionService&gt;();\r\nvar response = await chatCompletionService.GetChatMessageContentAsync(history);\r\n\r\n\/\/Response history'e eklenmektedir.\r\nhistory.AddAssistantMessage(response.ToString());\r\n\r\n\/\/Ayn\u0131 \u015fekilde yeni mesajda history'e eklenerek devam edilir.\r\nhistory.AddUserMessage(&quot;Peki, hafta sonu i\u00e7in hava tahmini nedir?&quot;);\r\nvar response2 = await chatCompletionService.GetChatMessageContentAsync(history);\r\nhistory.AddAssistantMessage(response2.ToString());\r\n\r\nConsole.WriteLine(response2.ToString());\r\n\r\nConsole.Read();\r\n<\/pre>\n<\/div>\n<p>Burada dikkat ederseniz farkl\u0131 mesaj t\u00fcrlerini tutabilecek bir \u00f6zelli\u011fe sahip olan <code>ChatHistory<\/code> nesnesinden istifade edilmektedir. Bu mesaj t\u00fcrlerini ele al\u0131rsak e\u011fer;<\/p>\n<ul>\n<li><strong><em>System Messages<\/em><\/strong><br \/>\nModelin davran\u0131\u015f\u0131n\u0131 y\u00f6nlendirmek i\u00e7in kullan\u0131lan mesajlard\u0131r. Yani modelin bir rol oynamas\u0131n\u0131 ve belirli kurallar \u00e7er\u00e7evesinde \u00e7al\u0131\u015fmas\u0131n\u0131 sa\u011flamak i\u00e7in kullan\u0131l\u0131rlar. Haliyle bu mesajlar genellikle kullan\u0131c\u0131lardan al\u0131nmaz ya da g\u00f6sterilmezler!\n<\/li>\n<li><strong><em>User Messages<\/em><\/strong><br \/>\nKullan\u0131c\u0131lar\u0131n yazd\u0131\u011f\u0131 mesajlard\u0131r. Model, bu mesajlara kar\u015f\u0131n yan\u0131t \u00fcretmekten sorumludur.\n<\/li>\n<li><strong><em>Assistant Messages<\/em><\/strong><br \/>\nYapay zeka modelinin verdi\u011fi yan\u0131tlard\u0131r.\n<\/li>\n<\/ul>\n<blockquote><p><em>History nesnesi, sohbet tabanl\u0131 uygulamalarda yahut konu\u015fma ge\u00e7mi\u015fine dayal\u0131 ak\u0131ll\u0131 yan\u0131t sistemlerinde b\u00fcy\u00fck kolayl\u0131k sa\u011flamaktad\u0131r&#8230;<\/em><\/p><\/blockquote>\n<p>Ayr\u0131ca <code>ChatMessage<\/code> nesnesinde sohbet ge\u00e7mi\u015fine dair daha fazla ayr\u0131nt\u0131y\u0131 a\u015fa\u011f\u0131daki gibi ekleyebilirsiniz;<\/p>\n<div style=\"font-size:12px;\">\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\nhistory.Add(new ChatMessageContent()\r\n{\r\n    Role = AuthorRole.User,\r\n    AuthorName = &quot;Gen\u00e7ay Y\u0131ld\u0131z&quot;,\r\n    Items = &#x5B;\r\n        new TextContent{ Text = &quot;Metin I\u015f\u0131\u011f\u0131n en \u00e7ok hangi \u015fark\u0131s\u0131 sevilmektedir?&quot; },\r\n        new ImageContent { Uri = new Uri(&quot;https:\/\/i.ytimg.com\/vi\/xx_FwxOGBa8\/maxresdefault.jpg&quot;) }\r\n        ]\r\n});\r\n<\/pre>\n<\/div>\n<p>G\u00f6r\u00fcld\u00fc\u011f\u00fc \u00fczere kullan\u0131c\u0131 adlar\u0131, resim i\u00e7eri\u011fi gibi ek bilgilerle sohbet ge\u00e7mi\u015fi daha da derinle\u015ftirilebilmektedir&#8230;<\/p>\n<h5>Eklenti (Plugin) Yap\u0131lanmas\u0131<\/h5>\n<p>Semantic Kernel&#8217;da, eklentiler ile uygulamalara \u00f6zel i\u015flevleri i\u00e7eren, Semantic Kernel&#8217;a entegre edilebilen ve do\u011fal dil komutlar\u0131yla \u00e7a\u011fr\u0131labilen mod\u00fcler kod par\u00e7ac\u0131klar\u0131 olu\u015fturulabilmektedir. Misal olarak, e\u011fer uygulaman\u0131zda belirli bir hesaplama yapmak, veritaban\u0131 i\u015flemleri ger\u00e7ekle\u015ftirmek veya ba\u015fka \u00f6zel i\u015f mant\u0131klar\u0131n\u0131 uygulamak isterseniz, bu i\u015flevleri bir plugin i\u00e7inde toplayarak Semantic Kernel&#8217;a ekleyebilirsiniz.<\/p>\n<p>B\u00f6ylece uygulaman\u0131z\u0131n gereksinimlerine g\u00f6re \u00f6zel i\u015flemleri mod\u00fcler bir \u015fekilde organize edebilir; okunabilirli\u011fi, test edilebilirli\u011fi ve bak\u0131m\u0131 olduk\u00e7a kolay bir kod in\u015fas\u0131nda bulunabilirsiniz. Ayr\u0131ca, ihtiya\u00e7 duyulan yeni i\u015flevleri mevcut Semantic Kernel yeteneklerine entegre ederek uygulaman\u0131z\u0131 daha esnek ve geni\u015fletilebilir hale getirebilirsiniz.<\/p>\n<p>A\u015fa\u011f\u0131da, basit bir \u00f6rnek \u00fczerinden eklenti olu\u015fturma, kernel&#8217;a ekleme ve kullanma ad\u0131mlar\u0131n\u0131 inceleyebilirsiniz;<\/p>\n<div style=\"font-size:12px;\">\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n    public class CalculatorPlugin\r\n    {\r\n        &#x5B;KernelFunction(&quot;add&quot;)]\r\n        &#x5B;Description(&quot;\u0130ki say\u0131sal de\u011fer \u00fczerinde toplama i\u015flemi ger\u00e7ekle\u015ftirir.&quot;)]\r\n        &#x5B;return: Description(&quot;Toplam de\u011feri d\u00f6nd\u00fcr\u00fcr.&quot;)]\r\n        public int Add(int number1, int number2)\r\n            =&gt; number1 + number2;\r\n    }\r\n<\/pre>\n<\/div>\n<p>Yukar\u0131da g\u00f6r\u00fcld\u00fc\u011f\u00fc \u00fczere, uygulamaya \u00f6zg\u00fc fonksiyonlar\u0131 i\u00e7eren bir s\u0131n\u0131f olu\u015fturulmu\u015ftur. \u0130\u015fte bu s\u0131n\u0131f bizler i\u00e7in bir plugin niteli\u011fi ta\u015f\u0131maktad\u0131r. S\u0131n\u0131f i\u00e7erisindeki <code>Add<\/code> metodu bu eklentinin niteliklerinden birisidir ve g\u00f6r\u00fcld\u00fc\u011f\u00fc \u00fczere baz\u0131 attribute&#8217;lar taraf\u0131ndan i\u015faretlenmi\u015ftir. Bu attribute&#8217;lardan <code>KernelFunction<\/code>, i\u015faretledi\u011fi metodu Semantic Kernel&#8217;\u0131n tan\u0131yabilece\u011fi bir kernel fonksiyon olarak nitelendirmemizi sa\u011flar. B\u00f6ylece SK, bu fonksiyonu, parantez i\u00e7erisinde belirtilen benzersiz isimle e\u015fleyerek \u00e7al\u0131\u015ft\u0131r\u0131r. <code>Description<\/code> ve <code>return: Description<\/code> attribute&#8217;lar\u0131n\u0131n ise ne olduklar\u0131 zahiren a\u015fikard\u0131r. Biri metodun i\u015flevini tan\u0131t\u0131rken, di\u011feri ise geri d\u00f6n\u00fc\u015f de\u011ferini tan\u0131tmaktad\u0131r.<\/p>\n<p>Velhas\u0131l, olu\u015fturulan bu plugin&#8217;i SK&#8217;ya a\u015fa\u011f\u0131daki gibi import edebilirsiniz;<\/p>\n<p><em>Console Application<\/em>;<\/p>\n<div style=\"font-size:12px;\">\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\nvar builder = Kernel.CreateBuilder()\r\n                    .AddOllamaChatCompletion(&quot;deepseek-r1:latest&quot;, &quot;http:\/\/localhost:11434&quot;);\r\n\r\nbuilder.Services.AddScoped&lt;HttpClient&gt;();\r\n\r\nvar kernel = builder.Build();\r\n\r\nkernel.Plugins.AddFromType&lt;CalculatorPlugin&gt;();\r\n.\r\n.\r\n.\r\n<\/pre>\n<\/div>\n<p><em>Asp.NET Core Application<\/em>;<\/p>\n<div style=\"font-size:12px;\">\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\nvar builder = WebApplication.CreateBuilder(args);\r\nbuilder.Services.AddKernel()\r\n                .AddOllamaChatCompletion(&quot;deepseek-r1&quot;, &quot;http:\/\/localhost:11434&quot;)\r\n                .Plugins.AddFromType&lt;CalculatorPlugin&gt;();\r\n.\r\n.\r\n.\r\n<\/pre>\n<\/div>\n<p>Ve ekledikten sonra da a\u015fa\u011f\u0131daki gibi plugin&#8217;i kullanabilirsiniz;<\/p>\n<p><em>Console Application<\/em>;<\/p>\n<div style=\"font-size:12px;\">\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n.\r\n.\r\n.\r\nvar arguments = new KernelArguments\r\n{\r\n    &#x5B;&quot;number1&quot;] = 3,\r\n    &#x5B;&quot;number2&quot;] = 5\r\n};\r\n\r\nvar addResult = await kernel.InvokeAsync(&quot;CalculatorPlugin&quot;, &quot;add&quot;, arguments);\r\nConsole.WriteLine($&quot;Sonu\u00e7 : {addResult}&quot;);\r\n<\/pre>\n<\/div>\n<p><em>Asp.NET Core Application<\/em>;<\/p>\n<div style=\"font-size:12px;\">\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n.\r\n.\r\n.\r\napp.MapGet(&quot;\/add\/{number1}\/{number2}&quot;, async (Kernel kernel, int number1, int number2) =&gt;\r\n{\r\n    var arguments = new KernelArguments\r\n    {\r\n        &#x5B;&quot;number1&quot;] = number1,\r\n        &#x5B;&quot;number2&quot;] = number2\r\n    };\r\n    var addResult = await kernel.InvokeAsync(&quot;CalculatorPlugin&quot;, &quot;add&quot;, arguments);\r\n    return addResult.GetValue&lt;int&gt;();\r\n}).WithRequestTimeout(TimeSpan.FromMinutes(10));\r\n<\/pre>\n<\/div>\n<h6 style=\"color:red;text-align:center;\">Prompt \u0130\u00e7eri\u011fine G\u00f6re Eklentinin AI Taraf\u0131ndan Otomatik \u00c7a\u011fr\u0131lmas\u0131<\/h6>\n<p>Tabi isterseniz, bu eklenti fonksiyonlar\u0131n\u0131 otomatik olarak da \u00e7a\u011f\u0131rtabilir ve uygulaman\u0131n kullan\u0131c\u0131 girdilerine daha ak\u0131ll\u0131ca yan\u0131tlar vermesini sa\u011flayabilirsiniz. Yani, belirli eylemlere kar\u015f\u0131n a\u00e7\u0131k komutlar\u0131 tetiklemekten ziyade, kullan\u0131c\u0131n\u0131n iste\u011fine g\u00f6re AI taraf\u0131ndan \u00e7a\u011fr\u0131lacak uygun eklentiler devreye sokulabilir ve b\u00f6ylece daha do\u011fal bir etkile\u015fim durumu s\u00f6z konusu olabilir. Ve bir yandan da irademizce yap\u0131lan fonksiyon \u00e7a\u011fr\u0131mlar\u0131n\u0131n azalt\u0131lmas\u0131n\u0131 sa\u011flayarak, sanki kesin talimat verircesine yap\u0131lan davran\u0131\u015flar yerine, kullan\u0131c\u0131 deneyimlerinin daha organik bir \u015fekilde geli\u015ftirilebilmesini sa\u011flayabilirsiniz.<\/p>\n<div style=\"font-size:12px;\">\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n.\r\n.\r\n.\r\nvar chatCompletionService = kernel.GetRequiredService&lt;IChatCompletionService&gt;();\r\nvar result = await chatCompletionService.GetChatMessageContentAsync(\r\n    &quot;\u00fc\u00e7 ve be\u015f'in toplam\u0131n\u0131 hesapla&quot;,\r\n    executionSettings: new PromptExecutionSettings\r\n    {\r\n        FunctionChoiceBehavior = FunctionChoiceBehavior.Auto()\r\n    },\r\n    kernel: kernel\r\n    );\r\n\r\n\r\nConsole.WriteLine(result.ToString());\r\n<\/pre>\n<\/div>\n<p>Tabi burada dikkat edilmesi gereken husus \u015fudur ki; Semantic Kernel&#8217;da prompt i\u00e7eri\u011fine g\u00f6re fonksiyon \u00e7a\u011f\u0131rabilmek i\u00e7in kullan\u0131lan dil modelinin (LLM) dahili olarak Function Calling \u00f6zelli\u011fini desteklemesi gerekmektedir. E\u011fer ki sizler de bu i\u00e7erikte oldu\u011fu gibi Ollama \u00fczerinden \u00e7al\u0131\u015fma ger\u00e7ekle\u015ftiriyorsan\u0131z bu \u00f6zelli\u011fin desteklenmedi\u011fini g\u00f6receksiniz. Bu davran\u0131\u015f\u0131n \u015fu anda ancak OpenAI yahut Azure OpenAI taraf\u0131ndan desteklenmekte oldu\u011funu s\u00f6ylemekte fayda g\u00f6rmekteyim.<\/p>\n<h5>Fonksiyonlar\u0131n Yap\u0131land\u0131rma Se\u00e7enekleri<\/h5>\n<p>Kullan\u0131lan AI modelinin \u00e7al\u0131\u015fmas\u0131 s\u0131ras\u0131nda taraf\u0131m\u0131zca olu\u015fturulan plugin&#8217;lere nas\u0131l eri\u015fece\u011fini ve bunlar\u0131n s\u00fcrecin hangi a\u015famas\u0131nda devreye girece\u011fini yap\u0131land\u0131rabilir ve ince dokunu\u015flarla kontrolde bulunabilirsiniz. \u00d6zellikle ger\u00e7ek zamanl\u0131 verilere ihtiya\u00e7 oldu\u011funda d\u0131\u015f bir API&#8217;ye istek g\u00f6nderilmesi gerekti\u011finde plugin&#8217;leri kullanabilir veya gizlilik ya da g\u00fcvenlik i\u00e7in i\u015flevselli\u011fi k\u0131s\u0131tlama gibi belirli durumlarda AI&#8217;\u0131n yan\u0131tlar\u0131n\u0131 kendinize g\u00f6re uyarlayabilirsiniz. B\u00f6ylece davran\u0131\u015flar\u0131 stratejik olarak y\u00f6netebilir, uygulaman\u0131z\u0131n performans\u0131n\u0131 optimize edebilirsiniz.<\/p>\n<p>Uygulamada olu\u015fturup dahil etti\u011finiz t\u00fcm eklentiler, varsay\u0131lan olarak kullan\u0131labilir vaziyettedirler. Sizler, istedi\u011finizin kullan\u0131m\u0131n\u0131 s\u0131n\u0131rlayabilir ya da komple devre d\u0131\u015f\u0131 b\u0131rakabilirsiniz.<\/p>\n<p>A\u015fa\u011f\u0131daki gibi bir \u00e7al\u0131\u015fma neticesinde s\u00fcrece eklenmi\u015f fonksiyonlardan herhangi biri veya birileri, AI modeline gelen prompt neticesinde otomatik olarak devreye sokularak, cevab\u0131 \u015fekillendirebilirler;<\/p>\n<div style=\"font-size:12px;\">\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\nvar builder = Kernel.CreateBuilder()\r\n                    .AddOllamaChatCompletion(&quot;deepseek-r1:latest&quot;, &quot;http:\/\/localhost:11434&quot;);\r\n\r\nbuilder.Services.AddScoped&lt;HttpClient&gt;();\r\n\r\nvar kernel = builder.Build();\r\n\r\nkernel.Plugins.AddFromType&lt;APlugin&gt;();\r\nkernel.Plugins.AddFromType&lt;BPlugin&gt;();\r\nkernel.Plugins.AddFromType&lt;CPlugin&gt;();\r\n\r\nPromptExecutionSettings promptExecutionSettings = new()\r\n{\r\n    FunctionChoiceBehavior = FunctionChoiceBehavior.Auto()\r\n};\r\n\r\nawait kernel.InvokePromptAsync(&quot;...&quot;, new(promptExecutionSettings));\r\n<\/pre>\n<\/div>\n<p>Ya da eklenmi\u015f fonksiyonlardan s\u00fcrece otomatik olarak dahil olacak olanlar\u0131 a\u015fa\u011f\u0131daki gibi se\u00e7ebilirsiniz ve b\u00f6ylece modelin kullanaca\u011f\u0131 eklentileri s\u0131n\u0131rland\u0131rabilirsiniz;<\/p>\n<div style=\"font-size:12px;\">\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n.\r\n.\r\n.\r\nPromptExecutionSettings promptExecutionSettings = new()\r\n{\r\n    FunctionChoiceBehavior = FunctionChoiceBehavior.Auto(functions: &#x5B;\r\n        kernel.Plugins.GetFunction(nameof(APlugin), &quot;a&quot;),\r\n        kernel.Plugins.GetFunction(nameof(CPlugin), &quot;c&quot;)\r\n        ])\r\n};\r\n<\/pre>\n<\/div>\n<p>Veya modelin plugin tabanl\u0131 davran\u0131\u015f\u0131n\u0131 a\u015fa\u011f\u0131daki gibi komple engelleyebilirsiniz;<\/p>\n<div style=\"font-size:12px;\">\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n.\r\n.\r\n.\r\nPromptExecutionSettings promptExecutionSettings = new()\r\n{\r\n    FunctionChoiceBehavior = FunctionChoiceBehavior.Auto(functions: &#x5B;])\r\n};\r\n<\/pre>\n<\/div>\n<p>Bunlar\u0131n d\u0131\u015f\u0131nda a\u015fa\u011f\u0131daki gibi kullan\u0131lan AI modeli en az bir plugin&#8217;i se\u00e7meye de zorlanabilir;<\/p>\n<div style=\"font-size:12px;\">\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n.\r\n.\r\n.\r\nPromptExecutionSettings promptExecutionSettings = new()\r\n{\r\n    FunctionChoiceBehavior = FunctionChoiceBehavior.Required()\r\n};\r\n<\/pre>\n<\/div>\n<p>Ya da a\u015fa\u011f\u0131daki gibi t\u00fcm plugin&#8217;ler iptalde edilebilir;<\/p>\n<div style=\"font-size:12px;\">\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n.\r\n.\r\n.\r\nPromptExecutionSettings promptExecutionSettings = new()\r\n{\r\n    FunctionChoiceBehavior = FunctionChoiceBehavior.None()\r\n};\r\n<\/pre>\n<\/div>\n<h5>Filtre (Filters) Yap\u0131land\u0131rmas\u0131<\/h5>\n<p>Semantic Kernel&#8217;da filtreler, AI modeline g\u00f6nderilen prompt&#8217;lar\u0131n \u00e7\u00f6z\u00fcmlenmesi s\u00fcrecinde kullan\u0131c\u0131 izinlerinden tutun loglamaya kadar bir\u00e7ok eylemin s\u0131ral\u0131 bir \u015fekilde ger\u00e7ekle\u015ftirilmesini sa\u011flayan yap\u0131lard\u0131r.<\/p>\n<p>Bu minvalde Semantic Kernel, kontrol\u00fc ve \u00f6zelle\u015ftirmeyi geli\u015ftirmek i\u00e7in a\u015fa\u011f\u0131daki gibi \u00fc\u00e7 t\u00fcr filtre yap\u0131s\u0131 sunmaktad\u0131r;<\/p>\n<ul>\n<li><em><strong>Function Invocation Filters<\/strong><\/em><br \/>\nBir fonksiyonun her y\u00fcr\u00fct\u00fclme\/i\u015flenme s\u00fcrecinde tetiklenecek olan filter&#8217;d\u0131r. B\u00f6ylece ilgili fonksiyonla ilgili meta verilere eri\u015fim \u015fans\u0131 do\u011facak hem de ilgili fonksiyon y\u00fcr\u00fct\u00fclmeden \u00f6nce ve sonra log atma imkan\u0131 s\u00f6z konusu olacakt\u0131r.<\/p>\n<div style=\"font-size:12px;\">\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n    public sealed class LoggingFilter : IFunctionInvocationFilter\r\n    {\r\n        public async Task OnFunctionInvocationAsync(FunctionInvocationContext context, Func&lt;FunctionInvocationContext, Task&gt; next)\r\n        {\r\n            Console.WriteLine($&quot;\u00c7al\u0131\u015ft\u0131r\u0131l\u0131yor = Eklenti Ad\u0131 : {context.Function.PluginName} | Fonksiyon Ad\u0131 : {context.Function.Name}&quot;);\r\n            await next(context);\r\n            Console.WriteLine($&quot;\u00c7al\u0131\u015ft\u0131r\u0131ld\u0131 = Eklenti Ad\u0131 : {context.Function.PluginName} | Fonksiyon Ad\u0131 : {context.Function.Name}&quot;);\r\n        }\r\n    }\r\n<\/pre>\n<\/div>\n<\/li>\n<li><em><strong>Prompt Render Filters<\/strong><\/em><br \/>\nPrompt olu\u015fturma s\u0131ras\u0131nda tetiklenen ve prompt&#8217;lar\u0131n nas\u0131l bi\u00e7imlendirilece\u011fi ve AI&#8217;ya nas\u0131l g\u00f6nderilece\u011fi \u00fczerinde kontrol f\u0131rsat\u0131 sa\u011flayan filter&#8217;d\u0131r. \u00d6zellikle hassas bilgiler i\u00e7in prompt&#8217;u de\u011fi\u015ftirme\/d\u00fczenleme veya semantic caching&#8217;i etkinle\u015ftirme gibi g\u00f6revler i\u00e7in olduk\u00e7a ideal f\u0131rsatlar sa\u011flamaktad\u0131r.<\/p>\n<p>Misal olarak a\u015fa\u011f\u0131daki gibi bir prompt render filter olu\u015fturabilir;<\/p>\n<div style=\"font-size:12px;\">\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n    public sealed class SafePromptFilter : IPromptRenderFilter\r\n    {\r\n        public async Task OnPromptRenderAsync(PromptRenderContext context, Func&lt;PromptRenderContext, Task&gt; next)\r\n        {\r\n            await next(context);\r\n            context.RenderedPrompt = &quot;3 + 5 sonucu ka\u00e7t\u0131r?&quot;;\r\n        }\r\n    }\r\n<\/pre>\n<\/div>\n<p>ve bu filter&#8217;\u0131 kullanarak a\u015fa\u011f\u0131daki gibi gelen prompt&#8217;lar\u0131 manip\u00fcle edebilirsiniz;<\/p>\n<div style=\"font-size:12px;\">\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n.\r\n.\r\n.\r\nvar result = await kernel.InvokePromptAsync(&quot;dokuz'un ikiye b\u00f6l\u00fcm\u00fcnden kalan ka\u00e7t\u0131r?&quot;);\r\nConsole.WriteLine(result.ToString());\r\n<\/pre>\n<\/div>\n<p><a href=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2025\/02\/Semantic-Kernel-Nedir-.NET-Acisindan-Derinlemesine-Degerlendirelim-1.png\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2025\/02\/Semantic-Kernel-Nedir-.NET-Acisindan-Derinlemesine-Degerlendirelim-1.png\" alt=\"Semantic Kernel Nedir (.NET A\u00e7\u0131s\u0131ndan Derinlemesine De\u011ferlendirelim)\" width=\"910\" height=\"255\" class=\"aligncenter size-full wp-image-27564\" srcset=\"https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2025\/02\/Semantic-Kernel-Nedir-.NET-Acisindan-Derinlemesine-Degerlendirelim-1.png 910w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2025\/02\/Semantic-Kernel-Nedir-.NET-Acisindan-Derinlemesine-Degerlendirelim-1-300x84.png 300w, https:\/\/www.gencayyildiz.com\/blog\/wp-content\/uploads\/2025\/02\/Semantic-Kernel-Nedir-.NET-Acisindan-Derinlemesine-Degerlendirelim-1-768x215.png 768w\" sizes=\"auto, (max-width: 910px) 100vw, 910px\" \/><\/a>\n<\/li>\n<li><em><strong>Auto Function Invocation Filters<\/strong><\/em><br \/>\nBu filter&#8217;da yaln\u0131zca otomatik fonksiyon \u00e7a\u011f\u0131rma i\u015flemi s\u0131ras\u0131nda tetiklenmektedir. Genellikle ara sonu\u00e7lara g\u00f6re i\u015f ak\u0131\u015flar\u0131n\u0131 ayarlamak ya da mevcut s\u00fcreci sonland\u0131rmak i\u00e7in kullan\u0131lmaktad\u0131r;<\/p>\n<div style=\"font-size:12px;\">\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\n    public sealed class EarlyTerminationFilter : IAutoFunctionInvocationFilter\r\n    {\r\n        public async Task OnAutoFunctionInvocationAsync(AutoFunctionInvocationContext context, Func&lt;AutoFunctionInvocationContext, Task&gt; next)\r\n        {\r\n            await next(context);\r\n\r\n            var result = context.Result.GetValue&lt;string&gt;();\r\n            if (result == &quot;desired result&quot;)\r\n            {\r\n                context.Terminate = true;\r\n            }\r\n        }\r\n    }\r\n<\/pre>\n<\/div>\n<\/li>\n<\/ul>\n<p>Evet, filter&#8217;lar bunlardan ibarettir. Tabi hangi filter&#8217;\u0131 kullan\u0131yorsan\u0131z kullan\u0131n uygulamaya implemente etmeniz gerekmektedir. Bunun i\u00e7in a\u015fa\u011f\u0131daki iki y\u00f6ntemden birini kullanabilirsiniz;<br \/>\n<em>Dependency Injection<\/em>;<\/p>\n<div style=\"font-size:12px;\">\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\nbuilder.Services.AddSingleton&lt;IFunctionInvocationFilter, LoggingFilter&gt;();\r\nbuilder.Services.AddSingleton&lt;IPromptRenderFilter, SafePromptFilter&gt;();\r\nbuilder.Services.AddSingleton&lt;IAutoFunctionInvocationFilter, EarlyTerminationFilter&gt;();\r\n<\/pre>\n<\/div>\n<p><em>Kernel Properties<\/em>;<\/p>\n<div style=\"font-size:12px;\">\n<pre class=\"brush: jscript; title: ; notranslate\" title=\"\">\r\nkernel.FunctionInvocationFilters.Add(new LoggingFilter());\r\nkernel.PromptRenderFilters.Add(new SafePromptFilter());\r\nkernel.AutoFunctionInvocationFilters.Add(new EarlyTerminationFilter());\r\n<\/pre>\n<\/div>\n<p>\u0130\u015fte bu kadar&#8230;<br \/>\nTabi daha fazla detayla Semantic Kernel&#8217;\u0131n k\u0131lcal damarlar\u0131na temas edebilirdik. Ancak bundan gayr\u0131s\u0131 i\u00e7eri\u011fi haddinden fazla \u015fi\u015firmeye ve siz de\u011ferli okuyucular\u0131n \u015firazesine kayd\u0131rmak i\u00e7in kas\u0131ta girecektir. Ben i\u00e7eri\u011fi burada nihayetlendirip bundan sonras\u0131n\u0131 sizlerin ihtiya\u00e7 ve meram\u0131na b\u0131rakmay\u0131 uygun g\u00f6rmekteyim&#8230;<\/p>\n<p>Bir ka\u00e7 kelam e\u015fli\u011finde nihai dokunu\u015f yaparsak e\u011fer;<br \/>\nAnlayaca\u011f\u0131n\u0131z Semantic Kernel, .NET d\u00fcnyas\u0131nda yapay zeka fonksiyonlar\u0131 geli\u015ftirmeyi ve b\u00fcy\u00fck dil modellerini uzman sistemlerde, soru-cevap s\u00fcre\u00e7lerinde yahut i\u00e7erik olu\u015fturma gibi senaryolarda verimli bir \u015fekilde kullanmay\u0131 kolayla\u015ft\u0131ran kaliteli ve olduk\u00e7a yetenekli bir k\u00fct\u00fcphanedir. SK sayesinde uygulama geli\u015ftiricileri, LLM \u00e7a\u011fr\u0131lar\u0131n\u0131 karma\u015f\u0131k hale getiren pek \u00e7ok detay\u0131 soyutlayarak daha temiz ve mod\u00fcler kod yazabilmekte ve prompt y\u00f6netiminden bellek i\u015fleyi\u015fine, eklenti konseptinden API entegrasyonuna kadar geni\u015f bir yelpazede SK&#8217;n\u0131n \u00f6zelliklerinden istifade edebilmektedir.<\/p>\n<p>\u0130lgilenenlerin faydalanmas\u0131 dile\u011fiyle&#8230;<br \/>\nSonraki yaz\u0131lar\u0131mda g\u00f6r\u00fc\u015fmek \u00fczere&#8230;<br \/>\n\u0130yi \u00e7al\u0131\u015fmalar&#8230;<\/p>\n<p>Not : \u00d6rnek \u00e7al\u0131\u015fmaya a\u015fa\u011f\u0131daki github adresinden eri\u015febilirsiniz.<br \/>\n<a href=\"https:\/\/github.com\/gncyyldz\/Semantic.Kernel.Example\" target=\"_blank\">https:\/\/github.com\/gncyyldz\/Semantic.Kernel.Example<\/a><\/p>\n<!-- AddThis Advanced Settings generic via filter on the_content --><!-- AddThis Share Buttons generic via filter on the_content -->","protected":false},"excerpt":{"rendered":"<p>Merhaba, Bu i\u00e7eri\u011fimizde Microsoft taraf\u0131ndan .NET ekosisteminde Yapay Zek\u00e2 (AI) uygulamalar\u0131n\u0131 geli\u015ftirmemizi kolayla\u015ft\u0131rmak amac\u0131yla sunulan Semantic Kernel k\u00fct\u00fcphanesini hem teorik hem de pratik bir \u015fekilde derinlemesine inceliyor olaca\u011f\u0131z. O halde buyurun hi\u00e7 vakit kaybetmeksizin&#46;&#46;&#46;<!-- AddThis Advanced Settings generic via filter on get_the_excerpt --><!-- AddThis Share Buttons generic via filter on get_the_excerpt --><\/p>\n","protected":false},"author":1,"featured_media":27566,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[5222,5220],"tags":[5228,5223,5226,5227,5221,5230,5229,5225,5224],"class_list":["post-27549","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-llm","category-yapay-zeka-ai","tag-history","tag-llm","tag-ollama","tag-prompt-templates","tag-semantic-kernel","tag-semantic-kernel-filters","tag-semantic-kernel-history","tag-yapay-zeka","tag-yapay-zeka-ai"],"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts\/27549","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/comments?post=27549"}],"version-history":[{"count":14,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts\/27549\/revisions"}],"predecessor-version":[{"id":27572,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/posts\/27549\/revisions\/27572"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/media\/27566"}],"wp:attachment":[{"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/media?parent=27549"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/categories?post=27549"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.gencayyildiz.com\/blog\/wp-json\/wp\/v2\/tags?post=27549"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}