{"id":31077,"date":"2025-10-05T12:32:02","date_gmt":"2025-10-05T09:32:02","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/llm-saglayicilarinda-yapilandirilmis-cikti-karsilastirmasi\/"},"modified":"2025-10-05T12:32:02","modified_gmt":"2025-10-05T09:32:02","slug":"llm-saglayicilarinda-yapilandirilmis-cikti-karsilastirmasi","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/llm-saglayicilarinda-yapilandirilmis-cikti-karsilastirmasi\/","title":{"rendered":"LLM Sa\u011flay\u0131c\u0131lar\u0131nda Yap\u0131land\u0131r\u0131lm\u0131\u015f \u00c7\u0131kt\u0131 Kar\u015f\u0131la\u015ft\u0131rmas\u0131"},"content":{"rendered":"<p><body><\/p>\n<p>G\u00fcn\u00fcm\u00fcz b\u00fcy\u00fck dil modellerinden (LLM) beklenenler, sadece ak\u0131c\u0131 metinler \u00fcretmekle s\u0131n\u0131rl\u0131 de\u011fil. Art\u0131k bu g\u00fc\u00e7l\u00fc yapay zekalar\u0131n, uygulamalar\u0131m\u0131zla kusursuzca entegre olabilmesi i\u00e7in belirli bir formatta, yani yap\u0131land\u0131r\u0131lm\u0131\u015f \u00e7\u0131kt\u0131lar sunmas\u0131 kritik bir gereklilik haline geldi. Peki, OpenAI, Google Gemini, Anthropic Claude, Mistral AI ve AWS Bedrock gibi \u00f6nde gelen sa\u011flay\u0131c\u0131lar bu konuda hangi yetenekleri sunuyor ve biz geli\u015ftiriciler en uygun \u00e7\u00f6z\u00fcm\u00fc nas\u0131l se\u00e7meliyiz? Bu makalede, farkl\u0131 LLM sa\u011flay\u0131c\u0131lar\u0131n\u0131n yap\u0131land\u0131r\u0131lm\u0131\u015f \u00e7\u0131kt\u0131 y\u00f6ntemlerini derinlemesine inceleyecek, pratik \u00f6rneklerle kar\u015f\u0131la\u015ft\u0131racak ve ger\u00e7ek d\u00fcnya senaryolar\u0131nda nas\u0131l kullanabilece\u011fimizi ad\u0131m ad\u0131m ke\u015ffedece\u011fiz. Haz\u0131rsan\u0131z, bu heyecan verici yolculu\u011fa \u00e7\u0131kal\u0131m!<\/p>\n<p>B\u00fcy\u00fck Dil Modelleri (LLM&#8217;ler), son y\u0131llar\u0131n en d\u00f6n\u00fc\u015ft\u00fcr\u00fcc\u00fc teknolojilerinden biri olarak hayat\u0131m\u0131za girdi. Do\u011fal dili anlama, \u00fcretme ve i\u015fleme konusundaki inan\u0131lmaz yetenekleri sayesinde, sohbet botlar\u0131ndan i\u00e7erik olu\u015fturmaya, kod yazmaktan veri analizine kadar geni\u015f bir yelpazede devrim niteli\u011finde uygulamalara imza att\u0131lar. Ancak, LLM&#8217;lerin sundu\u011fu bu esnekli\u011fin bir de madalyonun di\u011fer y\u00fcz\u00fc var: ham, serbest metin format\u0131ndaki \u00e7\u0131kt\u0131lar, her zaman programatik t\u00fcketim i\u00e7in uygun olmayabilir. Bir LLM&#8217;den ald\u0131\u011f\u0131n\u0131z yan\u0131t\u0131 ba\u015fka bir sisteme, \u00f6rne\u011fin bir veritaban\u0131na, bir API&#8217;ye veya bir kullan\u0131c\u0131 aray\u00fcz\u00fcne aktarmak istedi\u011finizde, bu metni \u00f6nce anlaml\u0131 ve i\u015flenebilir bir yap\u0131ya d\u00f6n\u00fc\u015ft\u00fcrmeniz gerekir. \u0130\u015fte tam bu noktada \u201cyap\u0131land\u0131r\u0131lm\u0131\u015f \u00e7\u0131kt\u0131\u201d kavram\u0131 devreye giriyor.<\/p>\n<p>Bir d\u00fc\u015f\u00fcn\u00fcn: Bir e-ticaret siteniz var ve \u00fcr\u00fcn a\u00e7\u0131klamalar\u0131n\u0131 otomatik olarak olu\u015fturmak i\u00e7in bir LLM kullan\u0131yorsunuz. A\u00e7\u0131klamalar harika, ama ayn\u0131 zamanda \u00fcr\u00fcn\u00fcn fiyat\u0131n\u0131, stok kodunu, kategorisini ve \u00f6zelliklerini de belirli bir JSON format\u0131nda almak istiyorsunuz ki bunlar\u0131 do\u011frudan \u00fcr\u00fcn veritaban\u0131n\u0131za i\u015fleyebilesiniz. Ya da bir m\u00fc\u015fteri destek botu geli\u015ftiriyorsunuz. M\u00fc\u015fterinin sorusunu anlayan LLM, sadece yan\u0131t vermekle kalmay\u0131p, ayn\u0131 zamanda sorunun t\u00fcr\u00fcn\u00fc (\u00f6rne\u011fin, \u201ciade\u201d, \u201cteknik destek\u201d, \u201csipari\u015f takibi\u201d) ve ilgili sipari\u015f numaras\u0131n\u0131 da yap\u0131land\u0131r\u0131lm\u0131\u015f bir veri olarak d\u00f6nd\u00fcrmeli. B\u00f6ylece bu veriyi do\u011frudan ilgili departmana y\u00f6nlendirebilir veya otomatik bir s\u00fcre\u00e7 ba\u015flatabilirsiniz. Bu t\u00fcr senaryolarda, LLM&#8217;in rastgele bir metin yerine, \u00f6nceden tan\u0131mlanm\u0131\u015f bir \u015femaya (\u00f6rne\u011fin, JSON Schema) uygun, kolayca ayr\u0131\u015ft\u0131r\u0131labilir ve kullan\u0131labilir bir \u00e7\u0131kt\u0131 \u00fcretmesi hayati \u00f6nem ta\u015f\u0131r. Aksi takdirde, \u00e7\u0131kt\u0131y\u0131 manuel olarak veya karma\u015f\u0131k d\u00fczenli ifadelerle (regex) ayr\u0131\u015ft\u0131rmak zorunda kal\u0131rs\u0131n\u0131z ki bu hem hata e\u011filimli hem de bak\u0131m\u0131 zor bir y\u00f6ntemdir.<\/p>\n<p>Yap\u0131land\u0131r\u0131lm\u0131\u015f \u00e7\u0131kt\u0131lar, LLM&#8217;lerin sadece metin tabanl\u0131 etkile\u015fimlerin \u00f6tesine ge\u00e7erek, ger\u00e7ek d\u00fcnya uygulamalar\u0131n\u0131n vazge\u00e7ilmez bir par\u00e7as\u0131 olmas\u0131n\u0131 sa\u011flar. Bu sayede LLM&#8217;ler, veri \u00e7\u0131karma, otomasyon, API entegrasyonu, form doldurma ve i\u015f ak\u0131\u015f\u0131 y\u00f6netimi gibi bir\u00e7ok alanda g\u00fc\u00e7l\u00fc birer ara\u00e7 haline gelir. Bu makale boyunca, pop\u00fcler LLM sa\u011flay\u0131c\u0131lar\u0131n\u0131n bu kritik ihtiyac\u0131 nas\u0131l kar\u015f\u0131lad\u0131\u011f\u0131n\u0131, hangi mekanizmalar\u0131 sunduklar\u0131n\u0131 ve her birinin avantajlar\u0131n\u0131, dezavantajlar\u0131n\u0131 ve kullan\u0131m senaryolar\u0131n\u0131 detayl\u0131 bir \u015fekilde ele alaca\u011f\u0131z. Amac\u0131m\u0131z, geli\u015ftiricilere ve karar vericilere, projeleri i\u00e7in en uygun yap\u0131land\u0131r\u0131lm\u0131\u015f \u00e7\u0131kt\u0131 yakla\u015f\u0131m\u0131n\u0131 se\u00e7melerinde rehberlik etmektir. \u00d6yleyse, yap\u0131land\u0131r\u0131lm\u0131\u015f \u00e7\u0131kt\u0131n\u0131n temel kavramlar\u0131n\u0131 daha yak\u0131ndan inceleyelim.<\/p>\n<h2 id=\"yapilandirilmis-cikti-nedir-llm-temel-kavramlari\">Yap\u0131land\u0131r\u0131lm\u0131\u015f \u00c7\u0131kt\u0131 Nedir ve LLM&#8217;lerdeki Temel Kavramlar\u0131 Nelerdir?<\/h2>\n<p>Yap\u0131land\u0131r\u0131lm\u0131\u015f \u00e7\u0131kt\u0131, bir B\u00fcy\u00fck Dil Modelinden (LLM) bekledi\u011fimiz bilginin, serbest metin yerine \u00f6nceden tan\u0131mlanm\u0131\u015f, makine taraf\u0131ndan kolayca ayr\u0131\u015ft\u0131r\u0131labilir bir formatta sunulmas\u0131 anlam\u0131na gelir. En yayg\u0131n yap\u0131land\u0131r\u0131lm\u0131\u015f \u00e7\u0131kt\u0131 formatlar\u0131 aras\u0131nda JSON (JavaScript Object Notation), XML (Extensible Markup Language) ve bazen YAML (YAML Ain&#8217;t Markup Language) bulunur. Bu formatlar, verileri anahtar-de\u011fer \u00e7iftleri, listeler veya hiyerar\u015fik yap\u0131lar \u015feklinde d\u00fczenleyerek, programatik eri\u015fimi ve manip\u00fclasyonu son derece kolayla\u015ft\u0131r\u0131r.<\/p>\n<p>LLM ba\u011flam\u0131nda yap\u0131land\u0131r\u0131lm\u0131\u015f \u00e7\u0131kt\u0131 elde etmek i\u00e7in birka\u00e7 temel kavram ve mekanizma \u00f6ne \u00e7\u0131kar:<\/p>\n<ul>\n<li><strong>Prompt M\u00fchendisli\u011fi (Prompt Engineering):<\/strong> En temel d\u00fczeyde, LLM&#8217;den belirli bir formatta \u00e7\u0131kt\u0131 almas\u0131n\u0131 istemek i\u00e7in prompt&#8217;unuzu dikkatlice tasarlars\u0131n\u0131z. \u00d6rne\u011fin, &#8220;A\u015fa\u011f\u0131daki metindeki ki\u015fileri ve ya\u015flar\u0131n\u0131 bir JSON listesi olarak d\u00f6nd\u00fcr.&#8221; gibi y\u00f6nergeler kullanabilirsiniz. Ancak bu y\u00f6ntem, LLM&#8217;nin her zaman do\u011fru format\u0131 garantilemedi\u011fi durumlarda hata e\u011filimli olabilir. LLM, beklenen JSON format\u0131n\u0131 bazen bozabilir, ekstra metin ekleyebilir veya eksik alanlar b\u0131rakabilir.<\/li>\n<li><strong>\u015eema Tan\u0131mlamas\u0131 (Schema Definition) ve Do\u011frulama (Validation):<\/strong> G\u00fcvenilir yap\u0131land\u0131r\u0131lm\u0131\u015f \u00e7\u0131kt\u0131 alman\u0131n anahtarlar\u0131ndan biri, LLM&#8217;ye \u00e7\u0131kt\u0131n\u0131n beklenen yap\u0131s\u0131n\u0131 a\u00e7\u0131k\u00e7a bildirmektir. Bu genellikle JSON Schema gibi standartlarla yap\u0131l\u0131r. JSON Schema, bir JSON belgesinin yap\u0131s\u0131n\u0131 (hangi alanlar\u0131n olmas\u0131 gerekti\u011fi, veri t\u00fcrleri, minimum\/maksimum de\u011ferler vb.) tan\u0131mlayan g\u00fc\u00e7l\u00fc bir dil sunar. LLM API&#8217;leri, bu \u015femalar\u0131 do\u011frudan girdi olarak kabul edebilir ve \u00e7\u0131kt\u0131y\u0131 bu \u015femaya uygun hale getirmeye \u00e7al\u0131\u015f\u0131r. \u00c7\u0131kt\u0131 al\u0131nd\u0131ktan sonra, \u015fema do\u011frulay\u0131c\u0131lar kullan\u0131larak \u00e7\u0131kt\u0131n\u0131n beklenen formata uygun olup olmad\u0131\u011f\u0131 kontrol edilir.<\/li>\n<li><strong>Fonksiyon \u00c7a\u011fr\u0131lar\u0131 (Function Calling) veya Ara\u00e7 Kullan\u0131m\u0131 (Tool Use):<\/strong> OpenAI&#8217;nin \u00f6nc\u00fcl\u00fck etti\u011fi ve di\u011fer sa\u011flay\u0131c\u0131lar\u0131n da h\u0131zla benimsedi\u011fi bu \u00f6zellik, LLM&#8217;in do\u011fal dil anlay\u0131\u015f\u0131n\u0131, d\u0131\u015far\u0131daki bir fonksiyonu \u00e7a\u011f\u0131rmak i\u00e7in gerekli parametreleri yap\u0131land\u0131r\u0131lm\u0131\u015f bir \u015fekilde d\u00f6nd\u00fcrme yetene\u011fiyle birle\u015ftirir. Geli\u015ftirici olarak, LLM&#8217;ye hangi fonksiyonlar\u0131n mevcut oldu\u011funu (fonksiyon ad\u0131, a\u00e7\u0131klamas\u0131 ve bekledi\u011fi parametrelerin JSON Schema tan\u0131m\u0131 ile birlikte) anlat\u0131rs\u0131n\u0131z. LLM, bir kullan\u0131c\u0131n\u0131n iste\u011fini analiz etti\u011finde, e\u011fer bu iste\u011fin yerine getirilmesi i\u00e7in bir fonksiyon \u00e7a\u011fr\u0131lmas\u0131 gerekiyorsa, o fonksiyonun ad\u0131n\u0131 ve gerekli parametreleri JSON format\u0131nda d\u00f6nd\u00fcr\u00fcr. Bu, do\u011frudan bir yap\u0131land\u0131r\u0131lm\u0131\u015f \u00e7\u0131kt\u0131 talebi olmasa da, belirli bir eylemi tetiklemek i\u00e7in yap\u0131land\u0131r\u0131lm\u0131\u015f veri elde etmenin son derece g\u00fc\u00e7l\u00fc bir yoludur.<\/li>\n<li><strong>\u00d6zel \u00c7\u0131kt\u0131 Modlar\u0131 (Specific Output Modes):<\/strong> Baz\u0131 LLM sa\u011flay\u0131c\u0131lar\u0131, \u00f6zellikle JSON \u00e7\u0131kt\u0131s\u0131 i\u00e7in \u00f6zel modlar sunar. \u00d6rne\u011fin, OpenAI&#8217;nin <code>response_format={\"type\": \"json_object\"}<\/code> parametresi, modelin \u00e7\u0131kt\u0131y\u0131 her zaman ge\u00e7erli bir JSON objesi olarak \u00fcretmesini sa\u011flamaya \u00e7al\u0131\u015f\u0131r. Bu modlar, prompt m\u00fchendisli\u011finden daha g\u00fcvenilir bir y\u00f6ntem sunar \u00e7\u00fcnk\u00fc model, \u00e7\u0131kt\u0131y\u0131 bu formata uydurmak i\u00e7in daha fazla i\u00e7sel mekanizma kullan\u0131r.<\/li>\n<\/ul>\n<aside class=\"expert-tip\">\n        <strong>Uzman \u0130pucu:<\/strong> LLM&#8217;lerin do\u011fas\u0131 gere\u011fi nondeterministik oldu\u011funu unutmay\u0131n. Yani ayn\u0131 prompt&#8217;a her zaman ayn\u0131 \u00e7\u0131kt\u0131y\u0131 vermeyebilirler. Bu nedenle, yap\u0131land\u0131r\u0131lm\u0131\u015f \u00e7\u0131kt\u0131lar\u0131 her zaman bir do\u011frulama ad\u0131m\u0131yla kontrol etmek (\u00f6rne\u011fin, bir JSON ayr\u0131\u015ft\u0131r\u0131c\u0131s\u0131 kullanarak veya JSON Schema do\u011frulamas\u0131 yaparak) kritik \u00f6neme sahiptir. Hata i\u015fleme stratejileri geli\u015ftirmek, uygulaman\u0131z\u0131n dayan\u0131kl\u0131l\u0131\u011f\u0131n\u0131 art\u0131racakt\u0131r.<br \/>\n    <\/aside>\n<p>Bu temel kavramlar\u0131 anlad\u0131ktan sonra, art\u0131k pop\u00fcler LLM sa\u011flay\u0131c\u0131lar\u0131n\u0131n bu yetenekleri kendi API&#8217;lerinde nas\u0131l somutla\u015ft\u0131rd\u0131\u011f\u0131n\u0131 ve her birinin kendine \u00f6zg\u00fc yakla\u015f\u0131mlar\u0131n\u0131 nas\u0131l kulland\u0131\u011f\u0131n\u0131 detayl\u0131 bir \u015fekilde incelemeye haz\u0131r\u0131z. Bir sonraki b\u00f6l\u00fcmde, her bir sa\u011flay\u0131c\u0131n\u0131n sundu\u011fu yap\u0131land\u0131r\u0131lm\u0131\u015f \u00e7\u0131kt\u0131 mekanizmalar\u0131n\u0131 \u00f6rneklerle kar\u015f\u0131la\u015ft\u0131raca\u011f\u0131z.<\/p>\n<h2 id=\"llm-saglayicilarinda-yapilandirilmis-cikti-yontemleri-karsilastirmasi\">Pop\u00fcler LLM Sa\u011flay\u0131c\u0131lar\u0131nda Yap\u0131land\u0131r\u0131lm\u0131\u015f \u00c7\u0131kt\u0131 Y\u00f6ntemleri Nas\u0131l Kar\u015f\u0131la\u015ft\u0131r\u0131l\u0131r?<\/h2>\n<p>Farkl\u0131 B\u00fcy\u00fck Dil Modeli (LLM) sa\u011flay\u0131c\u0131lar\u0131, yap\u0131land\u0131r\u0131lm\u0131\u015f \u00e7\u0131kt\u0131 elde etmek i\u00e7in benzer ama kendine \u00f6zg\u00fc yakla\u015f\u0131mlar sunar. Bu b\u00f6l\u00fcmde, OpenAI, Google Gemini, Anthropic, Mistral ve AWS Bedrock gibi ba\u015fl\u0131ca platformlar\u0131n yap\u0131land\u0131r\u0131lm\u0131\u015f \u00e7\u0131kt\u0131 mekanizmalar\u0131n\u0131 ad\u0131m ad\u0131m inceleyecek ve her biri i\u00e7in pratik kod \u00f6rnekleri sunaca\u011f\u0131z.<\/p>\n<h3>OpenAI: Function Calling ve JSON Modu<\/h3>\n<p>OpenAI, yap\u0131land\u0131r\u0131lm\u0131\u015f \u00e7\u0131kt\u0131 konusunda sekt\u00f6rdeki en geli\u015fmi\u015f ve yayg\u0131n olarak benimsenen yakla\u015f\u0131mlardan birini sunar: Function Calling. Bu \u00f6zellik, modelin do\u011fal dil sorgular\u0131ndan bir veya daha fazla fonksiyon \u00e7a\u011fr\u0131s\u0131 d\u00f6nd\u00fcrmesini sa\u011flar. Geli\u015ftiriciler, LLM&#8217;ye mevcut ara\u00e7lar\u0131 ve bunlar\u0131n JSON Schema tan\u0131mlar\u0131n\u0131 sa\u011flarlar. Model, kullan\u0131c\u0131n\u0131n iste\u011fine g\u00f6re bu ara\u00e7lardan hangisinin \u00e7a\u011fr\u0131lmas\u0131 gerekti\u011fini ve hangi parametrelerle \u00e7a\u011fr\u0131lmas\u0131 gerekti\u011fini belirler.<\/p>\n<p>Ayr\u0131ca, OpenAI son zamanlarda sadece JSON \u00e7\u0131kt\u0131s\u0131 almak isteyen senaryolar i\u00e7in \u00f6zel bir JSON modunu da tan\u0131tt\u0131. Bu mod, modelin \u00e7\u0131kt\u0131y\u0131 her zaman ge\u00e7erli bir JSON nesnesi olarak d\u00f6nd\u00fcrmesini garanti etmeye \u00e7al\u0131\u015f\u0131r.<\/p>\n<h4>\u00d6rnek Senaryo: \u00dcr\u00fcn Bilgisi \u00c7\u0131karma (JSON Modu)<\/h4>\n<p>Bir \u00fcr\u00fcn a\u00e7\u0131klamas\u0131ndan \u00fcr\u00fcn ad\u0131n\u0131, fiyat\u0131n\u0131 ve kategorisini JSON format\u0131nda \u00e7\u0131karmak istedi\u011fimizi varsayal\u0131m.<\/p>\n<pre><code>\nfrom openai import OpenAI\nimport json\n\nclient = OpenAI(api_key=\"S\u0130Z\u0130N_OPENAI_ANAHTARINIZ\")\n\nproduct_description = \"\"\"\nHarika bir kablosuz kulakl\u0131k! 40 saate kadar pil \u00f6mr\u00fc, aktif g\u00fcr\u00fclt\u00fc engelleme ve su ge\u00e7irmezlik \u00f6zelli\u011fi ile sporcular i\u00e7in ideal. Fiyat\u0131 sadece \u20ba1999.\n\"\"\"\n\nresponse = client.chat.completions.create(\n    model=\"gpt-4o\", # veya gpt-3.5-turbo-0125\n    response_format={\"type\": \"json_object\"},\n    messages=[\n        {\"role\": \"system\", \"content\": \"Verilen \u00fcr\u00fcn a\u00e7\u0131klamas\u0131ndan \u00fcr\u00fcn ad\u0131n\u0131, fiyat\u0131n\u0131 ve kategorisini i\u00e7eren bir JSON nesnesi d\u00f6nd\u00fcr. Fiyat\u0131 say\u0131sal bir de\u011fer olarak formatla.\"},\n        {\"role\": \"user\", \"content\": f\"A\u00e7\u0131klama: {product_description}\"}\n    ]\n)\n\ntry:\n    product_info = json.loads(response.choices[0].message.content)\n    print(\"Yap\u0131land\u0131r\u0131lm\u0131\u015f \u00dcr\u00fcn Bilgisi:\")\n    print(json.dumps(product_info, indent=2, ensure_ascii=False))\nexcept json.JSONDecodeError as e:\n    print(f\"JSON Ayr\u0131\u015ft\u0131rma Hatas\u0131: {e}\")\n    print(f\"Ham \u00c7\u0131kt\u0131: {response.choices[0].message.content}\")\n    <\/pre>\n<p><\/code><\/p>\n<p>Bu \u00f6rnekte <code>response_format={\"type\": \"json_object\"}<\/code> parametresi, modelin ge\u00e7erli bir JSON \u00e7\u0131kt\u0131s\u0131 \u00fcretmesini zorlar. Ard\u0131ndan, d\u00f6nd\u00fcr\u00fclen metni <code>json.loads()<\/code> ile ayr\u0131\u015ft\u0131r\u0131r\u0131z.<\/p>\n<h3>Google Gemini: Function Calling ve \u015eema Tan\u0131mlamalar\u0131<\/h3>\n<p>Google Gemini modelleri de OpenAI'ye benzer bir \"Function Calling\" mekanizmas\u0131 sunar. Geli\u015ftiriciler, Python veya di\u011fer dillerdeki istemci k\u00fct\u00fcphaneleri arac\u0131l\u0131\u011f\u0131yla modellerine ara\u00e7lar (fonksiyonlar) tan\u0131mlayabilirler. Gemini, do\u011fal dil sorgular\u0131n\u0131 analiz ederek bu tan\u0131mlanm\u0131\u015f ara\u00e7lardan hangisinin \u00e7a\u011fr\u0131lmas\u0131 gerekti\u011fini ve hangi parametrelerle \u00e7a\u011fr\u0131lmas\u0131 gerekti\u011fini belirler.<\/p>\n<h4>\u00d6rnek Senaryo: M\u00fc\u015fteri Geri Bildirimi Kategorizasyonu<\/h4>\n<p>M\u00fc\u015fteri geri bildirimlerini kategorize eden bir fonksiyonumuz oldu\u011funu varsayal\u0131m. Gemini'den geri bildirim metninden uygun kategoriyi ve duygu durumunu \u00e7\u0131karmas\u0131n\u0131 isteyece\u011fiz.<\/p>\n<pre><code>\nimport google.generativeai as genai\nimport json\n\n# API anahtar\u0131n\u0131z\u0131 burada ayarlay\u0131n\ngenai.configure(api_key=\"S\u0130Z\u0130N_GOOGLE_GEMINI_ANAHTARINIZ\")\n\n# Modelinizi ba\u015flat\u0131n\nmodel = genai.GenerativeModel('gemini-pro')\n\ndef categorize_feedback(category: str, sentiment: str):\n    \"\"\"\n    M\u00fc\u015fteri geri bildirimini kategorize eder ve duygu durumunu belirler.\n    Args:\n        category (str): Geri bildirimin kategorisi (\u00f6r: 'teknik_destek', '\u00fcr\u00fcn_\u00f6nerisi', '\u015fikayet', 'genel_soru').\n        sentiment (str): Geri bildirimin duygu durumu (\u00f6r: 'olumlu', 'olumsuz', 'n\u00f6tr').\n    Returns:\n        dict: Kategorize edilmi\u015f geri bildirim.\n    \"\"\"\n    return {\"category\": category, \"sentiment\": sentiment}\n\n# Modeli ara\u00e7 ile yap\u0131land\u0131r\u0131n\ntools = [\n    {\n        \"function_declarations\": [\n            {\n                \"name\": \"categorize_feedback\",\n                \"description\": \"M\u00fc\u015fteri geri bildirimini kategorize eder ve duygu durumunu belirler.\",\n                \"parameters\": {\n                    \"type\": \"object\",\n                    \"properties\": {\n                        \"category\": {\"type\": \"string\", \"enum\": [\"teknik_destek\", \"\u00fcr\u00fcn_\u00f6nerisi\", \"\u015fikayet\", \"genel_soru\"]},\n                        \"sentiment\": {\"type\": \"string\", \"enum\": [\"olumlu\", \"olumsuz\", \"n\u00f6tr\"]},\n                    },\n                    \"required\": [\"category\", \"sentiment\"],\n                },\n            }\n        ]\n    }\n]\n\ncustomer_feedback = \"Yeni g\u00fcncellemeyle birlikte uygulama \u00e7ok yava\u015f \u00e7al\u0131\u015fmaya ba\u015flad\u0131. Bu kabul edilemez!\"\n\nresponse = model.generate_content(\n    f\"M\u00fc\u015fteri geri bildirimi: '{customer_feedback}'\\n\\nBu geri bildirimi kategorize et ve duygu durumunu belirle.\",\n    tools=tools\n)\n\n# Yan\u0131tta ara\u00e7 \u00e7a\u011fr\u0131s\u0131 olup olmad\u0131\u011f\u0131n\u0131 kontrol edin\nif response.candidates[0].content.parts[0].function_call:\n    function_call = response.candidates[0].content.parts[0].function_call\n    print(\"Gemini Fonksiyon \u00c7a\u011fr\u0131s\u0131:\")\n    print(f\"Fonksiyon Ad\u0131: {function_call.name}\")\n    print(f\"Parametreler: {json.dumps(function_call.args, indent=2, ensure_ascii=False)}\")\n    \n    # Ger\u00e7ek fonksiyon \u00e7a\u011fr\u0131s\u0131 burada yap\u0131labilirdi\n    # categorized_data = categorize_feedback(**function_call.args)\n    # print(f\"Kategorize Edilmi\u015f Veri: {categorized_data}\")\nelse:\n    print(\"Gemini ara\u00e7 \u00e7a\u011fr\u0131s\u0131 yapmad\u0131.\")\n    print(f\"Ham yan\u0131t: {response.candidates[0].content.parts[0].text}\")\n    <\/pre>\n<p><\/code><\/p>\n<p>Bu \u00f6rnekte, <code>categorize_feedback<\/code> fonksiyonunu ve parametrelerini Gemini'ye tan\u0131tt\u0131k. Model, m\u00fc\u015fteri geri bildirimini analiz ederek bu fonksiyonu \u00e7a\u011f\u0131rmak i\u00e7in gerekli parametreleri d\u00f6nd\u00fcrd\u00fc.<\/p>\n<h3>Anthropic (Claude): Ara\u00e7 Kullan\u0131m\u0131 (Tool Use) ve Geli\u015fmi\u015f Prompt M\u00fchendisli\u011fi<\/h3>\n<p>Anthropic'in Claude modelleri de benzer bir yetenek olan \"Tool Use\" (Ara\u00e7 Kullan\u0131m\u0131) mekanizmas\u0131 sunar. OpenAI ve Gemini'deki Function Calling'e benzer \u015fekilde, geli\u015ftiriciler Claude'a hangi ara\u00e7lar\u0131n mevcut oldu\u011funu ve bu ara\u00e7lar\u0131n nas\u0131l \u00e7a\u011fr\u0131laca\u011f\u0131n\u0131 a\u00e7\u0131klar. Claude, bu tan\u0131mlamalara dayanarak, do\u011fal dil isteklerini i\u015fleyebilir ve bir arac\u0131 \u00e7a\u011f\u0131rmak i\u00e7in gerekli parametreleri i\u00e7eren yap\u0131land\u0131r\u0131lm\u0131\u015f bir \u00e7\u0131kt\u0131 \u00fcretebilir.<\/p>\n<p>Anthropic'in yakla\u015f\u0131m\u0131, \u00f6zellikle XML etiketleri kullanarak fonksiyon ve parametre tan\u0131mlar\u0131n\u0131 modelin ba\u011flam\u0131na yerle\u015ftirmeye odaklan\u0131r. Bu, geli\u015fmi\u015f prompt m\u00fchendisli\u011fi ile birle\u015fti\u011finde olduk\u00e7a g\u00fc\u00e7l\u00fc sonu\u00e7lar verebilir.<\/p>\n<h4>\u00d6rnek Senaryo: Rapor \u00d6zeti ve Anahtar Bilgi \u00c7\u0131karma<\/h4>\n<p>Bir raporun \u00f6zetini ve rapordaki anahtar rakamlar\u0131 (\u00f6rne\u011fin, gelir, kar marj\u0131) yap\u0131land\u0131r\u0131lm\u0131\u015f bir \u015fekilde \u00e7\u0131karmak istedi\u011fimizi d\u00fc\u015f\u00fcnelim.<\/p>\n<pre><code>\nfrom anthropic import Anthropic\nimport json\n\nclient = Anthropic(api_key=\"S\u0130Z\u0130N_ANTHROPIC_ANAHTARINIZ\")\n\nreport_text = \"\"\"\n2023 y\u0131l\u0131 finansal raporumuz, \u015firketimizin rekor bir b\u00fcy\u00fcme kaydetti\u011fini g\u00f6stermektedir. Toplam gelirimiz 500 milyon dolara ula\u015ft\u0131, bu ge\u00e7en y\u0131la g\u00f6re %20'lik bir art\u0131\u015f anlam\u0131na geliyor. Net kar marj\u0131m\u0131z %15 seviyesinde ger\u00e7ekle\u015fti. Ar-Ge yat\u0131r\u0131mlar\u0131m\u0131z ise 50 milyon dolar\u0131 a\u015ft\u0131.\n\"\"\"\n\n# Claude'a fonksiyon tan\u0131m\u0131n\u0131 XML format\u0131nda veriyoruz\ntools_definition = \"\"\"\n<tool_code>\ndef extract_report_summary(summary: str, total_revenue: float, net_profit_margin: float, r_and_d_investment: float):\n    \\\"\\\"\\\"\n    Bir finansal raporun \u00f6zetini ve anahtar finansal rakamlar\u0131n\u0131 \u00e7\u0131kar\u0131r.\n    :param summary: Raporun k\u0131sa \u00f6zeti.\n    :param total_revenue: \u015eirketin toplam geliri (milyon dolar cinsinden).\n    :param net_profit_margin: \u015eirketin net kar marj\u0131 (y\u00fczde cinsinden).\n    :param r_and_d_investment: Ar-Ge yat\u0131r\u0131mlar\u0131 (milyon dolar cinsinden).\n    \\\"\\\"\\\"\n    pass\n<\/tool_code>\n\"\"\"\n\n# Prompt i\u00e7inde tool tan\u0131m\u0131n\u0131 ve iste\u011fi birle\u015ftiriyoruz\nprompt_template = f\"\"\"\n{tools_definition}\n{report_text}\n\nYukar\u0131daki finansal rapordan \u00f6nemli bilgileri <call:extract_report_summary> arac\u0131 ile \u00e7\u0131kar\u0131n ve bana JSON olarak d\u00f6nd\u00fcr\u00fcn. Raporun \u00f6zetini ve belirtilen finansal metrikleri toplay\u0131n.\n\"\"\"\n\nresponse = client.messages.create(\n    model=\"claude-3-opus-20240229\", # veya claude-3-sonnet-20240229\n    max_tokens=1000,\n    messages=[\n        {\"role\": \"user\", \"content\": prompt_template}\n    ]\n)\n\n# Tool use \u00e7\u0131kt\u0131s\u0131n\u0131 kontrol et\nif response.stop_reason == \"tool_use\":\n    tool_call = response.content[0]\n    if tool_call.type == \"tool_use\":\n        print(\"Anthropic Tool Use \u00c7a\u011fr\u0131s\u0131:\")\n        print(f\"Ara\u00e7 Ad\u0131: {tool_call.name}\")\n        print(f\"Parametreler: {json.dumps(tool_call.input, indent=2, ensure_ascii=False)}\")\n    else:\n        print(\"Beklenmedik tool use t\u00fcr\u00fc:\", tool_call.type)\nelse:\n    print(\"Anthropic Tool Use yapmad\u0131.\")\n    print(f\"Ham Yan\u0131t: {response.content[0].text}\")\n    <\/pre>\n<p><\/code><\/p>\n<p>Claude'da tool tan\u0131m\u0131 genellikle prompt'un bir par\u00e7as\u0131 olarak verilir ve model, bir arac\u0131 \u00e7a\u011f\u0131rmas\u0131 gerekti\u011finde <code><call:function_name><\/code> etiketleri i\u00e7inde yap\u0131land\u0131r\u0131lm\u0131\u015f bir \u00e7\u0131kt\u0131 d\u00f6nd\u00fcr\u00fcr.<\/p>\n<h3>Mistral AI: Tool Use ve JSON Mode<\/h3>\n<p>Mistral AI modelleri, \u00f6zellikle performans ve maliyet etkinli\u011fi a\u00e7\u0131s\u0131ndan pop\u00fclerlik kazanmaktad\u0131r. Onlar da benzer bir \"Tool Use\" veya \"Function Calling\" yetene\u011fi sunarlar. Mistral'\u0131n API'si, OpenAI'ye olduk\u00e7a benzer bir yap\u0131da olup, <code>tools<\/code> parametresi arac\u0131l\u0131\u011f\u0131yla fonksiyon tan\u0131mlamalar\u0131n\u0131 kabul eder. Ayr\u0131ca, t\u0131pk\u0131 OpenAI gibi, Mistral modelleri de belirli bir JSON format\u0131nda \u00e7\u0131kt\u0131 almak i\u00e7in \u00f6zel bir modu destekler.<\/p>\n<h4>\u00d6rnek Senaryo: Yap\u0131lacaklar Listesi Olu\u015fturma (JSON Modu)<\/h4>\n<p>Kullan\u0131c\u0131n\u0131n bir do\u011fal dil iste\u011finden bir yap\u0131lacaklar listesi (task, priority, deadline) \u00e7\u0131karmak istedi\u011fimizi d\u00fc\u015f\u00fcnelim.<\/p>\n<pre><code>\nfrom mistralai.client import MistralClient\nfrom mistralai.models.chat import ChatMessage\nimport json\n\nclient = MistralClient(api_key=\"S\u0130Z\u0130N_MISTRAL_ANAHTARINIZ\")\n\nuser_request = \"Yar\u0131n i\u00e7in market al\u0131\u015fveri\u015fi yapmal\u0131y\u0131m, en \u00f6nemli \u015fey. Gelecek hafta sonuna kadar proje raporunu bitir ve bir de arkada\u015f\u0131m\u0131 ara.\"\n\nmessages = [\n    ChatMessage(role=\"system\", content=\"Verilen iste\u011fi bir yap\u0131lacaklar listesine d\u00f6n\u00fc\u015ft\u00fcr. Her \u00f6\u011fe i\u00e7in 'task', 'priority' (y\u00fcksek, orta, d\u00fc\u015f\u00fck) ve 'deadline' (k\u0131sa, orta, uzun) alanlar\u0131n\u0131 i\u00e7eren bir JSON dizisi d\u00f6nd\u00fcr.\"),\n    ChatMessage(role=\"user\", content=user_request)\n]\n\n# JSON modunu kullanarak \u00e7\u0131kt\u0131y\u0131 JSON olarak istiyoruz\nresponse = client.chat(\n    model=\"mistral-large-latest\", # veya mistral-medium-latest\n    messages=messages,\n    response_format={\"type\": \"json_object\"}\n)\n\ntry:\n    todo_list = json.loads(response.choices[0].message.content)\n    print(\"Mistral Yap\u0131land\u0131r\u0131lm\u0131\u015f Yap\u0131lacaklar Listesi:\")\n    print(json.dumps(todo_list, indent=2, ensure_ascii=False))\nexcept json.JSONDecodeError as e:\n    print(f\"JSON Ayr\u0131\u015ft\u0131rma Hatas\u0131: {e}\")\n    print(f\"Ham \u00c7\u0131kt\u0131: {response.choices[0].message.content}\")\n    <\/pre>\n<p><\/code><\/p>\n<p>Mistral da OpenAI gibi <code>response_format={\"type\": \"json_object\"}<\/code> kullanarak \u00e7\u0131kt\u0131lar\u0131n ge\u00e7erli bir JSON nesnesi olmas\u0131n\u0131 sa\u011fl\u0131yor. Bu, \u00f6zellikle tam JSON \u00e7\u0131kt\u0131s\u0131 bekledi\u011finiz durumlarda \u00e7ok kullan\u0131\u015fl\u0131d\u0131r.<\/p>\n<h3>AWS Bedrock: Farkl\u0131 Modellerin Entegrasyonu ve Agents for Bedrock<\/h3>\n<p>AWS Bedrock, tek bir API arac\u0131l\u0131\u011f\u0131yla Amazon, Anthropic, AI21 Labs, Cohere, Meta ve Mistral gibi \u00f6nde gelen yapay zeka \u015firketlerinin \u00e7e\u015fitli B\u00fcy\u00fck Dil Modellerine eri\u015fim sa\u011flayan y\u00f6netilen bir hizmettir. Bu, Bedrock'u yap\u0131land\u0131r\u0131lm\u0131\u015f \u00e7\u0131kt\u0131 konusunda benzersiz k\u0131lar \u00e7\u00fcnk\u00fc kulland\u0131\u011f\u0131n\u0131z temel modele ba\u011fl\u0131 olarak farkl\u0131 yakla\u015f\u0131mlar benimsemeniz gerekebilir.<\/p>\n<p>Ancak Bedrock, bu modellerin \u00f6tesinde \"Agents for Bedrock\" ad\u0131nda g\u00fc\u00e7l\u00fc bir \u00f6zellik sunar. Agents for Bedrock, kullan\u0131c\u0131lar\u0131n do\u011fal dil isteklerini analiz edip, belirli g\u00f6revleri yerine getirmek i\u00e7in LLM'leri harici sistemlerle (API'ler, veritabanlar\u0131 vb.) entegre eden otomatikle\u015ftirilmi\u015f i\u015f ak\u0131\u015flar\u0131 olu\u015fturmas\u0131na olanak tan\u0131r. Bu, Function Calling mekanizmas\u0131n\u0131n daha \u00fcst d\u00fczey bir soyutlamas\u0131d\u0131r.<\/p>\n<h4>\u00d6rnek Senaryo: E-ticaret Sipari\u015f \u0130\u015fleme (Agents for Bedrock ile Fonksiyon Tan\u0131m\u0131)<\/h4>\n<p>Bir e-ticaret uygulamas\u0131nda, m\u00fc\u015fterinin do\u011fal dil iste\u011finden sipari\u015f bilgilerini \u00e7\u0131kar\u0131p bir sipari\u015f i\u015fleme API'sini \u00e7a\u011f\u0131rmak istedi\u011fimizi d\u00fc\u015f\u00fcnelim. Agents for Bedrock ile bu s\u00fcreci nas\u0131l yap\u0131land\u0131raca\u011f\u0131m\u0131z\u0131 basit\u00e7e tan\u0131mlayabiliriz. (Ger\u00e7ek bir Agent kurulumu daha karma\u015f\u0131k olsa da, konsepti vurgulayal\u0131m.)<\/p>\n<pre><code>\nimport boto3\nimport json\n\n# Bedrock client'\u0131n\u0131 ba\u015flat\u0131n\n# client = boto3.client(\n#     service_name=\"bedrock-runtime\",\n#     region_name=\"us-east-1\" # Kulland\u0131\u011f\u0131n\u0131z b\u00f6lgeye g\u00f6re de\u011fi\u015ftirin\n# )\n\n# Bu \u00f6rnek, bir Bedrock Agent'\u0131n\u0131n nas\u0131l bir \u00e7\u0131kt\u0131 verece\u011fini sim\u00fcle eder.\n# Ger\u00e7ek bir Agent'\u0131 kurmak AWS konsolunda veya boto3 ile karma\u015f\u0131k bir s\u00fcre\u00e7tir.\n\n# Bir fonksiyon tan\u0131m\u0131 (Agent'a sa\u011flanacak)\norder_processing_tool = {\n    \"name\": \"process_order\",\n    \"description\": \"Yeni bir e-ticaret sipari\u015fini i\u015flemek i\u00e7in kullan\u0131l\u0131r.\",\n    \"input_schema\": {\n        \"type\": \"object\",\n        \"properties\": {\n            \"customer_id\": {\"type\": \"string\", \"description\": \"M\u00fc\u015fterinin benzersiz ID'si.\"},\n            \"product_name\": {\"type\": \"string\", \"description\": \"Sipari\u015f edilen \u00fcr\u00fcn\u00fcn ad\u0131.\"},\n            \"quantity\": {\"type\": \"integer\", \"description\": \"Sipari\u015f edilen \u00fcr\u00fcn adedi.\"},\n            \"shipping_address\": {\"type\": \"string\", \"description\": \"Sipari\u015fin g\u00f6nderilece\u011fi adres.\"},\n        },\n        \"required\": [\"customer_id\", \"product_name\", \"quantity\", \"shipping_address\"]\n    }\n}\n\nuser_query = \"M\u00fc\u015fteri ID 12345 i\u00e7in 'Kablosuz Klavye'den 2 adet, '123 Ana Cadde, Ankara' adresine sipari\u015f olu\u015ftur.\"\n\n# Bir Bedrock Agent'\u0131ndan beklenen hipotetik \u00e7\u0131kt\u0131 format\u0131\n# Bu, agent'\u0131n bir arac\u0131 \u00e7a\u011f\u0131rmas\u0131 gerekti\u011finde d\u00f6nd\u00fcrece\u011fi format olacakt\u0131r.\nsimulated_agent_output = {\n    \"action_group\": \"OrderManagement\", # Agent i\u00e7inde tan\u0131ml\u0131 aksiyon grubu\n    \"function\": \"process_order\",\n    \"parameters\": {\n        \"customer_id\": \"12345\",\n        \"product_name\": \"Kablosuz Klavye\",\n        \"quantity\": 2,\n        \"shipping_address\": \"123 Ana Cadde, Ankara\"\n    }\n}\n\nprint(\"AWS Bedrock Agent (Sim\u00fcle Edilmi\u015f) Yap\u0131land\u0131r\u0131lm\u0131\u015f \u00c7\u0131kt\u0131s\u0131:\")\nprint(json.dumps(simulated_agent_output, indent=2, ensure_ascii=False))\n\n# Ger\u00e7ek kullan\u0131mda, bu \u00e7\u0131kt\u0131y\u0131 al\u0131p ilgili fonksiyona iletirdiniz.\n# response = client.invoke_agent(...)\n    <\/pre>\n<p><\/code><\/p>\n<p>Bedrock'ta, do\u011frudan model API'si \u00fczerinden Function Calling veya JSON modu kullanmak yerine (ki bu temel modele g\u00f6re de\u011fi\u015fir), genellikle Agents for Bedrock arac\u0131l\u0131\u011f\u0131yla daha karma\u015f\u0131k i\u015f ak\u0131\u015flar\u0131n\u0131 yap\u0131land\u0131r\u0131rs\u0131n\u0131z. Agent, kullan\u0131c\u0131n\u0131n iste\u011fini anlay\u0131p \u00f6nceden tan\u0131mlanm\u0131\u015f ara\u00e7lar\u0131 (fonksiyonlar\u0131) \u00e7a\u011f\u0131rmak i\u00e7in gereken yap\u0131land\u0131r\u0131lm\u0131\u015f veriyi d\u00f6nd\u00fcr\u00fcr.<\/p>\n<p>Bu kar\u015f\u0131la\u015ft\u0131rmal\u0131 b\u00f6l\u00fcmde, her bir sa\u011flay\u0131c\u0131n\u0131n yap\u0131land\u0131r\u0131lm\u0131\u015f \u00e7\u0131kt\u0131ya yakla\u015f\u0131m\u0131n\u0131 ve kod \u00f6rneklerini g\u00f6rd\u00fck. Her birinin kendi API tasar\u0131m\u0131 ve en iyi uygulamalar\u0131 olsa da, temel fikir benzerdir: modele beklenen \u00e7\u0131kt\u0131 yap\u0131s\u0131n\u0131 bildirmek ve modelin bu yap\u0131ya uymas\u0131n\u0131 sa\u011flamak. \u015eimdi ger\u00e7ek d\u00fcnya senaryolar\u0131nda bu tekniklerin nas\u0131l kullan\u0131ld\u0131\u011f\u0131na daha yak\u0131ndan bakal\u0131m.<\/p>\n<h2 id=\"gercek-dunya-senaryolarinda-yapilandirilmis-cikti-uygulamalari\">Ger\u00e7ek D\u00fcnya Senaryolar\u0131nda Yap\u0131land\u0131r\u0131lm\u0131\u015f \u00c7\u0131kt\u0131 Uygulamalar\u0131: Vaka Analizleri<\/h2>\n<p>Yap\u0131land\u0131r\u0131lm\u0131\u015f \u00e7\u0131kt\u0131lar, B\u00fcy\u00fck Dil Modellerini (LLM) soyut birer metin \u00fcreticisinden, i\u015f s\u00fcre\u00e7lerini otomatikle\u015ftiren ve verileri anlamland\u0131ran g\u00fc\u00e7l\u00fc ara\u00e7lara d\u00f6n\u00fc\u015ft\u00fcr\u00fcr. \u0130\u015fte baz\u0131 ger\u00e7ek d\u00fcnya senaryolar\u0131 ve yap\u0131land\u0131r\u0131lm\u0131\u015f \u00e7\u0131kt\u0131lar\u0131n bu alanlarda nas\u0131l fark yaratt\u0131\u011f\u0131na dair vaka analizleri.<\/p>\n<h3>1. E-ticaret \u00dcr\u00fcn Bilgisi \u00c7\u0131karma ve G\u00fcncelleme<\/h3>\n<p><strong>Problem:<\/strong> E-ticaret platformlar\u0131, milyonlarca \u00fcr\u00fcnle \u00e7al\u0131\u015f\u0131r ve her bir \u00fcr\u00fcn\u00fcn detayl\u0131 a\u00e7\u0131klamalar\u0131, fiyatlar\u0131, stok kodlar\u0131, kategorileri ve \u00f6zellikleri vard\u0131r. Tedarik\u00e7ilerden gelen ham \u00fcr\u00fcn metinleri veya kullan\u0131c\u0131 taraf\u0131ndan girilen a\u00e7\u0131klamalar, veritaban\u0131na i\u015flenmeden \u00f6nce bu yap\u0131land\u0131r\u0131lm\u0131\u015f alanlara ayr\u0131\u015ft\u0131r\u0131lmal\u0131d\u0131r. Manuel veri giri\u015fi zaman al\u0131c\u0131, hata e\u011filimli ve \u00f6l\u00e7eklenemez bir \u00e7\u00f6z\u00fcmd\u00fcr.<\/p>\n<p><strong>\u00c7\u00f6z\u00fcm:<\/strong> LLM'ler ve yap\u0131land\u0131r\u0131lm\u0131\u015f \u00e7\u0131kt\u0131 mekanizmalar\u0131 bu problemi etkin bir \u015fekilde \u00e7\u00f6zebilir. Bir LLM'e (\u00f6rne\u011fin, OpenAI'nin JSON modu veya Gemini'nin Function Calling'i) \u00fcr\u00fcn a\u00e7\u0131klamas\u0131n\u0131 veririz ve ondan belirli bir JSON \u015femas\u0131na uygun olarak \u00fcr\u00fcn ad\u0131, SKU, fiyat, kategori, mevcut stok durumu gibi bilgileri \u00e7\u0131karmas\u0131n\u0131 isteriz.<\/p>\n<pre><code>\n# OpenAI ile \u00fcr\u00fcn bilgisi \u00e7\u0131karma (daha \u00f6nceki \u00f6rnekten geli\u015ftirilmi\u015f hali)\nimport json\nfrom openai import OpenAI\n\nclient = OpenAI(api_key=\"S\u0130Z\u0130N_OPENAI_ANAHTARINIZ\")\n\nproduct_description_long = \"\"\"\nYepyeni \"Ultra Konfor\" Ak\u0131ll\u0131 Koltuk! Bu ergonomik koltuk, saatlerce s\u00fcren \u00e7al\u0131\u015fma veya oyun seanslar\u0131 i\u00e7in tasarland\u0131.\nDahili masaj \u00f6zelli\u011fi ve ayarlanabilir bel deste\u011fi ile maksimum konfor sunar.\nKuma\u015f rengi: Gri, Malzeme: Nefes alabilen file.\nStok Kodu: UK001GR.\nFiyat\u0131: 499.99 USD.\nKategori: Ofis Mobilyalar\u0131.\nGaranti: 2 Y\u0131l.\n\"\"\"\n\nresponse = client.chat.completions.create(\n    model=\"gpt-4o\",\n    response_format={\"type\": \"json_object\"},\n    messages=[\n        {\"role\": \"system\", \"content\": \"\"\"Verilen \u00fcr\u00fcn a\u00e7\u0131klamas\u0131ndan a\u015fa\u011f\u0131daki JSON \u015femas\u0131na uygun verileri \u00e7\u0131kar:\n        {\n          \"type\": \"object\",\n          \"properties\": {\n            \"product_name\": {\"type\": \"string\", \"description\": \"\u00dcr\u00fcn\u00fcn tam ad\u0131.\"},\n            \"sku\": {\"type\": \"string\", \"description\": \"\u00dcr\u00fcn\u00fcn stok kodu.\"},\n            \"price\": {\"type\": \"number\", \"description\": \"\u00dcr\u00fcn\u00fcn fiyat\u0131, say\u0131sal de\u011fer.\"},\n            \"currency\": {\"type\": \"string\", \"description\": \"Fiyat\u0131n para birimi.\"},\n            \"category\": {\"type\": \"string\", \"description\": \"\u00dcr\u00fcn\u00fcn ana kategorisi.\"},\n            \"features\": {\"type\": \"array\", \"items\": {\"type\": \"string\"}, \"description\": \"\u00dcr\u00fcn\u00fcn ana \u00f6zellikleri listesi.\"}\n          },\n          \"required\": [\"product_name\", \"sku\", \"price\", \"currency\", \"category\"]\n        }\n        \"\"\"},\n        {\"role\": \"user\", \"content\": f\"A\u00e7\u0131klama: {product_description_long}\"}\n    ]\n)\n\ntry:\n    product_data = json.loads(response.choices[0].message.content)\n    print(\"\u00c7\u0131kar\u0131lan \u00dcr\u00fcn Verileri:\")\n    print(json.dumps(product_data, indent=2, ensure_ascii=False))\n    # Bu veriyi do\u011frudan bir veritaban\u0131na veya ERP sistemine g\u00f6nderebilirsiniz\nexcept json.JSONDecodeError as e:\n    print(f\"JSON Ayr\u0131\u015ft\u0131rma Hatas\u0131: {e}\")\n    <\/pre>\n<p><\/code><\/p>\n<p>Bu yakla\u015f\u0131m, \u00fcr\u00fcn ekleme s\u00fcrecini h\u0131zland\u0131r\u0131r, insan hatas\u0131n\u0131 azalt\u0131r ve e-ticaret platformlar\u0131n\u0131n dinamik envanter y\u00f6netimini kolayla\u015ft\u0131r\u0131r.<\/p>\n<h3>2. M\u00fc\u015fteri Geri Bildirimi ve Destek Talebi Kategorizasyonu<\/h3>\n<p><strong>Problem:<\/strong> M\u00fc\u015fterilerinizden gelen binlerce e-posta, sohbet mesaj\u0131 veya yorumu manuel olarak okuyup ilgili departmana y\u00f6nlendirmek veya kategorize etmek, m\u00fc\u015fteri destek ekipleri i\u00e7in b\u00fcy\u00fck bir y\u00fckt\u00fcr. Bu s\u00fcre\u00e7, yan\u0131t s\u00fcrelerini uzat\u0131r ve m\u00fc\u015fteri memnuniyetini d\u00fc\u015f\u00fcrebilir.<\/p>\n<p><strong>\u00c7\u00f6z\u00fcm:<\/strong> LLM'ler, do\u011fal dildeki m\u00fc\u015fteri geri bildirimlerini analiz edebilir ve bunlar\u0131 \u00f6nceden tan\u0131mlanm\u0131\u015f kategorilere (\u00f6rne\u011fin, \"Teknik Destek\", \"Fatura Sorunu\", \"\u00dcr\u00fcn \u0130adesi\", \"Genel Sorgu\") ve duygu durumlar\u0131na (\"Olumlu\", \"Olumsuz\", \"N\u00f6tr\") ay\u0131rarak yap\u0131land\u0131r\u0131lm\u0131\u015f bir \u00e7\u0131kt\u0131 \u00fcretebilir. Bu, gelen taleplerin otomatik olarak do\u011fru ekibe y\u00f6nlendirilmesini veya \u00f6nceliklendirilmesini sa\u011flar.<\/p>\n<pre><code>\n# Google Gemini ile m\u00fc\u015fteri geri bildirim kategorizasyonu (daha \u00f6nceki \u00f6rnekten geli\u015ftirilmi\u015f hali)\nimport google.generativeai as genai\nimport json\n\ngenai.configure(api_key=\"S\u0130Z\u0130N_GOOGLE_GEMINI_ANAHTARINIZ\")\nmodel = genai.GenerativeModel('gemini-pro')\n\ndef categorize_and_sentiment(category: str, sentiment: str, priority: str):\n    \"\"\"\n    M\u00fc\u015fteri geri bildirimini kategorize eder, duygu durumunu ve \u00f6nceli\u011fini belirler.\n    :param category: Geri bildirimin kategorisi.\n    :param sentiment: Geri bildirimin duygu durumu.\n    :param priority: Talebin \u00f6nceli\u011fi (y\u00fcksek, orta, d\u00fc\u015f\u00fck).\n    \"\"\"\n    return {\"category\": category, \"sentiment\": sentiment, \"priority\": priority}\n\ntools_for_feedback = [\n    {\n        \"function_declarations\": [\n            {\n                \"name\": \"categorize_and_sentiment\",\n                \"description\": \"M\u00fc\u015fteri geri bildirimini kategorize eder, duygu durumunu ve \u00f6nceli\u011fini belirler.\",\n                \"parameters\": {\n                    \"type\": \"object\",\n                    \"properties\": {\n                        \"category\": {\"type\": \"string\", \"enum\": [\"teknik_destek\", \"fatura_sorunu\", \"\u00fcr\u00fcn_iadesi\", \"genel_sorgu\", \"\u00fcr\u00fcn_\u00f6nerisi\"]},\n                        \"sentiment\": {\"type\": \"string\", \"enum\": [\"olumlu\", \"olumsuz\", \"n\u00f6tr\"]},\n                        \"priority\": {\"type\": \"string\", \"enum\": [\"y\u00fcksek\", \"orta\", \"d\u00fc\u015f\u00fck\"]}\n                    },\n                    \"required\": [\"category\", \"sentiment\", \"priority\"],\n                },\n            }\n        ]\n    }\n]\n\ncustomer_email = \"\"\"\nMerhaba, d\u00fcn ald\u0131\u011f\u0131m 'X' model kablosuz farem \u00e7al\u0131\u015fm\u0131yor. San\u0131r\u0131m bir teknik ar\u0131za var. Acilen yard\u0131m\u0131n\u0131za ihtiyac\u0131m var, proje teslim tarihim yakla\u015f\u0131yor!\n\"\"\"\n\nresponse = model.generate_content(\n    f\"M\u00fc\u015fteri e-postas\u0131: '{customer_email}'\\n\\nBu e-postay\u0131 kategorize et, duygu durumunu ve \u00f6nceli\u011fini belirle.\",\n    tools=tools_for_feedback\n)\n\nif response.candidates[0].content.parts[0].function_call:\n    function_call_data = response.candidates[0].content.parts[0].function_call.args\n    print(\"M\u00fc\u015fteri Geri Bildirim Analizi:\")\n    print(json.dumps(function_call_data, indent=2, ensure_ascii=False))\n    # Buradan sonra, kategorize_and_sentiment(**function_call_data) \u00e7a\u011fr\u0131s\u0131 ile\n    # otomatik olarak destek bileti olu\u015fturabilir veya ilgili departmana y\u00f6nlendirebilirsiniz.\nelse:\n    print(\"LLM ara\u00e7 \u00e7a\u011fr\u0131s\u0131 yapmad\u0131 veya metin yan\u0131t\u0131 d\u00f6nd\u00fcrd\u00fc.\")\n    print(response.candidates[0].content.parts[0].text)\n    <\/pre>\n<p><\/code><\/p>\n<p>Bu senaryo, m\u00fc\u015fteri hizmetleri verimlili\u011fini \u00f6nemli \u00f6l\u00e7\u00fcde art\u0131r\u0131rken, m\u00fc\u015fterilere daha h\u0131zl\u0131 ve ki\u015fiselle\u015ftirilmi\u015f destek sunulmas\u0131na olanak tan\u0131r.<\/p>\n<h3>3. Otomatik API \u00c7a\u011fr\u0131s\u0131 Tetikleme ve \u0130\u015f Ak\u0131\u015f\u0131 Otomasyonu<\/h3>\n<p><strong>Problem:<\/strong> Bir\u00e7ok i\u015fletme uygulamas\u0131, kullan\u0131c\u0131dan do\u011fal dilde gelen bir talebi al\u0131p, bunu arka u\u00e7 sistemlerdeki belirli API \u00e7a\u011fr\u0131lar\u0131na d\u00f6n\u00fc\u015ft\u00fcrme ihtiyac\u0131 duyar. \u00d6rne\u011fin, bir kullan\u0131c\u0131n\u0131n \"yar\u0131n i\u00e7in New York hava durumu\" gibi bir iste\u011fi, bir hava durumu API'sinin \u00e7a\u011fr\u0131lmas\u0131 ve do\u011fru \u015fehir ile tarih parametrelerinin ge\u00e7irilmesi anlam\u0131na gelir.<\/p>\n<p><strong>\u00c7\u00f6z\u00fcm:<\/strong> LLM'lerin Function Calling yetenekleri, bu t\u00fcr otomasyon senaryolar\u0131 i\u00e7in idealdir. LLM'ye hangi API'lerin mevcut oldu\u011funu ve her birinin hangi parametreleri bekledi\u011fini a\u00e7\u0131klayan ara\u00e7 tan\u0131mlar\u0131 sa\u011flan\u0131r. LLM, kullan\u0131c\u0131n\u0131n iste\u011fini yorumlayarak, hangi API'nin \u00e7a\u011fr\u0131lmas\u0131 gerekti\u011fini ve bu API'ye hangi yap\u0131land\u0131r\u0131lm\u0131\u015f parametrelerin iletilmesi gerekti\u011fini belirler.<\/p>\n<pre><code>\n# Mistral AI ile hava durumu API'si \u00e7a\u011f\u0131rma (Basitle\u015ftirilmi\u015f sim\u00fclasyon)\nfrom mistralai.client import MistralClient\nfrom mistralai.models.chat import ChatMessage\nimport json\n\nclient = MistralClient(api_key=\"S\u0130Z\u0130N_MISTRAL_ANAHTARINIZ\")\n\n# Hava durumu API'mizi sim\u00fcle eden bir fonksiyon tan\u0131mlayal\u0131m\ndef get_current_weather(location: str):\n    \"\"\"Belirtilen konumun g\u00fcncel hava durumu bilgilerini getirir.\"\"\"\n    # Ger\u00e7ek uygulamada burada harici bir hava durumu API'si \u00e7a\u011fr\u0131l\u0131rd\u0131\n    weather_data = {\n        \"\u0130stanbul\": {\"temperature\": \"22\u00b0C\", \"conditions\": \"G\u00fcne\u015fli\", \"humidity\": \"60%\"},\n        \"Ankara\": {\"temperature\": \"18\u00b0C\", \"conditions\": \"Par\u00e7al\u0131 Bulutlu\", \"humidity\": \"75%\"}\n    }\n    return weather_data.get(location, {\"error\": \"Bilinmeyen konum\"})\n\n# Mistral'a tan\u0131taca\u011f\u0131m\u0131z ara\u00e7 (fonksiyon) tan\u0131m\u0131\ntools_for_weather = [\n    {\n        \"type\": \"function\",\n        \"function\": {\n            \"name\": \"get_current_weather\",\n            \"description\": \"Belirtilen konumun g\u00fcncel hava durumu bilgilerini getirir.\",\n            \"parameters\": {\n                \"type\": \"object\",\n                \"properties\": {\n                    \"location\": {\"type\": \"string\", \"description\": \"Hava durumu bilgisi istenen \u015fehir ad\u0131.\"},\n                },\n                \"required\": [\"location\"],\n            },\n        },\n    }\n]\n\nuser_query_weather = \"\u0130stanbul'da hava nas\u0131l?\"\n\nmessages_weather = [\n    ChatMessage(role=\"user\", content=user_query_weather)\n]\n\nresponse_weather = client.chat(\n    model=\"mistral-large-latest\",\n    messages=messages_weather,\n    tools=tools_for_weather, # Ara\u00e7lar\u0131 modele tan\u0131t\u0131yoruz\n    tool_choice=\"auto\" # Modelin uygun arac\u0131 se\u00e7mesine izin veriyoruz\n)\n\n# Modelin yan\u0131t\u0131n\u0131 i\u015fleme\ntool_calls = response_weather.choices[0].message.tool_calls\nif tool_calls:\n    for tool_call in tool_calls:\n        if tool_call.function.name == \"get_current_weather\":\n            location = tool_call.function.arguments[\"location\"]\n            weather_info = get_current_weather(location) # Sim\u00fcle edilen fonksiyonu \u00e7a\u011f\u0131r\n            print(f\"Mistral'dan Hava Durumu Bilgisi \u0130\u00e7in API \u00c7a\u011fr\u0131s\u0131:\")\n            print(f\"Konum: {location}, Hava Durumu: {json.dumps(weather_info, indent=2, ensure_ascii=False)}\")\n            \n            # Sonraki ad\u0131mda, bu hava durumu bilgisini LLM'e geri besleyip kullan\u0131c\u0131ya do\u011fal dilde yan\u0131t verebilirsiniz.\n            # \u00d6rne\u011fin: \"\u0130stanbul'da hava \u015fu anda 22\u00b0C ve g\u00fcne\u015fli.\"\nelse:\n    print(f\"Mistral ara\u00e7 \u00e7a\u011f\u0131rmad\u0131. Yan\u0131t: {response_weather.choices[0].message.content}\")\n    <\/pre>\n<p><\/code><\/p>\n<p>Bu yetenek, sanal asistanlar, chatbotlar ve karma\u015f\u0131k i\u015f ak\u0131\u015flar\u0131n\u0131 otomatikle\u015ftiren uygulamalar i\u00e7in temel bir yap\u0131 ta\u015f\u0131d\u0131r. Kullan\u0131c\u0131n\u0131n do\u011fal dilindeki niyetini yap\u0131land\u0131r\u0131lm\u0131\u015f bir API \u00e7a\u011fr\u0131s\u0131na d\u00f6n\u00fc\u015ft\u00fcrerek, uygulamalar\u0131n \u00e7ok daha ak\u0131ll\u0131 ve etkile\u015fimli olmas\u0131n\u0131 sa\u011flar.<\/p>\n<p>Bu vaka analizleri, yap\u0131land\u0131r\u0131lm\u0131\u015f \u00e7\u0131kt\u0131lar\u0131n yaln\u0131zca bir teknik detay olmad\u0131\u011f\u0131n\u0131, ayn\u0131 zamanda LLM'lerin ger\u00e7ek d\u00fcnyadaki i\u015f problemlerini \u00e7\u00f6zmek i\u00e7in nas\u0131l kullan\u0131labilece\u011fini g\u00f6steren g\u00fc\u00e7l\u00fc bir mekanizma oldu\u011funu ortaya koymaktad\u0131r. Her senaryo, LLM'in esnek do\u011fal dil anlama yetene\u011fini, kesin ve programatik olarak i\u015flenebilir veri \u00e7\u0131kt\u0131lar\u0131yla birle\u015ftirerek de\u011fer yarat\u0131r.<\/p>\n<h2 id=\"performans-optimizasyonu-guvenilirlik-ileri-duzey-ipuclari\">Performans Optimizasyonu ve G\u00fcvenilirlik \u0130\u00e7in \u0130leri D\u00fczey \u0130pu\u00e7lar\u0131 Nelerdir?<\/h2>\n<p>Yap\u0131land\u0131r\u0131lm\u0131\u015f \u00e7\u0131kt\u0131lar\u0131 LLM'lerden almak harika bir ba\u015flang\u0131\u00e7, ancak uygulamalar\u0131n\u0131z\u0131 \u00fcretimde g\u00fcvenilir ve verimli bir \u015fekilde \u00e7al\u0131\u015ft\u0131rmak i\u00e7in baz\u0131 ileri d\u00fczey tekniklere ve optimizasyonlara ihtiyac\u0131n\u0131z olacak. \u0130\u015fte dikkate alman\u0131z gereken baz\u0131 \u00f6nemli ipu\u00e7lar\u0131:<\/p>\n<h3>1. Kapsaml\u0131 \u015eema Tan\u0131mlamalar\u0131 ve Geri Besleme D\u00f6ng\u00fcleri<\/h3>\n<p>Modele sa\u011flad\u0131\u011f\u0131n\u0131z JSON Schema veya fonksiyon tan\u0131m\u0131 ne kadar detayl\u0131 olursa, modelin beklenen \u00e7\u0131kt\u0131y\u0131 \u00fcretme olas\u0131l\u0131\u011f\u0131 o kadar artar. Her alan\u0131n veri tipini, a\u00e7\u0131klamas\u0131n\u0131, kabul edilebilir de\u011ferlerini (enum'lar), zorunlu olup olmad\u0131\u011f\u0131n\u0131 ve format k\u0131s\u0131tlamalar\u0131n\u0131 (regex desenleri) a\u00e7\u0131k\u00e7a belirtin. Hatta baz\u0131 durumlarda, \u015femay\u0131 do\u011frudan isteminize g\u00f6merek modelin \u00e7\u0131kt\u0131y\u0131 o \u015femaya uygun hale getirmesi i\u00e7in daha g\u00fc\u00e7l\u00fc bir ipucu sa\u011flayabilirsiniz. Yanl\u0131\u015f \u00e7\u0131kt\u0131lar ald\u0131\u011f\u0131n\u0131zda, \u015feman\u0131z\u0131 veya isteminizi g\u00fcncelleyerek bir geri besleme d\u00f6ng\u00fcs\u00fc olu\u015fturun.<\/p>\n<h3>2. Sa\u011flam Hata \u0130\u015fleme ve Yeniden Deneme Mekanizmalar\u0131<\/h3>\n<p>LLM'ler, ne kadar iyi prompt'lar veya ara\u00e7 tan\u0131mlar\u0131 kullansan\u0131z da, bazen ge\u00e7ersiz JSON veya yanl\u0131\u015f formatta \u00e7\u0131kt\u0131 \u00fcretebilirler. Bu nedenle, uygulaman\u0131zda sa\u011flam hata i\u015fleme mekanizmalar\u0131 bulundurmak hayati \u00f6nem ta\u015f\u0131r. \u00c7\u0131kt\u0131y\u0131 her zaman bir <code>try-except<\/code> blo\u011fu i\u00e7inde ayr\u0131\u015ft\u0131r\u0131n ve <code>json.JSONDecodeError<\/code> gibi hatalar\u0131 yakalay\u0131n.<\/p>\n<pre><code>\nimport json\n\nllm_output = \"Bu bir {ge\u00e7ersiz JSON}\"\ntry:\n    parsed_data = json.loads(llm_output)\nexcept json.JSONDecodeError as e:\n    print(f\"JSON Ayr\u0131\u015ft\u0131rma Hatas\u0131: {e}. Yeniden deneme veya alternatif y\u00f6ntem uygulan\u0131yor.\")\n    # Burada modelden \u00e7\u0131kt\u0131y\u0131 tekrar isteme, prompt'u ayarlama veya varsay\u0131lan de\u011fer kullanma gibi\n    # bir yeniden deneme stratejisi uygulayabilirsiniz.\n    <\/pre>\n<p><\/code><\/p>\n<p>Ayr\u0131ca, belirli bir say\u0131da ba\u015far\u0131s\u0131z denemeden sonra farkl\u0131 bir model veya fallback mekanizmas\u0131 kullanmay\u0131 d\u00fc\u015f\u00fcnebilirsiniz. \u00d6rne\u011fin, daha k\u00fc\u00e7\u00fck, daha h\u0131zl\u0131 bir modelden al\u0131nan \u00e7\u0131kt\u0131 ba\u015far\u0131s\u0131z olursa, daha yetenekli ama yava\u015f bir modele ge\u00e7i\u015f yapmak.<\/p>\n<h3>3. Token Maliyetleri ve Verimlilik Y\u00f6netimi<\/h3>\n<p>Fonksiyon tan\u0131mlar\u0131 ve JSON \u015femalar\u0131, modele g\u00f6nderilen token say\u0131s\u0131n\u0131 art\u0131r\u0131r, bu da maliyetleri ve gecikmeyi etkileyebilir. Gereksiz derecede karma\u015f\u0131k \u015femalardan ka\u00e7\u0131n\u0131n. Yaln\u0131zca ger\u00e7ekten ihtiyac\u0131n\u0131z olan alanlar\u0131 ve do\u011frulama kurallar\u0131n\u0131 ekleyin. Modelleri, kullan\u0131c\u0131n\u0131n iste\u011fi i\u00e7in gerekli olan en az miktarda bilgiyi d\u00f6nd\u00fcrmeye te\u015fvik eden prompt'lar yaz\u0131n. \u00d6zellikle uzun belgelerden veri \u00e7\u0131kar\u0131rken, belgeyi par\u00e7alara ay\u0131r\u0131p ilgili k\u0131s\u0131mlar\u0131 LLM'ye g\u00f6ndermek (chunking) veya RAG (Retrieval Augmented Generation) gibi teknikleri kullanarak ba\u011flam penceresi kullan\u0131m\u0131n\u0131 optimize edebilirsiniz.<\/p>\n<h3>4. Model Se\u00e7imi ve \u0130nce Ayar Potansiyeli<\/h3>\n<p>T\u00fcm modeller yap\u0131land\u0131r\u0131lm\u0131\u015f \u00e7\u0131kt\u0131 konusunda ayn\u0131 performans\u0131 g\u00f6stermez. Daha b\u00fcy\u00fck ve daha yetenekli modeller (\u00f6rne\u011fin, GPT-4o, Claude 3 Opus) genellikle daha iyi ve daha g\u00fcvenilir yap\u0131land\u0131r\u0131lm\u0131\u015f \u00e7\u0131kt\u0131 \u00fcretme e\u011filimindedir. Ancak bu modeller daha pahal\u0131d\u0131r. Projenizin ihtiya\u00e7lar\u0131na ve b\u00fct\u00e7esine g\u00f6re do\u011fru modeli se\u00e7mek \u00f6nemlidir. \u00c7ok \u00f6zel veya ni\u015f bir yap\u0131land\u0131r\u0131lm\u0131\u015f \u00e7\u0131kt\u0131 format\u0131na ihtiyac\u0131n\u0131z varsa, kendi verilerinizle (\u00f6rne\u011fin, do\u011fru JSON \u00e7\u0131kt\u0131lar\u0131 i\u00e7eren \u00f6rneklerle) bir modeli ince ayar (fine-tuning) yapmay\u0131 d\u00fc\u015f\u00fcnebilirsiniz. Bu, modelin istenen format\u0131 tutarl\u0131 bir \u015fekilde \u00fcretme yetene\u011fini \u00f6nemli \u00f6l\u00e7\u00fcde art\u0131rabilir.<\/p>\n<h3>5. Mobil Uygulamalar \u0130\u00e7in Duyarl\u0131 \u00c7\u0131kt\u0131 Y\u00f6netimi<\/h3>\n<p>LLM'lerden al\u0131nan yap\u0131land\u0131r\u0131lm\u0131\u015f \u00e7\u0131kt\u0131lar genellikle arka u\u00e7ta i\u015flenir, ancak sonu\u00e7lar mobil uygulamalarda veya web aray\u00fczlerinde g\u00f6sterilebilir. Bu \u00e7\u0131kt\u0131lar\u0131n farkl\u0131 cihaz boyutlar\u0131na ve y\u00f6nelimlerine uygun \u015fekilde g\u00f6r\u00fcnt\u00fclenmesi i\u00e7in duyarl\u0131 tasar\u0131m prensipleri uygulanmal\u0131d\u0131r. \u00d6zellikle uzun JSON \u00e7\u0131kt\u0131lar\u0131 veya tablolar, k\u00fc\u00e7\u00fck ekranlarda okunmas\u0131 zor olabilir. CSS media query'leri, bu t\u00fcr durumlarda kullan\u0131c\u0131 deneyimini iyile\u015ftirmek i\u00e7in kullan\u0131labilir.<\/p>\n<pre><code>\n    <style>\n    \/* Genel tablo stilleri *\/\n    table {\n        width: 100%;\n        border-collapse: collapse;\n        margin-bottom: 1em;\n    }\n    th, td {\n        border: 1px solid #ddd;\n        padding: 8px;\n        text-align: left;\n    }\n    th {\n        background-color: #f2f2f2;\n    }\n\n    \/* Mobil cihazlar i\u00e7in medya sorgusu *\/\n    @media only screen and (max-width: 600px) {\n        table, thead, tbody, th, td, tr {\n            display: block;\n        }\n\n        \/* Ba\u015fl\u0131klar\u0131 gizle *\/\n        thead tr {\n            position: absolute;\n            top: -9999px;\n            left: -9999px;\n        }\n\n        \/* Her sat\u0131r\u0131 bir \"kart\" gibi g\u00f6ster *\/\n        tr {\n            border: 1px solid #ccc;\n            margin-bottom: 10px;\n        }\n\n        \/* Her h\u00fccreyi etiketle *\/\n        td {\n            border: none;\n            border-bottom: 1px solid #eee;\n            position: relative;\n            padding-left: 50%;\n        }\n\n        td:before {\n            position: absolute;\n            top: 6px;\n            left: 6px;\n            width: 45%;\n            padding-right: 10px;\n            white-space: nowrap;\n            content: attr(data-label); \/* data-label niteli\u011fini kullanarak etiketi g\u00f6ster *\/\n            font-weight: bold;\n        }\n    }\n    <\/style>\n\n    <!-- HTML Tablo \u00d6rne\u011fi -->\n    <table>\n        <thead>\n            <tr>\n                <th>\u00dcr\u00fcn Ad\u0131<\/th>\n                <th>Fiyat<\/th>\n                <th>Kategori<\/th>\n            <\/tr>\n        <\/thead>\n        <tbody>\n            <tr>\n                <td data-label=\"\u00dcr\u00fcn Ad\u0131\">Kablosuz Kulakl\u0131k<\/td>\n                <td data-label=\"Fiyat\">1999 TL<\/td>\n                <td data-label=\"Kategori\">Elektronik<\/td>\n            <\/tr>\n            <tr>\n                <td data-label=\"\u00dcr\u00fcn Ad\u0131\">Ak\u0131ll\u0131 Saat<\/td>\n                <td data-label=\"Fiyat\">3500 TL<\/td>\n                <td data-label=\"Kategori\">Giyilebilir Teknoloji<\/td>\n            <\/tr>\n        <\/tbody>\n    <\/table>\n    <\/pre>\n<p><\/code><\/p>\n<p>Yukar\u0131daki CSS medya sorgusu \u00f6rne\u011fi, bir tablonun mobil cihazlarda nas\u0131l daha okunabilir hale getirilebilece\u011fini g\u00f6stermektedir. Bu t\u00fcr teknikler, LLM'lerden al\u0131nan yap\u0131land\u0131r\u0131lm\u0131\u015f verilerin son kullan\u0131c\u0131ya sunuldu\u011fu her durumda d\u00fc\u015f\u00fcn\u00fclmelidir.<\/p>\n<aside class=\"expert-tip\">\n        <strong>Uzman \u0130pucu:<\/strong> B\u00fcy\u00fck dil modelleri s\u00fcrekli geli\u015fiyor. Yap\u0131land\u0131r\u0131lm\u0131\u015f \u00e7\u0131kt\u0131 \u00f6zelliklerindeki g\u00fcncellemeleri ve yeni \u00e7\u0131kan modelleri takip etmek, uygulaman\u0131z\u0131n performans\u0131n\u0131 ve g\u00fcvenilirli\u011fini art\u0131rmak i\u00e7in \u00f6nemlidir. API dok\u00fcmantasyonlar\u0131n\u0131 d\u00fczenli olarak kontrol edin!<br \/>\n    <\/aside>\n<p>Bu ileri d\u00fczey ipu\u00e7lar\u0131, LLM tabanl\u0131 uygulamalar\u0131n\u0131z\u0131n sadece i\u015flevsel olmas\u0131n\u0131 de\u011fil, ayn\u0131 zamanda \u00fcretim ortam\u0131nda sa\u011flam, verimli ve kullan\u0131c\u0131 dostu olmas\u0131n\u0131 sa\u011flayacakt\u0131r. Yap\u0131land\u0131r\u0131lm\u0131\u015f \u00e7\u0131kt\u0131larla \u00e7al\u0131\u015f\u0131rken, bu konulara dikkat etmek, uzun vadede size zaman ve kaynak kazand\u0131racakt\u0131r.<\/p>\n<h2 id=\"sonuc-dogru-llm-yaklasimi-secimi\">Sonu\u00e7: Do\u011fru LLM ve Yakla\u015f\u0131m\u0131 Se\u00e7mek \u0130\u00e7in Neler Bilmeliyiz?<\/h2>\n<p>Bu makale boyunca, OpenAI, Google Gemini, Anthropic Claude, Mistral AI ve AWS Bedrock gibi \u00f6nde gelen B\u00fcy\u00fck Dil Modeli (LLM) sa\u011flay\u0131c\u0131lar\u0131n\u0131n yap\u0131land\u0131r\u0131lm\u0131\u015f \u00e7\u0131kt\u0131 yeteneklerini ayr\u0131nt\u0131l\u0131 bir \u015fekilde inceledik. G\u00f6rd\u00fc\u011f\u00fcm\u00fcz gibi, her sa\u011flay\u0131c\u0131, temel Function Calling veya JSON moduna benzer mekanizmalar sunsa da, API tasar\u0131mlar\u0131, prompt etkile\u015fimleri ve ek servisler (\u00f6rne\u011fin, AWS Bedrock'taki Agents) a\u00e7\u0131s\u0131ndan farkl\u0131l\u0131klar g\u00f6sterir. Peki, projeniz i\u00e7in en do\u011fru LLM'yi ve yap\u0131land\u0131r\u0131lm\u0131\u015f \u00e7\u0131kt\u0131 yakla\u015f\u0131m\u0131n\u0131 nas\u0131l se\u00e7melisiniz?<\/p>\n<p>\u00d6ncelikle, uygulaman\u0131z\u0131n <strong>spesifik ihtiya\u00e7lar\u0131n\u0131<\/strong> net bir \u015fekilde tan\u0131mlay\u0131n. Sadece basit bir JSON objesine mi ihtiyac\u0131n\u0131z var, yoksa karma\u015f\u0131k i\u015f ak\u0131\u015flar\u0131n\u0131 tetikleyecek, birden fazla parametreye sahip fonksiyon \u00e7a\u011fr\u0131lar\u0131na m\u0131 ihtiyac\u0131n\u0131z var? \u00c7\u0131kt\u0131n\u0131n g\u00fcvenilirli\u011fi ne kadar kritik? Gecikme ve maliyet k\u0131s\u0131tlamalar\u0131n\u0131z nelerdir? Bu sorular\u0131n yan\u0131tlar\u0131, size yol g\u00f6sterecektir.<\/p>\n<ul>\n<li><strong>Basit JSON \u00c7\u0131kt\u0131lar\u0131 \u0130\u00e7in:<\/strong> OpenAI (GPT-4o, GPT-3.5 Turbo) ve Mistral AI (Mistral Large, Mistral Medium) gibi sa\u011flay\u0131c\u0131lar\u0131n sundu\u011fu \u00f6zel JSON modlar\u0131, genellikle en kolay ve g\u00fcvenilir \u00e7\u00f6z\u00fcmleri sunar. <code>response_format={\"type\": \"json_object\"}<\/code> gibi parametreler, modelin ge\u00e7erli JSON \u00fcretmesini zorlayarak hata oran\u0131n\u0131 d\u00fc\u015f\u00fcr\u00fcr.<\/li>\n<li><strong>Karma\u015f\u0131k \u0130\u015f Ak\u0131\u015flar\u0131 ve API Entegrasyonlar\u0131 \u0130\u00e7in:<\/strong> OpenAI'nin Function Calling, Google Gemini'nin Function Calling ve Anthropic'in Tool Use mekanizmalar\u0131, kullan\u0131c\u0131n\u0131n do\u011fal dil iste\u011finden belirli bir fonksiyonu \u00e7a\u011f\u0131rmak i\u00e7in gerekli yap\u0131land\u0131r\u0131lm\u0131\u015f parametreleri \u00e7\u0131karmak i\u00e7in son derece g\u00fc\u00e7l\u00fcd\u00fcr. AWS Bedrock'taki Agents, bu yetene\u011fi daha da ileriye ta\u015f\u0131yarak \u00e7ok ad\u0131ml\u0131, otomatikle\u015ftirilmi\u015f i\u015f ak\u0131\u015flar\u0131 olu\u015fturman\u0131za olanak tan\u0131r.<\/li>\n<li><strong>Maliyet ve Performans Dengesi \u0130\u00e7in:<\/strong> Mistral AI modelleri genellikle maliyet etkinli\u011fi ve y\u00fcksek performans dengesi sunar. OpenAI'nin turbo modelleri de benzer \u015fekilde uygun maliyetli olabilirken, GPT-4o ve Claude 3 Opus gibi daha yetenekli modeller, daha y\u00fcksek maliyetle daha iyi do\u011fruluk ve karma\u015f\u0131k g\u00f6revleri yerine getirme yetene\u011fi sunar.<\/li>\n<li><strong>Ekosistem ve Esneklik \u0130\u00e7in:<\/strong> AWS Bedrock, tek bir API \u00fczerinden birden fazla model sa\u011flay\u0131c\u0131s\u0131na eri\u015fim imkan\u0131 sunarak, size en iyi modeli se\u00e7me konusunda b\u00fcy\u00fck esneklik sa\u011flar. Zaten AWS ekosisteminde \u00e7al\u0131\u015f\u0131yorsan\u0131z, Bedrock entegrasyonu olduk\u00e7a do\u011fal olacakt\u0131r.<\/li>\n<\/ul>\n<p>Unutmay\u0131n ki LLM teknolojileri h\u0131zla geli\u015fmektedir. Sa\u011flay\u0131c\u0131lar s\u00fcrekli olarak yeni \u00f6zellikler ekliyor, mevcut olanlar\u0131 geli\u015ftiriyor ve performanslar\u0131n\u0131 art\u0131r\u0131yorlar. Bu nedenle, se\u00e7iminizi yaparken g\u00fcncel dok\u00fcmantasyonlar\u0131 ve duyurular\u0131 takip etmek \u00f6nemlidir. En iyi uygulama, projenizin gereksinimlerine en uygun olan birka\u00e7 sa\u011flay\u0131c\u0131y\u0131 veya modeli denemek ve kendi test verilerinizle performanslar\u0131n\u0131 kar\u015f\u0131la\u015ft\u0131rmakt\u0131r. Bu \"deneme yan\u0131lma\" yakla\u015f\u0131m\u0131, hem teknik uygunluk hem de maliyet etkinli\u011fi a\u00e7\u0131s\u0131ndan en do\u011fru karar\u0131 vermenizi sa\u011flayacakt\u0131r.<\/p>\n<p>Sonu\u00e7 olarak, yap\u0131land\u0131r\u0131lm\u0131\u015f \u00e7\u0131kt\u0131lar, LLM'lerin sadece ak\u0131ll\u0131 sohbet arkada\u015flar\u0131 olman\u0131n \u00f6tesine ge\u00e7erek, i\u015f s\u00fcre\u00e7lerini d\u00f6n\u00fc\u015ft\u00fcren ve uygulamalar\u0131m\u0131za derinlemesine entegre olan temel bir bile\u015fen haline gelmesini sa\u011flam\u0131\u015ft\u0131r. Bu yetenekleri ustaca kullanarak, daha ak\u0131ll\u0131, daha otomatik ve daha kullan\u0131c\u0131 dostu \u00e7\u00f6z\u00fcmler geli\u015ftirebiliriz. Gelecek, B\u00fcy\u00fck Dil Modelleri ve yap\u0131land\u0131r\u0131lm\u0131\u015f verilerin ortakla\u015fa \u00e7al\u0131\u015ft\u0131\u011f\u0131 otomasyonlarla \u015fekillenecek!<\/p>\n<h3 id=\"s\u0131kca-sorulan-sorular\">S\u0131k\u00e7a Sorulan Sorular (SSS)<\/h3>\n<dl>\n<dt>1. Yap\u0131land\u0131r\u0131lm\u0131\u015f \u00e7\u0131kt\u0131 almak i\u00e7in prompt m\u00fchendisli\u011fi tek ba\u015f\u0131na yeterli midir?<\/dt>\n<dd>Hay\u0131r, genellikle yeterli de\u011fildir. Prompt m\u00fchendisli\u011fi, modelin belirli bir formatta \u00e7\u0131kt\u0131 \u00fcretmesini sa\u011flamak i\u00e7in ilk ad\u0131md\u0131r, ancak LLM'lerin do\u011fas\u0131ndaki nondeterministiklik nedeniyle her zaman g\u00fcvenilir sonu\u00e7lar vermez. Function Calling, JSON modu veya \u015fema tan\u0131mlamalar\u0131 gibi daha sa\u011flam mekanizmalar, tutarl\u0131 ve ge\u00e7erli yap\u0131land\u0131r\u0131lm\u0131\u015f \u00e7\u0131kt\u0131 elde etmek i\u00e7in tercih edilmelidir.<\/dd>\n<dt>2. Hangi LLM sa\u011flay\u0131c\u0131s\u0131 en iyi yap\u0131land\u0131r\u0131lm\u0131\u015f \u00e7\u0131kt\u0131 \u00f6zelliklerine sahiptir?<\/dt>\n<dd>En iyi sa\u011flay\u0131c\u0131, projenizin spesifik ihtiya\u00e7lar\u0131na ba\u011fl\u0131d\u0131r. OpenAI (GPT-4o) ve Google Gemini, Function Calling konusunda \u00e7ok yetenekli ve geni\u015f kabul g\u00f6rm\u00fc\u015ft\u00fcr. Mistral AI, iyi performans\/maliyet dengesi sunarken, Anthropic Claude'un Tool Use yetenekleri ve AWS Bedrock'un geni\u015f model deste\u011fi ve Agent'lar\u0131 kendi benzersiz avantajlar\u0131n\u0131 sunar. Her birinin API tasar\u0131m\u0131n\u0131 ve entegrasyon kolayl\u0131\u011f\u0131n\u0131 g\u00f6z \u00f6n\u00fcnde bulundurarak test etmeniz en iyisidir.<\/dd>\n<dt>3. Yap\u0131land\u0131r\u0131lm\u0131\u015f \u00e7\u0131kt\u0131lar\u0131m\u0131 her zaman do\u011frulamal\u0131 m\u0131y\u0131m?<\/dt>\n<dd>Evet, kesinlikle! LLM'ler bazen ge\u00e7ersiz veya yanl\u0131\u015f formatta \u00e7\u0131kt\u0131lar \u00fcretebilir. Bu nedenle, JSON ayr\u0131\u015ft\u0131rma hatalar\u0131n\u0131 yakalamak ve gerekti\u011finde bir JSON Schema do\u011frulay\u0131c\u0131 kullanarak \u00e7\u0131kt\u0131n\u0131n beklenen yap\u0131ya uygun olup olmad\u0131\u011f\u0131n\u0131 kontrol etmek kritik \u00f6neme sahiptir. Bu, uygulaman\u0131z\u0131n g\u00fcvenilirli\u011fini art\u0131r\u0131r.<\/dd>\n<dt>4. Yap\u0131land\u0131r\u0131lm\u0131\u015f \u00e7\u0131kt\u0131 kullanmak LLM \u00e7a\u011fr\u0131lar\u0131n\u0131n maliyetini art\u0131r\u0131r m\u0131?<\/dt>\n<dd>Evet, genellikle art\u0131r\u0131r. Fonksiyon tan\u0131mlar\u0131 ve detayl\u0131 JSON \u015femalar\u0131, modele g\u00f6nderilen toplam token say\u0131s\u0131n\u0131 art\u0131r\u0131r. Daha fazla token kullan\u0131m\u0131, daha y\u00fcksek maliyet ve potansiyel olarak daha uzun gecikme anlam\u0131na gelir. Bu nedenle, \u015fema ve prompt'lar\u0131n\u0131z\u0131 m\u00fcmk\u00fcn oldu\u011funca verimli tutmaya \u00e7al\u0131\u015fmal\u0131s\u0131n\u0131z.<\/dd>\n<dt>5. \u0130nce ayar (fine-tuning) yap\u0131land\u0131r\u0131lm\u0131\u015f \u00e7\u0131kt\u0131lar\u0131 iyile\u015ftirebilir mi?<\/dt>\n<dd>Evet, ince ayar, modelin belirli bir formatta veya belirli bir g\u00f6rev i\u00e7in yap\u0131land\u0131r\u0131lm\u0131\u015f \u00e7\u0131kt\u0131lar \u00fcretme yetene\u011fini \u00f6nemli \u00f6l\u00e7\u00fcde art\u0131rabilir. E\u011fer model mevcut y\u00f6ntemlerle bile istenen tutarl\u0131l\u0131\u011f\u0131 sa\u011flayam\u0131yorsa ve yeterli miktarda kaliteli veri setiniz varsa, ince ayar g\u00fc\u00e7l\u00fc bir \u00e7\u00f6z\u00fcm olabilir. Ancak ince ayar, veri haz\u0131rl\u0131\u011f\u0131 ve ek maliyet gerektiren ileri d\u00fczey bir konudur.<\/dd>\n<\/dl>\n<p><\/body><\/p>\n","protected":false},"excerpt":{"rendered":"G\u00fcn\u00fcm\u00fcz b\u00fcy\u00fck dil modellerinden (LLM) beklenenler, sadece ak\u0131c\u0131 metinler \u00fcretmekle s\u0131n\u0131rl\u0131 de\u011fil. Art\u0131k bu g\u00fc\u00e7l\u00fc yapay zekalar\u0131n, uygulamalar\u0131m\u0131zla&hellip;","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"csco_page_header_type":"","csco_page_load_nextpost":"","csco_page_subscribe_form":"","csco_page_contact_form":"","footnotes":""},"categories":[1],"tags":[],"class_list":{"0":"post-31077","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-genel","7":"cs-entry","8":"cs-video-wrap"},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v20.5 (Yoast SEO v25.3.1) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>LLM Sa\u011flay\u0131c\u0131lar\u0131nda Yap\u0131land\u0131r\u0131lm\u0131\u015f \u00c7\u0131kt\u0131 Kar\u015f\u0131la\u015ft\u0131rmas\u0131<\/title>\n<meta name=\"description\" content=\"G\u00fcn\u00fcm\u00fcz b\u00fcy\u00fck dil modellerinden (LLM) beklenenler, sadece ak\u0131c\u0131 metinler \u00fcretmekle s\u0131n\u0131rl\u0131 de\u011fil. Art\u0131k bu g\u00fc\u00e7l\u00fc yapay zekalar\u0131n, uygulamalar\u0131m\u0131zla kusursuzca entegre olabilmesi i\u00e7in belirli bir formatta, yani yap\u0131land\u0131r\u0131lm\u0131\u015f \u00e7\u0131kt\u0131lar sunmas\u0131 kritik bir gereklilik haline geldi. Peki, OpenAI, Google Gemini, Anthropic Claude, Mistral AI ve AWS Bedrock gibi \u00f6nde gelen sa\u011flay\u0131c\u0131lar bu konuda hangi yetenekleri sunuyor ve biz geli\u015ftiriciler en uygun \u00e7\u00f6z\u00fcm\u00fc nas\u0131l se\u00e7meliyiz? Bu makalede, farkl\u0131 LLM sa\u011flay\u0131c\u0131lar\u0131n\u0131n yap\u0131land\u0131r\u0131lm\u0131\u015f \u00e7\u0131kt\u0131 y\u00f6ntemlerini derinlemesine inceleyecek, pratik \u00f6rneklerle kar\u015f\u0131la\u015ft\u0131racak ve ger\u00e7ek d\u00fcnya senaryolar\u0131nda nas\u0131l kullanabilece\u011fimizi ad\u0131m ad\u0131m ke\u015ffedece\u011fiz. Haz\u0131rsan\u0131z, bu heyecan verici yolculu\u011fa \u00e7\u0131kal\u0131m!\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/fatihsoysal.com\/blog\/llm-saglayicilarinda-yapilandirilmis-cikti-karsilastirmasi\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"LLM Sa\u011flay\u0131c\u0131lar\u0131nda Yap\u0131land\u0131r\u0131lm\u0131\u015f \u00c7\u0131kt\u0131 Kar\u015f\u0131la\u015ft\u0131rmas\u0131\" \/>\n<meta property=\"og:description\" content=\"G\u00fcn\u00fcm\u00fcz b\u00fcy\u00fck dil modellerinden (LLM) beklenenler, sadece ak\u0131c\u0131 metinler \u00fcretmekle s\u0131n\u0131rl\u0131 de\u011fil. Art\u0131k bu g\u00fc\u00e7l\u00fc yapay zekalar\u0131n, uygulamalar\u0131m\u0131zla kusursuzca entegre olabilmesi i\u00e7in belirli bir formatta, yani yap\u0131land\u0131r\u0131lm\u0131\u015f \u00e7\u0131kt\u0131lar sunmas\u0131 kritik bir gereklilik haline geldi. Peki, OpenAI, Google Gemini, Anthropic Claude, Mistral AI ve AWS Bedrock gibi \u00f6nde gelen sa\u011flay\u0131c\u0131lar bu konuda hangi yetenekleri sunuyor ve biz geli\u015ftiriciler en uygun \u00e7\u00f6z\u00fcm\u00fc nas\u0131l se\u00e7meliyiz? Bu makalede, farkl\u0131 LLM sa\u011flay\u0131c\u0131lar\u0131n\u0131n yap\u0131land\u0131r\u0131lm\u0131\u015f \u00e7\u0131kt\u0131 y\u00f6ntemlerini derinlemesine inceleyecek, pratik \u00f6rneklerle kar\u015f\u0131la\u015ft\u0131racak ve ger\u00e7ek d\u00fcnya senaryolar\u0131nda nas\u0131l kullanabilece\u011fimizi ad\u0131m ad\u0131m ke\u015ffedece\u011fiz. Haz\u0131rsan\u0131z, bu heyecan verici yolculu\u011fa \u00e7\u0131kal\u0131m!\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/llm-saglayicilarinda-yapilandirilmis-cikti-karsilastirmasi\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2025-10-05T09:32:02+00:00\" \/>\n<meta name=\"author\" content=\"Fatih Soysal\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Yazan:\" \/>\n\t<meta name=\"twitter:data1\" content=\"Fatih Soysal\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tahmini okuma s\u00fcresi\" \/>\n\t<meta name=\"twitter:data2\" content=\"34 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/llm-saglayicilarinda-yapilandirilmis-cikti-karsilastirmasi\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/llm-saglayicilarinda-yapilandirilmis-cikti-karsilastirmasi\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"LLM Sa\u011flay\u0131c\u0131lar\u0131nda Yap\u0131land\u0131r\u0131lm\u0131\u015f \u00c7\u0131kt\u0131 Kar\u015f\u0131la\u015ft\u0131rmas\u0131\",\"datePublished\":\"2025-10-05T09:32:02+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/llm-saglayicilarinda-yapilandirilmis-cikti-karsilastirmasi\/\"},\"wordCount\":4908,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/llm-saglayicilarinda-yapilandirilmis-cikti-karsilastirmasi\/#respond\"]}],\"copyrightYear\":\"2025\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/llm-saglayicilarinda-yapilandirilmis-cikti-karsilastirmasi\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/llm-saglayicilarinda-yapilandirilmis-cikti-karsilastirmasi\/\",\"name\":\"LLM Sa\u011flay\u0131c\u0131lar\u0131nda Yap\u0131land\u0131r\u0131lm\u0131\u015f \u00c7\u0131kt\u0131 Kar\u015f\u0131la\u015ft\u0131rmas\u0131\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2025-10-05T09:32:02+00:00\",\"description\":\"G\u00fcn\u00fcm\u00fcz b\u00fcy\u00fck dil modellerinden (LLM) beklenenler, sadece ak\u0131c\u0131 metinler \u00fcretmekle s\u0131n\u0131rl\u0131 de\u011fil. Art\u0131k bu g\u00fc\u00e7l\u00fc yapay zekalar\u0131n, uygulamalar\u0131m\u0131zla kusursuzca entegre olabilmesi i\u00e7in belirli bir formatta, yani yap\u0131land\u0131r\u0131lm\u0131\u015f \u00e7\u0131kt\u0131lar sunmas\u0131 kritik bir gereklilik haline geldi. Peki, OpenAI, Google Gemini, Anthropic Claude, Mistral AI ve AWS Bedrock gibi \u00f6nde gelen sa\u011flay\u0131c\u0131lar bu konuda hangi yetenekleri sunuyor ve biz geli\u015ftiriciler en uygun \u00e7\u00f6z\u00fcm\u00fc nas\u0131l se\u00e7meliyiz? Bu makalede, farkl\u0131 LLM sa\u011flay\u0131c\u0131lar\u0131n\u0131n yap\u0131land\u0131r\u0131lm\u0131\u015f \u00e7\u0131kt\u0131 y\u00f6ntemlerini derinlemesine inceleyecek, pratik \u00f6rneklerle kar\u015f\u0131la\u015ft\u0131racak ve ger\u00e7ek d\u00fcnya senaryolar\u0131nda nas\u0131l kullanabilece\u011fimizi ad\u0131m ad\u0131m ke\u015ffedece\u011fiz. Haz\u0131rsan\u0131z, bu heyecan verici yolculu\u011fa \u00e7\u0131kal\u0131m!\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/llm-saglayicilarinda-yapilandirilmis-cikti-karsilastirmasi\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/llm-saglayicilarinda-yapilandirilmis-cikti-karsilastirmasi\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/llm-saglayicilarinda-yapilandirilmis-cikti-karsilastirmasi\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"LLM Sa\u011flay\u0131c\u0131lar\u0131nda Yap\u0131land\u0131r\u0131lm\u0131\u015f \u00c7\u0131kt\u0131 Kar\u015f\u0131la\u015ft\u0131rmas\u0131\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/\",\"name\":\"Fatihsoysal.com\",\"description\":\"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim\",\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"tr\"},{\"@type\":[\"Person\",\"Organization\"],\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\",\"name\":\"Fatih Soysal\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"tr\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"contentUrl\":\"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png\",\"width\":512,\"height\":512,\"caption\":\"Fatih Soysal\"},\"logo\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/\"},\"description\":\"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"LLM Sa\u011flay\u0131c\u0131lar\u0131nda Yap\u0131land\u0131r\u0131lm\u0131\u015f \u00c7\u0131kt\u0131 Kar\u015f\u0131la\u015ft\u0131rmas\u0131","description":"G\u00fcn\u00fcm\u00fcz b\u00fcy\u00fck dil modellerinden (LLM) beklenenler, sadece ak\u0131c\u0131 metinler \u00fcretmekle s\u0131n\u0131rl\u0131 de\u011fil. Art\u0131k bu g\u00fc\u00e7l\u00fc yapay zekalar\u0131n, uygulamalar\u0131m\u0131zla kusursuzca entegre olabilmesi i\u00e7in belirli bir formatta, yani yap\u0131land\u0131r\u0131lm\u0131\u015f \u00e7\u0131kt\u0131lar sunmas\u0131 kritik bir gereklilik haline geldi. Peki, OpenAI, Google Gemini, Anthropic Claude, Mistral AI ve AWS Bedrock gibi \u00f6nde gelen sa\u011flay\u0131c\u0131lar bu konuda hangi yetenekleri sunuyor ve biz geli\u015ftiriciler en uygun \u00e7\u00f6z\u00fcm\u00fc nas\u0131l se\u00e7meliyiz? Bu makalede, farkl\u0131 LLM sa\u011flay\u0131c\u0131lar\u0131n\u0131n yap\u0131land\u0131r\u0131lm\u0131\u015f \u00e7\u0131kt\u0131 y\u00f6ntemlerini derinlemesine inceleyecek, pratik \u00f6rneklerle kar\u015f\u0131la\u015ft\u0131racak ve ger\u00e7ek d\u00fcnya senaryolar\u0131nda nas\u0131l kullanabilece\u011fimizi ad\u0131m ad\u0131m ke\u015ffedece\u011fiz. Haz\u0131rsan\u0131z, bu heyecan verici yolculu\u011fa \u00e7\u0131kal\u0131m!","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/fatihsoysal.com\/blog\/llm-saglayicilarinda-yapilandirilmis-cikti-karsilastirmasi\/","og_locale":"tr_TR","og_type":"article","og_title":"LLM Sa\u011flay\u0131c\u0131lar\u0131nda Yap\u0131land\u0131r\u0131lm\u0131\u015f \u00c7\u0131kt\u0131 Kar\u015f\u0131la\u015ft\u0131rmas\u0131","og_description":"G\u00fcn\u00fcm\u00fcz b\u00fcy\u00fck dil modellerinden (LLM) beklenenler, sadece ak\u0131c\u0131 metinler \u00fcretmekle s\u0131n\u0131rl\u0131 de\u011fil. Art\u0131k bu g\u00fc\u00e7l\u00fc yapay zekalar\u0131n, uygulamalar\u0131m\u0131zla kusursuzca entegre olabilmesi i\u00e7in belirli bir formatta, yani yap\u0131land\u0131r\u0131lm\u0131\u015f \u00e7\u0131kt\u0131lar sunmas\u0131 kritik bir gereklilik haline geldi. Peki, OpenAI, Google Gemini, Anthropic Claude, Mistral AI ve AWS Bedrock gibi \u00f6nde gelen sa\u011flay\u0131c\u0131lar bu konuda hangi yetenekleri sunuyor ve biz geli\u015ftiriciler en uygun \u00e7\u00f6z\u00fcm\u00fc nas\u0131l se\u00e7meliyiz? Bu makalede, farkl\u0131 LLM sa\u011flay\u0131c\u0131lar\u0131n\u0131n yap\u0131land\u0131r\u0131lm\u0131\u015f \u00e7\u0131kt\u0131 y\u00f6ntemlerini derinlemesine inceleyecek, pratik \u00f6rneklerle kar\u015f\u0131la\u015ft\u0131racak ve ger\u00e7ek d\u00fcnya senaryolar\u0131nda nas\u0131l kullanabilece\u011fimizi ad\u0131m ad\u0131m ke\u015ffedece\u011fiz. Haz\u0131rsan\u0131z, bu heyecan verici yolculu\u011fa \u00e7\u0131kal\u0131m!","og_url":"https:\/\/fatihsoysal.com\/blog\/llm-saglayicilarinda-yapilandirilmis-cikti-karsilastirmasi\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2025-10-05T09:32:02+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"34 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/llm-saglayicilarinda-yapilandirilmis-cikti-karsilastirmasi\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/llm-saglayicilarinda-yapilandirilmis-cikti-karsilastirmasi\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"LLM Sa\u011flay\u0131c\u0131lar\u0131nda Yap\u0131land\u0131r\u0131lm\u0131\u015f \u00c7\u0131kt\u0131 Kar\u015f\u0131la\u015ft\u0131rmas\u0131","datePublished":"2025-10-05T09:32:02+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/llm-saglayicilarinda-yapilandirilmis-cikti-karsilastirmasi\/"},"wordCount":4908,"commentCount":0,"publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihsoysal.com\/blog\/llm-saglayicilarinda-yapilandirilmis-cikti-karsilastirmasi\/#respond"]}],"copyrightYear":"2025","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/llm-saglayicilarinda-yapilandirilmis-cikti-karsilastirmasi\/","url":"https:\/\/fatihsoysal.com\/blog\/llm-saglayicilarinda-yapilandirilmis-cikti-karsilastirmasi\/","name":"LLM Sa\u011flay\u0131c\u0131lar\u0131nda Yap\u0131land\u0131r\u0131lm\u0131\u015f \u00c7\u0131kt\u0131 Kar\u015f\u0131la\u015ft\u0131rmas\u0131","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2025-10-05T09:32:02+00:00","description":"G\u00fcn\u00fcm\u00fcz b\u00fcy\u00fck dil modellerinden (LLM) beklenenler, sadece ak\u0131c\u0131 metinler \u00fcretmekle s\u0131n\u0131rl\u0131 de\u011fil. Art\u0131k bu g\u00fc\u00e7l\u00fc yapay zekalar\u0131n, uygulamalar\u0131m\u0131zla kusursuzca entegre olabilmesi i\u00e7in belirli bir formatta, yani yap\u0131land\u0131r\u0131lm\u0131\u015f \u00e7\u0131kt\u0131lar sunmas\u0131 kritik bir gereklilik haline geldi. Peki, OpenAI, Google Gemini, Anthropic Claude, Mistral AI ve AWS Bedrock gibi \u00f6nde gelen sa\u011flay\u0131c\u0131lar bu konuda hangi yetenekleri sunuyor ve biz geli\u015ftiriciler en uygun \u00e7\u00f6z\u00fcm\u00fc nas\u0131l se\u00e7meliyiz? Bu makalede, farkl\u0131 LLM sa\u011flay\u0131c\u0131lar\u0131n\u0131n yap\u0131land\u0131r\u0131lm\u0131\u015f \u00e7\u0131kt\u0131 y\u00f6ntemlerini derinlemesine inceleyecek, pratik \u00f6rneklerle kar\u015f\u0131la\u015ft\u0131racak ve ger\u00e7ek d\u00fcnya senaryolar\u0131nda nas\u0131l kullanabilece\u011fimizi ad\u0131m ad\u0131m ke\u015ffedece\u011fiz. Haz\u0131rsan\u0131z, bu heyecan verici yolculu\u011fa \u00e7\u0131kal\u0131m!","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/llm-saglayicilarinda-yapilandirilmis-cikti-karsilastirmasi\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/llm-saglayicilarinda-yapilandirilmis-cikti-karsilastirmasi\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/llm-saglayicilarinda-yapilandirilmis-cikti-karsilastirmasi\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"LLM Sa\u011flay\u0131c\u0131lar\u0131nda Yap\u0131land\u0131r\u0131lm\u0131\u015f \u00c7\u0131kt\u0131 Kar\u015f\u0131la\u015ft\u0131rmas\u0131"}]},{"@type":"WebSite","@id":"https:\/\/fatihsoysal.com\/blog\/#website","url":"https:\/\/fatihsoysal.com\/blog\/","name":"Fatihsoysal.com","description":"Blog - Yaz\u0131l\u0131m D\u00fcnyas\u0131 Tecr\u00fcbelerim","publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/fatihsoysal.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"tr"},{"@type":["Person","Organization"],"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1","name":"Fatih Soysal","image":{"@type":"ImageObject","inLanguage":"tr","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","contentUrl":"https:\/\/fatihsoysal.com\/blog\/wp-content\/uploads\/2024\/04\/cropped-replicate-prediction-3kgg1hgjn5rgp0cf0p5tr0jw7w-1.png","width":512,"height":512,"caption":"Fatih Soysal"},"logo":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/image\/"},"description":"Kullan\u0131m ve kodlama m\u00fckemmeliyetini odak alan uygulamalar olu\u015fturma deneyimine sahip, profesyonel olarak 15+ y\u0131l \u00fczeri deneyime sahip bir yaz\u0131l\u0131m m\u00fchendisi.","url":"https:\/\/fatihsoysal.com\/blog\/author\/fatihsoysal\/"}]}},"yoast_meta":{"yoast_wpseo_title":"","yoast_wpseo_metadesc":"","yoast_wpseo_canonical":""},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/31077","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/comments?post=31077"}],"version-history":[{"count":0,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/31077\/revisions"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=31077"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=31077"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=31077"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}