{"id":34992,"date":"2025-11-24T14:31:26","date_gmt":"2025-11-24T11:31:26","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/langgraph-ile-ilk-yapay-zeka-ajaninizi-olusturun-adim-adim-rehber\/"},"modified":"2025-11-24T14:31:26","modified_gmt":"2025-11-24T11:31:26","slug":"langgraph-ile-ilk-yapay-zeka-ajaninizi-olusturun-adim-adim-rehber","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/langgraph-ile-ilk-yapay-zeka-ajaninizi-olusturun-adim-adim-rehber\/","title":{"rendered":"LangGraph ile \u0130lk Yapay Zeka Ajan\u0131n\u0131z\u0131 Olu\u015fturun: Ad\u0131m Ad\u0131m Rehber"},"content":{"rendered":"<p><body><\/p>\n<p>LangGraph ile etkile\u015fimli ve ak\u0131ll\u0131 yapay zeka ajanlar\u0131 in\u015fa etmenin temel ad\u0131mlar\u0131n\u0131 ke\u015ffedin. Bu kapsaml\u0131 rehberde, LangChain \u00fczerine kurulu bu g\u00fc\u00e7l\u00fc \u00e7er\u00e7eveyi s\u0131f\u0131rdan \u00f6\u011frenerek ilk otonom ajan\u0131n\u0131z\u0131 nas\u0131l olu\u015fturaca\u011f\u0131n\u0131z\u0131 ad\u0131m ad\u0131m inceleyece\u011fiz. Modern AI uygulamalar\u0131nda devrim yaratan bu teknolojiyi kullanarak karma\u015f\u0131k problemleri \u00e7\u00f6zmeye haz\u0131r olun.<\/p>\n<p>G\u00fcn\u00fcm\u00fcz\u00fcn dijital d\u00fcnyas\u0131nda, bilgi ak\u0131\u015f\u0131 h\u0131zla artarken, i\u015f y\u00fcklerimiz de paralel olarak katlan\u0131yor. Bireylerden b\u00fcy\u00fck \u015firketlere kadar herkes, tekrarlayan g\u00f6revleri otomatikle\u015ftirmek, karma\u015f\u0131k veri setlerini anlamland\u0131rmak ve dinamik problemlere ger\u00e7ek zamanl\u0131 \u00e7\u00f6z\u00fcmler \u00fcretmek i\u00e7in yeni yollar ar\u0131yor. \u0130\u015fte tam bu noktada, yapay zeka (YZ) ajanlar\u0131 devreye giriyor. Geleneksel yaz\u0131l\u0131mlar\u0131n aksine, YZ ajanlar\u0131 sadece belirli bir g\u00f6revi yerine getirmekle kalmaz, ayn\u0131 zamanda \u00e7evresiyle etkile\u015fime girer, \u00f6\u011frendiklerinden sonu\u00e7 \u00e7\u0131kar\u0131r ve belirli hedeflere ula\u015fmak i\u00e7in birden fazla ad\u0131m\u0131 otonom bir \u015fekilde planlayabilir. Bu yetenekleri sayesinde, g\u00fcn\u00fcm\u00fcz\u00fcn LLM&#8217;leri (B\u00fcy\u00fck Dil Modelleri) sadece metin \u00fcretmekten \u00e7ok daha fazlas\u0131n\u0131 yapabilen g\u00fc\u00e7l\u00fc ara\u00e7lara d\u00f6n\u00fc\u015f\u00fcyor.<\/p>\n<p>Ancak, LLM&#8217;lerin do\u011fal bir s\u0131n\u0131rlamas\u0131 vard\u0131r: tek seferlik bir sorguya yan\u0131t verme e\u011filimindedirler ve \u00e7ok ad\u0131ml\u0131, mant\u0131ksal \u00e7\u0131kar\u0131m gerektiren veya harici ara\u00e7lar kullanmay\u0131 gerektiren g\u00f6revlerde zorlanabilirler. \u00d6rne\u011fin, &#8220;X \u00fcr\u00fcn\u00fcn\u00fcn m\u00fc\u015fteri yorumlar\u0131n\u0131 \u00f6zetle, olumlu ve olumsuz y\u00f6nlerini \u00e7\u0131kar, ard\u0131ndan rakip Y \u00fcr\u00fcn\u00fcyle kar\u015f\u0131la\u015ft\u0131r ve bir sat\u0131n alma tavsiyesinde bulun&#8221; gibi bir g\u00f6rev, tek bir LLM \u00e7a\u011fr\u0131s\u0131yla etkili bir \u015fekilde \u00e7\u00f6z\u00fclemez. Bu t\u00fcr karma\u015f\u0131k g\u00f6revler, farkl\u0131 a\u015famalar aras\u0131nda durum y\u00f6netimini, ko\u015fullu dallanmay\u0131 ve \u00e7e\u015fitli ara\u00e7lar\u0131n (arama motorlar\u0131, veritabanlar\u0131, API&#8217;ler) entegrasyonunu gerektirir. YZ ajanlar\u0131 tam da bu bo\u015flu\u011fu doldurur. Bir YZ ajan\u0131, problemi par\u00e7alara ay\u0131rabilir, her bir par\u00e7a i\u00e7in uygun arac\u0131 se\u00e7ebilir, ad\u0131mlar\u0131 y\u00fcr\u00fctebilir ve elde etti\u011fi sonu\u00e7lar\u0131 bir sonraki ad\u0131m i\u00e7in girdi olarak kullanabilir. Bu sayede, tutarl\u0131, g\u00fcvenilir ve daha yetenekli sistemler in\u015fa edilebilir.<\/p>\n<p>LangGraph gibi ara\u00e7lar, bu t\u00fcr geli\u015fmi\u015f ajanlar\u0131 in\u015fa etmeyi m\u00fcmk\u00fcn k\u0131lar. LangGraph, LLM&#8217;leri kullanarak \u00e7ok akt\u00f6rl\u00fc, durum odakl\u0131 uygulamalar geli\u015ftirmek i\u00e7in tasarlanm\u0131\u015f g\u00fc\u00e7l\u00fc bir \u00e7er\u00e7evedir. Geleneksel LangChain zincirlerinin \u00f6tesine ge\u00e7erek, daha karma\u015f\u0131k ak\u0131\u015f kontrol\u00fc, d\u00f6ng\u00fcler ve insan m\u00fcdahalesini destekler. Bu, YZ ajanlar\u0131n\u0131n sadece talimatlar\u0131 takip eden basit sistemler olmak yerine, ger\u00e7ek d\u00fcnyadaki belirsizliklere ve dinamik ko\u015fullara uyum sa\u011flayabilen zeki varl\u0131klar olmalar\u0131n\u0131 sa\u011flar. M\u00fc\u015fteri hizmetlerinden finansal analize, sa\u011fl\u0131k hizmetlerinden yarat\u0131c\u0131 i\u00e7erik \u00fcretimine kadar geni\u015f bir yelpazede, YZ ajanlar\u0131 insan potansiyelini art\u0131rmakta ve yeni i\u015f modelleri yaratmaktad\u0131r. Dolay\u0131s\u0131yla, bu alana hakim olmak, gelece\u011fin teknolojilerini \u015fekillendirmek ad\u0131na kritik bir \u00f6neme sahiptir.<\/p>\n<h2>LangGraph Nedir ve Neden Kullanmal\u0131y\u0131z?<\/h2>\n<p>LangGraph, LangChain ekosisteminin g\u00fc\u00e7l\u00fc bir uzant\u0131s\u0131d\u0131r ve LLM tabanl\u0131 \u00e7ok akt\u00f6rl\u00fc uygulamalar olu\u015fturmak i\u00e7in tasarlanm\u0131\u015f bir k\u00fct\u00fcphanedir. Temel olarak, durum odakl\u0131 (stateful) ve d\u00f6ng\u00fcsel (cyclical) grafikler kullanarak karma\u015f\u0131k YZ ajanlar\u0131 geli\u015ftirmenize olanak tan\u0131r. Yani, bir YZ ajan\u0131n\u0131n farkl\u0131 a\u015famalar\u0131 aras\u0131nda bilgi ak\u0131\u015f\u0131n\u0131, karar alma s\u00fcre\u00e7lerini ve hatta insan m\u00fcdahalesini y\u00f6netebilen bir &#8220;beyin&#8221; in\u015fa etmenizi sa\u011flar. Geleneksel LangChain zincirleri, genellikle bir ba\u015flang\u0131\u00e7tan sona do\u011fru do\u011frusal bir ak\u0131\u015f izlerken, LangGraph ile olu\u015fturulan ajanlar \u00e7ok daha dinamik ve esnektir. Bir ajan\u0131n belirli bir araca ba\u015fvurmas\u0131, bir sonuca ula\u015ft\u0131\u011f\u0131nda d\u00f6ng\u00fcy\u00fc tamamlamas\u0131 veya belirli bir ko\u015ful kar\u015f\u0131land\u0131\u011f\u0131nda farkl\u0131 bir yola sapmas\u0131 gibi senaryolar\u0131 kolayca modelleyebiliriz.<\/p>\n<p>Peki, LangGraph&#8217;\u0131 neden kullanmal\u0131y\u0131z? \u0130\u015fte ba\u015fl\u0131ca nedenler:<\/p>\n<ul>\n<li><strong>Durum Y\u00f6netimi (State Management):<\/strong> LangGraph, ajan\u0131n mevcut durumunu (\u00f6rne\u011fin, konu\u015fma ge\u00e7mi\u015fi, kullan\u0131lan ara\u00e7lar\u0131n sonu\u00e7lar\u0131, ajan\u0131n d\u00fc\u015f\u00fcnceleri) etkili bir \u015fekilde y\u00f6netir. Bu, ajan\u0131n her ad\u0131mda \u00f6nceki etkile\u015fimlerinden ders \u00e7\u0131karabilmesini ve daha tutarl\u0131 yan\u0131tlar vermesini sa\u011flar. Her d\u00fc\u011f\u00fcm \u00e7al\u0131\u015ft\u0131r\u0131ld\u0131\u011f\u0131nda, grafik durumunu g\u00fcnceller ve bu g\u00fcncel durum bir sonraki d\u00fc\u011f\u00fcme aktar\u0131l\u0131r.<\/li>\n<li><strong>D\u00f6ng\u00fcsel Grafikler ve Dinamik Ak\u0131\u015f Kontrol\u00fc:<\/strong> Geleneksel zincirler belirli bir s\u0131ray\u0131 takip ederken, LangGraph ajanlar\u0131 bir problemi \u00e7\u00f6zmek i\u00e7in birden fazla ara\u00e7 kullanmas\u0131 gerekti\u011finde bir d\u00f6ng\u00fcye girebilir. \u00d6rne\u011fin, bir arama arac\u0131yla bilgi edinip, bu bilgiyi analiz edip, yetersizse tekrar arama yapma d\u00f6ng\u00fcs\u00fc gibi senaryolar\u0131 kolayca tasarlayabilirsiniz. Ko\u015fullu kenarlar sayesinde, ajan\u0131n belirli bir kritere g\u00f6re farkl\u0131 yollara sapmas\u0131 da m\u00fcmk\u00fcnd\u00fcr.<\/li>\n<li><strong>G\u00fcvenilirlik ve Hata Tolerans\u0131:<\/strong> LangGraph&#8217;\u0131n durum odakl\u0131 yap\u0131s\u0131, ajan\u0131n her ad\u0131m\u0131 ayr\u0131 ayr\u0131 d\u00fc\u015f\u00fcnmesini ve gerekirse geri d\u00f6n\u00fcp farkl\u0131 bir strateji denemesini sa\u011flar. Bu, LLM&#8217;lerin &#8220;hall\u00fcsinasyon&#8221; yapma veya yanl\u0131\u015f yola sapma e\u011filimlerini azaltmaya yard\u0131mc\u0131 olur. Ayr\u0131ca, her ad\u0131mda ne oldu\u011funu a\u00e7\u0131k\u00e7a g\u00f6stererek hatalar\u0131 ay\u0131klamay\u0131 ve ajan\u0131n davran\u0131\u015f\u0131n\u0131 anlamay\u0131 kolayla\u015ft\u0131r\u0131r.<\/li>\n<li><strong>\u0130nsan-Odakl\u0131 Tasar\u0131m (Human-in-the-Loop):<\/strong> Baz\u0131 karma\u015f\u0131k veya kritik g\u00f6revlerde, YZ ajanlar\u0131n\u0131n belirli noktalarda insan m\u00fcdahalesine ihtiya\u00e7 duymas\u0131 do\u011fald\u0131r. LangGraph, bu t\u00fcr senaryolar\u0131 destekleyecek \u015fekilde tasarlanm\u0131\u015ft\u0131r. Ajan belirli bir noktada karar veremedi\u011finde veya ek onaya ihtiya\u00e7 duydu\u011funda, kontrol\u00fc insana devredebilir ve insan girdisiyle ak\u0131\u015f\u0131 devam ettirebilir. Bu, g\u00fcvenli ve etik YZ sistemleri olu\u015fturmak i\u00e7in hayati \u00f6nem ta\u015f\u0131r.<\/li>\n<li><strong>Mod\u00fclerlik ve Esneklik:<\/strong> LangGraph ile ajan\u0131n farkl\u0131 bile\u015fenlerini (LLM \u00e7a\u011fr\u0131lar\u0131, ara\u00e7 kullan\u0131mlar\u0131, karar verme mant\u0131\u011f\u0131) ayr\u0131 d\u00fc\u011f\u00fcmler olarak tan\u0131mlayabilirsiniz. Bu mod\u00fcler yap\u0131, kodun daha temiz, y\u00f6netilebilir ve yeniden kullan\u0131labilir olmas\u0131n\u0131 sa\u011flar. Ayr\u0131ca, farkl\u0131 LLM&#8217;leri, ara\u00e7lar\u0131 veya i\u015f ak\u0131\u015f\u0131 mant\u0131klar\u0131n\u0131 kolayca de\u011fi\u015ftirmenize olanak tan\u0131r.<\/li>\n<\/ul>\n<p>\u00d6zetle, LangGraph, basit bir istem yan\u0131t\u0131ndan \u00f6teye ge\u00e7erek, ak\u0131ll\u0131, otonom ve etkile\u015fimli YZ ajanlar\u0131 in\u015fa etmek isteyen herkes i\u00e7in vazge\u00e7ilmez bir ara\u00e7t\u0131r. \u00d6zellikle \u00e7ok ad\u0131ml\u0131 g\u00f6revlerde, dinamik karar alma s\u00fcre\u00e7lerinde ve harici ara\u00e7 entegrasyonunda \u00fcst\u00fcn performans g\u00f6sterir. Bu k\u00fct\u00fcphane sayesinde, daha \u00f6nce tek bir LLM ile ba\u015faramayaca\u011f\u0131n\u0131z karma\u015f\u0131kl\u0131kta uygulamalar geli\u015ftirebilirsiniz.<\/p>\n<h2>LangGraph Ajan\u0131 Olu\u015fturmaya Ba\u015flamadan \u00d6nce Neleri Bilmeliyiz?<\/h2>\n<p>Bir LangGraph ajan\u0131 geli\u015ftirmeye ba\u015flamadan \u00f6nce baz\u0131 temel bilgilere ve \u00f6n haz\u0131rl\u0131klara sahip olmak, geli\u015ftirme s\u00fcrecinizi \u00e7ok daha verimli hale getirecektir. Bu b\u00f6l\u00fcmde, gerekli \u00f6n ko\u015fullar\u0131, ortam kurulumunu ve anahtar kavramlar\u0131 ele alaca\u011f\u0131z.<\/p>\n<h3>\u00d6nko\u015fullar ve Temel Kavramlar Nelerdir?<\/h3>\n<ol>\n<li><strong>Python Bilgisi:<\/strong> LangGraph tamamen Python tabanl\u0131d\u0131r, bu nedenle temel Python programlama bilgisi \u015fartt\u0131r. De\u011fi\u015fkenler, fonksiyonlar, s\u0131n\u0131flar, listeler, s\u00f6zl\u00fckler gibi yap\u0131lar\u0131 kullanabilmeniz gerekmektedir.<\/li>\n<li><strong>LangChain Temelleri:<\/strong> LangGraph, LangChain \u00fczerine in\u015fa edilmi\u015ftir. Bu nedenle, LangChain&#8217;in ana bile\u015fenleri olan LLM&#8217;ler (Large Language Models), Prompt Templates (\u0130stem \u015eablonlar\u0131), Chains (Zincirler) ve Tools (Ara\u00e7lar) hakk\u0131nda bilgi sahibi olman\u0131z b\u00fcy\u00fck avantaj sa\u011flayacakt\u0131r. LangGraph, bu bile\u015fenleri daha karma\u015f\u0131k grafik yap\u0131lar\u0131 i\u00e7inde birle\u015ftirmenin bir yoludur.<\/li>\n<li><strong>B\u00fcy\u00fck Dil Modelleri (LLM&#8217;ler):<\/strong> Bir LLM&#8217;ye eri\u015fiminiz olmal\u0131d\u0131r. Genellikle OpenAI GPT modelleri (GPT-3.5, GPT-4) tercih edilir ancak Anthropic Claude, Google Gemini gibi di\u011fer modelleri de kullanabilirsiniz. Bu modellerle etkile\u015fim kurmak i\u00e7in bir API anahtar\u0131na ihtiyac\u0131n\u0131z olacakt\u0131r.<\/li>\n<li><strong>Ortam De\u011fi\u015fkenleri:<\/strong> API anahtarlar\u0131n\u0131z\u0131 do\u011frudan kodunuza g\u00f6mmek yerine, g\u00fcvenlik nedeniyle ortam de\u011fi\u015fkenleri olarak saklamak en iyi uygulamad\u0131r. Python&#8217;da <code>python-dotenv<\/code> k\u00fct\u00fcphanesi bu konuda size yard\u0131mc\u0131 olabilir.<\/li>\n<\/ol>\n<h3>Geli\u015ftirme Ortam\u0131m\u0131z\u0131 Nas\u0131l Kurar\u0131z?<\/h3>\n<p>Geli\u015ftirme ortam\u0131n\u0131z\u0131 temiz ve ba\u011f\u0131ml\u0131l\u0131klardan ar\u0131nd\u0131r\u0131lm\u0131\u015f tutmak i\u00e7in sanal ortamlar (virtual environments) kullanman\u0131z \u015fiddetle tavsiye edilir. \u0130\u015fte ad\u0131m ad\u0131m kurulum s\u00fcreci:<\/p>\n<div class=\"code-example\">\n<pre><code class=\"language-bash\">\n# 1. Sanal ortam olu\u015fturma\npython -m venv langgraph_env\n\n# 2. Sanal ortam\u0131 etkinle\u015ftirme\n# Windows i\u00e7in:\n.\\langgraph_env\\Scripts\\activate\n# macOS\/Linux i\u00e7in:\nsource langgraph_env\/bin\/activate\n    <\/pre>\n<p><\/code>\n  <\/div>\n<p>Sanal ortam\u0131 etkinle\u015ftirdikten sonra, gerekli k\u00fct\u00fcphaneleri kurabiliriz. LangGraph, LangChain ve se\u00e7ti\u011finiz LLM sa\u011flay\u0131c\u0131s\u0131n\u0131n k\u00fct\u00fcphanesine ihtiyac\u0131m\u0131z olacak. \u00d6rne\u011fin, OpenAI kullan\u0131yorsan\u0131z:<\/p>\n<div class=\"code-example\">\n<pre><code class=\"language-bash\">\npip install langgraph langchain langchain_openai python-dotenv\n    <\/pre>\n<p><\/code>\n  <\/div>\n<p>Bu komutlar, LangGraph'\u0131, temel LangChain bile\u015fenlerini, OpenAI entegrasyonunu ve ortam de\u011fi\u015fkenlerini y\u00f6netmek i\u00e7in <code>python-dotenv<\/code>'i y\u00fckleyecektir.<\/p>\n<h3>API Anahtarlar\u0131n\u0131 G\u00fcvenli Bir \u015eekilde Nas\u0131l Y\u00f6netiriz?<\/h3>\n<p>API anahtarlar\u0131n\u0131z\u0131 do\u011frudan kodunuzda tutmak yerine, projenizin k\u00f6k dizininde <code>.env<\/code> ad\u0131nda bir dosya olu\u015fturun ve anahtar\u0131n\u0131z\u0131 buraya yaz\u0131n:<\/p>\n<div class=\"code-example\">\n<pre><code class=\"language-text\">\nOPENAI_API_KEY=\"sk-YOUR_SUPER_SECRET_KEY_HERE\"\n    <\/pre>\n<p><\/code>\n  <\/div>\n<p>Ard\u0131ndan, Python kodunuzda bu anahtar\u0131 y\u00fcklemek i\u00e7in <code>python-dotenv<\/code> kullanabilirsiniz:<\/p>\n<div class=\"code-example\">\n<pre><code class=\"language-python\">\nimport os\nfrom dotenv import load_dotenv\n\nload_dotenv() # .env dosyas\u0131n\u0131 y\u00fckler\n\nopenai_api_key = os.getenv(\"OPENAI_API_KEY\")\n\nif not openai_api_key:\n    raise ValueError(\"OPENAI_API_KEY ortam de\u011fi\u015fkeni ayarlanmam\u0131\u015f.\")\n\n# Art\u0131k LLM'inizi ba\u015flat\u0131rken bu anahtar\u0131 kullanabilirsiniz\nfrom langchain_openai import ChatOpenAI\nllm = ChatOpenAI(model=\"gpt-4\", api_key=openai_api_key)\n    <\/pre>\n<p><\/code>\n  <\/div>\n<p>Bu haz\u0131rl\u0131klar\u0131 tamamlad\u0131\u011f\u0131n\u0131zda, LangGraph ile ilk yapay zeka ajan\u0131 projenizi geli\u015ftirmeye haz\u0131rs\u0131n\u0131z demektir. Art\u0131k, LangGraph'\u0131n temel yap\u0131 ta\u015flar\u0131 olan durum tan\u0131mlamalar\u0131, d\u00fc\u011f\u00fcmler ve kenarlar \u00fczerinde \u00e7al\u0131\u015fmaya ba\u015flayabiliriz. Bu ad\u0131mlar, ajan\u0131n karma\u015f\u0131k karar alma s\u00fcre\u00e7lerini ve i\u015f ak\u0131\u015flar\u0131n\u0131 etkili bir \u015fekilde modellemenize olanak tan\u0131yacakt\u0131r. Her bir ad\u0131mda, ajan\u0131n hedeflenen g\u00f6revi yerine getirme yetene\u011fini art\u0131ran yap\u0131sal bir temel olu\u015fturulmaktad\u0131r.<\/p>\n<h2>Ad\u0131m Ad\u0131m \u0130lk LangGraph Ajan\u0131m\u0131z\u0131 Nas\u0131l Geli\u015ftiririz?<\/h2>\n<p>Art\u0131k LangGraph'\u0131n ne oldu\u011funu ve neden \u00f6nemli oldu\u011funu biliyoruz. \u015eimdi, LangGraph kullanarak basit ama i\u015flevsel bir yapay zeka ajan\u0131 olu\u015fturman\u0131n ad\u0131m ad\u0131m s\u00fcrecine odaklanal\u0131m. Bu \u00f6rnekte, bir \"Ara\u015ft\u0131rma Ajan\u0131\" in\u015fa edece\u011fiz. Bu ajan, belirli bir sorguya yan\u0131t bulmak i\u00e7in bir arama motoru kullanacak ve buldu\u011fu bilgiyi \u00f6zetleyecektir. E\u011fer yeterli bilgi bulamazsa, aramay\u0131 tekrarlayacak veya ek bilgi isteyecektir.<\/p>\n<h3>1. Ajan\u0131m\u0131z\u0131n Durumunu Tan\u0131mlamak (Define Agent State)<\/h3>\n<p>LangGraph'taki her ajan\u0131n bir durumu vard\u0131r. Bu durum, ajan\u0131n anl\u0131k haf\u0131zas\u0131 gibidir ve grafa aktar\u0131lan bilgileri i\u00e7erir. Python'da <code>TypedDict<\/code> kullanarak durumu tan\u0131mlar\u0131z.<\/p>\n<div class=\"code-example\">\n<pre><code class=\"language-python\">\nfrom typing import List, Tuple, Annotated, TypedDict\nfrom langchain_core.messages import BaseMessage\n\nclass AgentState(TypedDict):\n    \"\"\"\n    Ajan\u0131m\u0131z\u0131n durumunu temsil eden tip tan\u0131m\u0131.\n    \n    Attributes:\n        messages: LangChain BaseMessage objelerinin listesi, sohbet ge\u00e7mi\u015fini ve \u00e7\u0131kt\u0131lar\u0131 tutar.\n        tool_results: Kullan\u0131lan ara\u00e7lar\u0131n sonu\u00e7lar\u0131n\u0131 tutan bir liste.\n    \"\"\"\n    messages: Annotated[List[BaseMessage], lambda x, y: x + y]\n    tool_results: Annotated[List[str], lambda x, y: x + y] # Arat\u0131lan i\u00e7erikler buraya eklenecek\n    <\/pre>\n<p><\/code>\n  <\/div>\n<p>Burada <code>messages<\/code>, ajan\u0131n LLM ile olan t\u00fcm etkile\u015fimlerini (kullan\u0131c\u0131 girdileri, ajan\u0131n d\u00fc\u015f\u00fcnceleri, LLM'in yan\u0131tlar\u0131) tutan bir listedir. <code>tool_results<\/code> ise, ajan\u0131n kulland\u0131\u011f\u0131 ara\u00e7lardan (\u00f6rne\u011fin, arama motoru) elde etti\u011fi bilgileri saklayacak. <code>Annotated<\/code> yap\u0131s\u0131, listenin nas\u0131l g\u00fcncellenece\u011fini (yeni \u00f6\u011feleri mevcut listeye ekleyerek) belirtir. Bu, durumun her ad\u0131mda birikimli olarak b\u00fcy\u00fcmesini sa\u011flar.<\/p>\n<h3>2. Ara\u00e7lar\u0131m\u0131z\u0131 Tan\u0131mlamak (Define Tools)<\/h3>\n<p>Ajan\u0131m\u0131z\u0131n \"ara\u015ft\u0131rma\" yapabilmesi i\u00e7in bir arama motoruna ihtiyac\u0131 var. LangChain, bir\u00e7ok arac\u0131 entegre etmeyi kolayla\u015ft\u0131r\u0131r. Bu \u00f6rnekte, basit bir Google Arama arac\u0131n\u0131 kullanaca\u011f\u0131z (ger\u00e7ek d\u00fcnyada Google Search API veya DuckDuckGo Search gibi ara\u00e7lar\u0131 entegre edebilirsiniz).<\/p>\n<div class=\"code-example\">\n<pre><code class=\"language-python\">\nfrom langchain_core.tools import tool\n\n# Basit bir \u00f6rnek arama arac\u0131. Ger\u00e7ek uygulamalarda bir Search API'si kullanmal\u0131s\u0131n\u0131z.\n@tool\ndef search_web(query: str) -> str:\n    \"\"\"Belirli bir sorgu i\u00e7in internette arama yapar ve ilk 3 sonucu \u00f6zetler.\"\"\"\n    print(f\"\\n--- Web'de Ara\u015ft\u0131r\u0131l\u0131yor: {query} ---\")\n    # Bu k\u0131sm\u0131 ger\u00e7ek bir arama motoru API'si ile de\u011fi\u015ftirin (\u00f6rn: DuckDuckGoSearchAPIWrapper, GoogleSearchAPIWrapper)\n    # Basitlik ad\u0131na statik bir yan\u0131t d\u00f6n\u00fcyoruz.\n    if \"LangGraph nedir\" in query:\n        return \"LangGraph, LangChain \u00fczerine kurulu, durum odakl\u0131 ve \u00e7ok akt\u00f6rl\u00fc LLM uygulamalar\u0131 geli\u015ftirmek i\u00e7in bir k\u00fct\u00fcphanedir. D\u00f6ng\u00fcsel grafikler ve insan-in-the-loop yetenekleri sunar.\"\n    elif \"LangChain ve LangGraph fark\u0131\" in query:\n        return \"LangChain daha \u00e7ok do\u011frusal zincirler ve mod\u00fcler bile\u015fenler sunarken, LangGraph d\u00f6ng\u00fcsel grafikler ve durum y\u00f6netimi ile daha karma\u015f\u0131k ajan ak\u0131\u015flar\u0131 sa\u011flar.\"\n    else:\n        return f\"'{query}' sorgusu i\u00e7in internette yeterli bilgi bulunamad\u0131. L\u00fctfen daha spesifik bir sorgu deneyin.\"\n\ntools = [search_web]\n    <\/pre>\n<p><\/code>\n  <\/div>\n<p><code>@tool<\/code> dekorat\u00f6r\u00fc, Python fonksiyonlar\u0131m\u0131z\u0131 LangChain taraf\u0131ndan anla\u015f\u0131lan ara\u00e7lara d\u00f6n\u00fc\u015ft\u00fcr\u00fcr. Ajan\u0131m\u0131z bu ara\u00e7lar\u0131 ne zaman ve nas\u0131l kullanaca\u011f\u0131na karar verecektir.<\/p>\n<h3>3. D\u00fc\u011f\u00fcmleri Tan\u0131mlamak (Define Nodes)<\/h3>\n<p>LangGraph, grafi\u011fin temel i\u015flem birimleri olan d\u00fc\u011f\u00fcmlerden olu\u015fur. Her d\u00fc\u011f\u00fcm, ajan\u0131n bir ad\u0131mda ne yapaca\u011f\u0131n\u0131 tan\u0131mlar. Genellikle iki ana d\u00fc\u011f\u00fcm t\u00fcr\u00fc vard\u0131r: ajan d\u00fc\u011f\u00fcm\u00fc (LLM ile etkile\u015fim) ve ara\u00e7 d\u00fc\u011f\u00fcm\u00fc (tan\u0131mlanan ara\u00e7lar\u0131 \u00e7al\u0131\u015ft\u0131rma).<\/p>\n<div class=\"code-example\">\n<pre><code class=\"language-python\">\nfrom langchain.agents import AgentExecutor, create_openai_tools_agent\nfrom langchain_openai import ChatOpenAI\nfrom langchain_core.prompts import ChatPromptTemplate, MessagesPlaceholder\nfrom langgraph.graph import StateGraph, END\n\n# LLM'i ba\u015flatma\nllm = ChatOpenAI(model=\"gpt-4o\", temperature=0, api_key=os.getenv(\"OPENAI_API_KEY\"))\n\n# Ajan d\u00fc\u011f\u00fcm\u00fcn\u00fc olu\u015fturmak i\u00e7in bir prompt \u015fablonu\nprompt = ChatPromptTemplate.from_messages(\n    [\n        (\"system\", \"Sen, internette ara\u015ft\u0131rma yapabilen ve kullan\u0131c\u0131n\u0131n sorular\u0131n\u0131 yan\u0131tlayabilen yard\u0131mc\u0131 bir ajans\u0131n. Gerekirse ara\u00e7lar\u0131 kullan.\"),\n        MessagesPlaceholder(\"messages\"),\n        MessagesPlaceholder(\"agent_scratchpad\"),\n    ]\n)\n\n# LangChain ajan\u0131n\u0131 olu\u015fturma\nagent_runnable = create_openai_tools_agent(llm, tools, prompt)\n\n# Ajan\u0131 \u00e7al\u0131\u015ft\u0131ran d\u00fc\u011f\u00fcm fonksiyonu\ndef run_agent(state: AgentState) -> AgentState:\n    \"\"\"Ajan\u0131n LLM'ini \u00e7al\u0131\u015ft\u0131r\u0131r ve eylemini veya nihai yan\u0131t\u0131n\u0131 d\u00f6nd\u00fcr\u00fcr.\"\"\"\n    print(\"\\n--- Ajan \u00c7al\u0131\u015f\u0131yor ---\")\n    agent_output = agent_runnable.invoke(state)\n    return {\"messages\": [agent_output]}\n\n# Ara\u00e7lar\u0131 \u00e7al\u0131\u015ft\u0131ran d\u00fc\u011f\u00fcm fonksiyonu\ndef execute_tools(state: AgentState) -> AgentState:\n    \"\"\"Ajan\u0131n belirledi\u011fi ara\u00e7 eylemlerini y\u00fcr\u00fct\u00fcr.\"\"\"\n    print(\"\\n--- Ara\u00e7lar Y\u00fcr\u00fct\u00fcl\u00fcyor ---\")\n    current_messages = state[\"messages\"]\n    last_message = current_messages[-1]\n    \n    tool_outputs = []\n    for tool_call in last_message.tool_calls:\n        tool_name = tool_call.name\n        tool_args = tool_call.args\n        \n        # Sadece tan\u0131ml\u0131 ara\u00e7lar\u0131m\u0131z\u0131 \u00e7al\u0131\u015ft\u0131rmak i\u00e7in basit kontrol\n        if tool_name == \"search_web\":\n            output = search_web.invoke(tool_args) # Parametreleri do\u011frudan iletiyoruz\n            tool_outputs.append(output)\n            print(f\"Ara\u00e7 ({tool_name}) Sonucu: {output}\")\n        else:\n            tool_outputs.append(f\"Hata: Bilinmeyen ara\u00e7 '{tool_name}'\")\n            print(f\"Bilinmeyen ara\u00e7 \u00e7a\u011fr\u0131s\u0131: {tool_name}\")\n\n    # Ara\u00e7 sonu\u00e7lar\u0131n\u0131 duruma ekle ve LangChain tool message format\u0131na d\u00f6n\u00fc\u015ft\u00fcr\n    tool_messages = [BaseMessage(content=output, name=call.name) for output, call in zip(tool_outputs, last_message.tool_calls)]\n    return {\"messages\": tool_messages, \"tool_results\": tool_outputs}\n    <\/pre>\n<p><\/code>\n  <\/div>\n<p><code>run_agent<\/code> d\u00fc\u011f\u00fcm\u00fc, LLM'i \u00e7a\u011f\u0131r\u0131r ve ajan\u0131n bir sonraki eylemini (bir ara\u00e7 kullanma veya son bir yan\u0131t verme) belirler. <code>execute_tools<\/code> d\u00fc\u011f\u00fcm\u00fc ise, ajan\u0131n karar verdi\u011fi ara\u00e7lar\u0131 \u00e7al\u0131\u015ft\u0131r\u0131r ve sonu\u00e7lar\u0131 duruma ekler. Dikkat ederseniz, <code>run_agent<\/code> fonksiyonu, ajan\u0131n mesajlar\u0131n\u0131 g\u00fcncellerken, <code>execute_tools<\/code> fonksiyonu hem mesajlar\u0131 (ara\u00e7 \u00e7\u0131kt\u0131lar\u0131n\u0131) hem de <code>tool_results<\/code> alan\u0131n\u0131 g\u00fcnceller.<\/p>\n<h3>4. Ko\u015fullu Kenarlar\u0131 Tan\u0131mlamak (Define Conditional Edges)<\/h3>\n<p>Ko\u015fullu kenarlar, ajan\u0131n durumuna veya son \u00e7\u0131kt\u0131s\u0131na g\u00f6re grafi\u011fin hangi d\u00fc\u011f\u00fcme ilerleyece\u011fine karar verir. Bu, LangGraph'\u0131n dinamik ak\u0131\u015f kontrol\u00fcn\u00fcn kalbidir.<\/p>\n<div class=\"code-example\">\n<pre><code class=\"language-python\">\n# Ajan\u0131n bir sonraki ad\u0131m\u0131n\u0131 belirleyen fonksiyon\ndef should_continue(state: AgentState) -> str:\n    \"\"\"Ajan\u0131n daha fazla araca ihtiyac\u0131 olup olmad\u0131\u011f\u0131n\u0131 belirler.\"\"\"\n    last_message = state[\"messages\"][-1]\n    # E\u011fer LLM bir ara\u00e7 \u00e7a\u011fr\u0131s\u0131 yap\u0131yorsa devam et\n    if last_message.tool_calls:\n        return \"continue\"\n    # Aksi takdirde, nihai bir yan\u0131t verdiyse bitir\n    return \"end\"\n    <\/pre>\n<p><\/code>\n  <\/div>\n<p><code>should_continue<\/code> fonksiyonu, ajan\u0131n en son mesaj\u0131n\u0131 kontrol eder. E\u011fer bu mesaj bir ara\u00e7 \u00e7a\u011fr\u0131s\u0131 i\u00e7eriyorsa, ajan\u0131n \u00e7al\u0131\u015fmaya devam etmesi gerekti\u011fini ('continue') belirtir ve ara\u00e7 y\u00fcr\u00fctme d\u00fc\u011f\u00fcm\u00fcne y\u00f6nlendirir. Aksi takdirde, ajan\u0131n bir yan\u0131t verdi\u011fini ve grafi\u011fi sonland\u0131rabilece\u011fini ('end') belirtir.<\/p>\n<h3>5. Grafi\u011fi Olu\u015fturmak ve Derlemek (Build and Compile the Graph)<\/h3>\n<p>\u015eimdi t\u00fcm par\u00e7alar\u0131 bir araya getirip grafi\u011fi olu\u015fturabiliriz.<\/p>\n<div class=\"code-example\">\n<pre><code class=\"language-python\">\nfrom langgraph.graph import StateGraph, END\n\n# Grafi\u011fi ba\u015flatma\nworkflow = StateGraph(AgentState)\n\n# D\u00fc\u011f\u00fcmleri ekleme\nworkflow.add_node(\"agent\", run_agent)\nworkflow.add_node(\"tools\", execute_tools)\n\n# Ba\u015flang\u0131\u00e7 ve biti\u015f noktalar\u0131n\u0131 ayarlama\nworkflow.set_entry_point(\"agent\")\n\n# Kenarlar\u0131 ekleme\n# Ajan \u00e7al\u0131\u015ft\u0131ktan sonra devam etmeli mi yoksa bitirmeli mi?\nworkflow.add_conditional_edges(\n    \"agent\",       # Nereden geldi?\n    should_continue, # Ne karar veriyor?\n    {\n        \"continue\": \"tools\", # E\u011fer devam etmeli derse, ara\u00e7lar\u0131 \u00e7al\u0131\u015ft\u0131r\n        \"end\": END           # E\u011fer bitirmeli derse, grafi\u011fi sonland\u0131r\n    }\n)\n\n# Ara\u00e7lar \u00e7al\u0131\u015ft\u0131r\u0131ld\u0131ktan sonra, tekrar ajana d\u00f6n\nworkflow.add_edge(\"tools\", \"agent\")\n\n# Grafi\u011fi derleme\napp = workflow.compile()\n    <\/pre>\n<p><\/code>\n  <\/div>\n<p>Bu kod blo\u011fu, grafi\u011fin ak\u0131\u015f\u0131n\u0131 tan\u0131mlar: ajan ba\u015flar, bir karar verir (<code>should_continue<\/code>), e\u011fer ara\u00e7 kullanmas\u0131 gerekiyorsa ara\u00e7lar\u0131 \u00e7al\u0131\u015ft\u0131r\u0131r, ard\u0131ndan tekrar ajana d\u00f6ner. Bu d\u00f6ng\u00fc, ajan nihai bir yan\u0131t verene kadar devam eder.<\/p>\n<h3>6. Ajan\u0131 \u00c7al\u0131\u015ft\u0131rmak (Run the Agent)<\/h3>\n<p>Son olarak, ajan\u0131m\u0131z\u0131 kullan\u0131c\u0131 girdileriyle \u00e7al\u0131\u015ft\u0131rabiliriz.<\/p>\n<div class=\"code-example\">\n<pre><code class=\"language-python\">\nfrom langchain_core.messages import HumanMessage\n\n# \u00d6rnek sorgularla ajan\u0131 \u00e7al\u0131\u015ft\u0131r\u0131n\nprint(\"\\n=== Ajan \u00c7al\u0131\u015fmaya Ba\u015fl\u0131yor ===\")\n\n# Sorgu 1\nprint(\"\\nKullan\u0131c\u0131: LangGraph nedir?\")\nfor s in app.stream({\"messages\": [HumanMessage(content=\"LangGraph nedir?\")]}):\n    if \"__end__\" not in s:\n        print(s)\n    \n# Sorgu 2\nprint(\"\\nKullan\u0131c\u0131: LangChain ve LangGraph aras\u0131ndaki temel fark nedir?\")\nfor s in app.stream({\"messages\": [HumanMessage(content=\"LangChain ve LangGraph aras\u0131ndaki temel fark nedir?\")]}):\n    if \"__end__\" not in s:\n        print(s)\n\n# Sorgu 3 (bilgi bulunamayan durum)\nprint(\"\\nKullan\u0131c\u0131: Mars'ta ya\u015fam var m\u0131?\")\nfor s in app.stream({\"messages\": [HumanMessage(content=\"Mars'ta ya\u015fam var m\u0131?\")]}):\n    if \"__end__\" not in s:\n        print(s)\n    <\/pre>\n<p><\/code>\n  <\/div>\n<p><code>app.stream()<\/code> metodu, ajan\u0131n her ad\u0131mda \u00fcretti\u011fi \u00e7\u0131kt\u0131lar\u0131 yava\u015f yava\u015f alman\u0131z\u0131 sa\u011flar, bu da ajan\u0131n d\u00fc\u015f\u00fcnce s\u00fcrecini izlemek i\u00e7in faydal\u0131d\u0131r. Bu ad\u0131m ad\u0131m rehberle, ilk LangGraph ajan\u0131 projenizi ba\u015far\u0131yla olu\u015fturmu\u015f olmal\u0131s\u0131n\u0131z. Art\u0131k bu temeli kullanarak daha karma\u015f\u0131k ve yetenekli ajanlar geli\u015ftirmeye ba\u015flayabilirsiniz.<\/p>\n<div class=\"expert-tip\">\n    Uzman \u0130pucu: Kodunuzu test ederken, LLM API \u00e7a\u011fr\u0131lar\u0131n\u0131n maliyetli olabilece\u011fini unutmay\u0131n. Geli\u015ftirme a\u015famas\u0131nda daha k\u00fc\u00e7\u00fck, daha h\u0131zl\u0131 LLM'ler veya yerel modeller kullanmay\u0131 d\u00fc\u015f\u00fcnebilirsiniz. Ayr\u0131ca, LangGraph'\u0131n izleme \u00f6zelliklerini (LangSmith ile entegrasyon gibi) kullanarak ajan\u0131n davran\u0131\u015f\u0131n\u0131 daha detayl\u0131 inceleyebilirsiniz.\n  <\/div>\n<h2>Ger\u00e7ek D\u00fcnya Senaryolar\u0131nda LangGraph Ajanlar\u0131: Vaka Analizleri<\/h2>\n<p>LangGraph ile in\u015fa etti\u011fimiz temel ajan\u0131 anlad\u0131ktan sonra, bu g\u00fc\u00e7l\u00fc \u00e7er\u00e7eveyi ger\u00e7ek d\u00fcnya problemlerini \u00e7\u00f6zmek i\u00e7in nas\u0131l kullanabilece\u011fimizi g\u00f6rmek \u00f6nemlidir. LangGraph, \u00f6zellikle karma\u015f\u0131k, \u00e7ok ad\u0131ml\u0131 ve dinamik karar alma s\u00fcre\u00e7leri gerektiren senaryolarda parlar. \u0130\u015fte LangGraph ajanlar\u0131n\u0131n etkili bir \u015fekilde kullan\u0131labilece\u011fi \u00fc\u00e7 farkl\u0131 vaka analizi:<\/p>\n<h3>Vaka 1: Dinamik M\u00fc\u015fteri Hizmetleri Otomasyonu<\/h3>\n<p><strong>Problem:<\/strong> Geleneksel chatbot'lar genellikle \u00f6nceden tan\u0131mlanm\u0131\u015f kurallara veya s\u0131n\u0131rl\u0131 bilgi taban\u0131na dayan\u0131r. M\u00fc\u015fterilerin karma\u015f\u0131k veya \u00f6zelle\u015ftirilmi\u015f sorunlar\u0131 oldu\u011funda, bu botlar yetersiz kal\u0131r ve genellikle bir insan temsilciye aktar\u0131m gerektirir. Bu durum, m\u00fc\u015fteri memnuniyetini d\u00fc\u015f\u00fcrebilir ve operasyonel maliyetleri art\u0131rabilir.<\/p>\n<p><strong>LangGraph \u00c7\u00f6z\u00fcm\u00fc:<\/strong> LangGraph tabanl\u0131 bir m\u00fc\u015fteri hizmetleri ajan\u0131, m\u00fc\u015fteriyle do\u011fal bir dilde etkile\u015fim kurabilir, sorunu anlayabilir ve birden fazla arac\u0131 dinamik olarak kullanarak \u00e7\u00f6z\u00fcm bulabilir. Bu ajan\u0131n yetenekleri \u015funlar\u0131 i\u00e7erebilir:<\/p>\n<ul>\n<li><strong>Bilgi Taban\u0131 Sorgulama:<\/strong> \u015eirketin dok\u00fcmantasyonundan, SSS'lerinden veya \u00fcr\u00fcn k\u0131lavuzlar\u0131ndan alakal\u0131 bilgileri \u00e7ekmek i\u00e7in bir arama arac\u0131 kullan\u0131r.<\/li>\n<li><strong>Veritaban\u0131 Entegrasyonu:<\/strong> M\u00fc\u015fteri hesap bilgileri, sipari\u015f durumu veya ge\u00e7mi\u015f etkile\u015fimler gibi verilere eri\u015fmek i\u00e7in bir veritaban\u0131 sorgu arac\u0131 kullan\u0131r.<\/li>\n<li><strong>API Entegrasyonu:<\/strong> Sipari\u015f de\u011fi\u015fikli\u011fi, iade ba\u015flatma veya \u015fikayet kayd\u0131 olu\u015fturma gibi eylemleri ger\u00e7ekle\u015ftirmek i\u00e7in dahili API'leri \u00e7a\u011f\u0131rabilir.<\/li>\n<li><strong>Ko\u015fullu Y\u00f6nlendirme:<\/strong> E\u011fer bir sorun otomatik olarak \u00e7\u00f6z\u00fclemiyorsa veya hassas bir konuysa, ajan\u0131n durumu de\u011ferlendirerek konu\u015fmay\u0131 uygun bir insan temsilciye (\u00f6rne\u011fin, teknik destek, finans departman\u0131) y\u00f6nlendirmesi. Bu, LangGraph'\u0131n ko\u015fullu kenarlar\u0131 ve insan-in-the-loop yetenekleri ile kolayca y\u00f6netilebilir.<\/li>\n<\/ul>\n<p><strong>Senaryo Ak\u0131\u015f\u0131:<\/strong><\/p>\n<ol>\n<li>M\u00fc\u015fteri: \"Sipari\u015f numaram ABC-123 olan \u00fcr\u00fcn\u00fcm ne zaman teslim edilecek?\"<\/li>\n<li>Ajan (LLM): M\u00fc\u015fterinin iste\u011fini analiz eder ve bir \"sipari\u015f durumu sorgulama\" arac\u0131 \u00e7a\u011f\u0131r\u0131r.<\/li>\n<li>Ara\u00e7 (API): Sipari\u015f takip sisteminden bilgiyi al\u0131r.<\/li>\n<li>Ajan (LLM): \"Sipari\u015finiz 2 g\u00fcn i\u00e7inde teslim edilecektir. Ba\u015fka bir sorunuz var m\u0131?\"<\/li>\n<li>M\u00fc\u015fteri: \"\u00dcr\u00fcn\u00fc iade etmek istiyorum, nas\u0131l yapabilirim?\"<\/li>\n<li>Ajan (LLM): M\u00fc\u015fterinin iste\u011fini de\u011ferlendirir. Belki bir \"iade politikas\u0131 arama\" arac\u0131 kullan\u0131r ve ard\u0131ndan bir \"iade formu olu\u015fturma\" arac\u0131n\u0131 \u00e7a\u011f\u0131r\u0131r.<\/li>\n<li>Ajan (LLM): \"\u0130ade politikam\u0131za g\u00f6re, \u00fcr\u00fcn\u00fcn\u00fcz\u00fc 14 g\u00fcn i\u00e7inde iade edebilirsiniz. \u0130ade s\u00fcrecini ba\u015flatmak i\u00e7in size bir ba\u011flant\u0131 g\u00f6nderiyorum. Formu doldurduktan sonra, en yak\u0131n kargo \u015fubesine teslim edebilirsiniz.\"<\/li>\n<\/ol>\n<p>Bu yakla\u015f\u0131m, m\u00fc\u015fteri hizmetleri maliyetlerini d\u00fc\u015f\u00fcr\u00fcrken, m\u00fc\u015fterilere daha h\u0131zl\u0131 ve ki\u015fiselle\u015ftirilmi\u015f yan\u0131tlar sunarak memnuniyeti art\u0131r\u0131r.<\/p>\n<h3>Vaka 2: Ak\u0131ll\u0131 Ara\u015ft\u0131rma ve \u00d6zetleme Ajan\u0131<\/h3>\n<p><strong>Problem:<\/strong> Ara\u015ft\u0131rmac\u0131lar, \u00f6\u011frenciler veya analistler, belirli bir konu hakk\u0131nda bilgi toplamak, farkl\u0131 kaynaklar\u0131 sentezlemek ve tutarl\u0131 \u00f6zetler olu\u015fturmak i\u00e7in saatler harcayabilir. \u0130nternet \u00fczerindeki bilgi bollu\u011fu, bu s\u00fcreci daha da zorla\u015ft\u0131r\u0131r ve yanl\u0131\u015f veya eksik bilgilere yol a\u00e7abilir.<\/p>\n<p><strong>LangGraph \u00c7\u00f6z\u00fcm\u00fc:<\/strong> LangGraph tabanl\u0131 bir ara\u015ft\u0131rma ajan\u0131, birden fazla kaynaktan bilgi toplayabilir, bilgiyi kar\u015f\u0131la\u015ft\u0131rabilir, \u00e7eli\u015fkileri tespit edebilir ve derinlemesine bir analiz sunabilir. Bu ajan\u0131n \u00f6zellikleri \u015funlar olabilir:<\/p>\n<ul>\n<li><strong>\u00c7oklu Arama Motorlar\u0131:<\/strong> Google Scholar, akademik veritabanlar\u0131, haber siteleri gibi farkl\u0131 kaynaklar\u0131 ayn\u0131 anda sorgulayabilen ara\u00e7lar.<\/li>\n<li><strong>Belge Okuma ve Anlama:<\/strong> PDF'leri veya web sayfalar\u0131n\u0131 okuyup anahtar bilgileri \u00e7\u0131karabilen ara\u00e7lar.<\/li>\n<li><strong>Bilgi Sentezi ve \u00c7eli\u015fki Tespiti:<\/strong> Toplad\u0131\u011f\u0131 bilgileri kar\u015f\u0131la\u015ft\u0131rarak tutars\u0131zl\u0131klar\u0131 belirleyebilir ve farkl\u0131 bak\u0131\u015f a\u00e7\u0131lar\u0131n\u0131 \u00f6zetleyebilir. Bu, ajan\u0131n \"d\u00f6ng\u00fcsel\" do\u011fas\u0131 sayesinde tekrarlayan sorgularla derinlemesine analiz yapmas\u0131n\u0131 sa\u011flar.<\/li>\n<li><strong>\u00d6zetleme ve Raporlama:<\/strong> Toplanan t\u00fcm bilgileri kullanarak belirli bir formatta (madde i\u015faretleri, \u00f6zet paragraf\u0131, kapsaml\u0131 rapor) \u00e7\u0131kt\u0131lar \u00fcretebilir.<\/li>\n<\/ul>\n<p><strong>Senaryo Ak\u0131\u015f\u0131:<\/strong><\/p>\n<ol>\n<li>Kullan\u0131c\u0131: \"Yapay zeka eti\u011fi konusundaki son geli\u015fmeleri ve tart\u0131\u015fmalar\u0131 \u00f6zetle.\"<\/li>\n<li>Ajan (LLM): Sorguyu analiz eder, anahtar terimleri \u00e7\u0131kar\u0131r ve bir dizi arama sorgusu olu\u015fturur (\u00f6rne\u011fin, \"AI eti\u011fi son geli\u015fmeler\", \"sorumlu AI tart\u0131\u015fmalar\u0131\").<\/li>\n<li>Ara\u00e7 (Web Search): Bu sorgular\u0131 \u00e7al\u0131\u015ft\u0131r\u0131r ve \u00e7e\u015fitli makalelerin, raporlar\u0131n ve haberlerin ba\u011flant\u0131lar\u0131n\u0131 ve k\u0131sa \u00f6zetlerini al\u0131r.<\/li>\n<li>Ajan (LLM): Gelen \u00f6zetleri de\u011ferlendirir. Yeterli bilgi yoksa veya \u00e7eli\u015fkili bilgiler varsa, ek arama sorgular\u0131 olu\u015fturur (d\u00f6ng\u00fc).<\/li>\n<li>Ara\u00e7 (Document Reader): Se\u00e7ilen makalelerin tam metinlerini okur ve anahtar noktalar\u0131 \u00e7\u0131kar\u0131r.<\/li>\n<li>Ajan (LLM): T\u00fcm toplanan bilgileri sentezler, ortak temalar\u0131 ve tart\u0131\u015fmalar\u0131 belirler. \u00c7eli\u015fkileri vurgular ve farkl\u0131 uzmanlar\u0131n g\u00f6r\u00fc\u015flerini \u00f6zetler.<\/li>\n<li>Ajan (LLM): Son bir rapor veya \u00f6zet olu\u015fturur ve kullan\u0131c\u0131ya sunar.<\/li>\n<\/ol>\n<p>Bu ajan, bilgi ara\u015ft\u0131rmas\u0131n\u0131 h\u0131zland\u0131r\u0131r ve kullan\u0131c\u0131lar\u0131n daha bilin\u00e7li kararlar almas\u0131na yard\u0131mc\u0131 olur.<\/p>\n<h3>Vaka 3: Kod \u0130nceleme ve Hata Ay\u0131klama Asistan\u0131<\/h3>\n<p><strong>Problem:<\/strong> Yaz\u0131l\u0131m geli\u015ftiricileri, yazd\u0131klar\u0131 kodlardaki hatalar\u0131 ay\u0131klamak, g\u00fcvenlik a\u00e7\u0131klar\u0131n\u0131 bulmak veya performans\u0131 optimize etmek i\u00e7in \u00e7ok zaman harcarlar. Bu s\u00fcre\u00e7, \u00f6zellikle b\u00fcy\u00fck ve karma\u015f\u0131k kod tabanlar\u0131nda olduk\u00e7a zorlay\u0131c\u0131 olabilir.<\/p>\n<p><strong>LangGraph \u00c7\u00f6z\u00fcm\u00fc:<\/strong> LangGraph tabanl\u0131 bir kod inceleme ajan\u0131, bir kod par\u00e7as\u0131n\u0131 analiz edebilir, potansiyel sorunlar\u0131 belirleyebilir, d\u00fczeltme \u00f6nerileri sunabilir ve hatta testleri \u00e7al\u0131\u015ft\u0131rarak \u00e7\u00f6z\u00fcm\u00fc do\u011frulayabilir. Bu ajan\u0131n yetenekleri \u015funlar\u0131 i\u00e7erebilir:<\/p>\n<ul>\n<li><strong>Kod Analiz Arac\u0131:<\/strong> Geli\u015ftiricinin sa\u011flad\u0131\u011f\u0131 kodu statik analiz ara\u00e7lar\u0131 (linters) veya \u00f6zel LLM tabanl\u0131 analizler ile inceleyebilir.<\/li>\n<li><strong>Test \u00c7al\u0131\u015ft\u0131rma Arac\u0131:<\/strong> Verilen kod i\u00e7in otomatik testler yazabilir ve \u00e7al\u0131\u015ft\u0131rabilir, sonu\u00e7lar\u0131 de\u011ferlendirebilir.<\/li>\n<li><strong>Dok\u00fcmantasyon Sorgulama:<\/strong> Belirli bir fonksiyon veya k\u00fct\u00fcphane hakk\u0131nda bilgi almak i\u00e7in dok\u00fcmantasyonu arayabilir.<\/li>\n<li><strong>Hata Ay\u0131klama D\u00f6ng\u00fcs\u00fc:<\/strong> Bir hata tespit edildi\u011finde, ajan\u0131n \u00f6nerilen bir d\u00fczeltmeyi uygulay\u0131p testleri tekrar \u00e7al\u0131\u015ft\u0131rmas\u0131. E\u011fer testler hala ba\u015far\u0131s\u0131z olursa, farkl\u0131 bir d\u00fczeltme stratejisi denemesi (d\u00f6ng\u00fc).<\/li>\n<li><strong>\u0130nsan Onay\u0131:<\/strong> \u00d6zellikle kritik de\u011fi\u015fiklikler veya karma\u015f\u0131k hatalar i\u00e7in, ajan\u0131n bir d\u00fczeltme \u00f6nermeden \u00f6nce insan geli\u015ftiriciden onay istemesi.<\/li>\n<\/ul>\n<p><strong>Senaryo Ak\u0131\u015f\u0131:<\/strong><\/p>\n<ol>\n<li>Geli\u015ftirici: \"Bu Python fonksiyonunda potansiyel bir g\u00fcvenlik a\u00e7\u0131\u011f\u0131 var m\u0131? Performans\u0131n\u0131 nas\u0131l optimize edebilirim?\" (Kod par\u00e7as\u0131n\u0131 sa\u011flar)<\/li>\n<li>Ajan (LLM): Kodu analiz eder. Belki bir \"kod linter\" arac\u0131 \u00e7a\u011f\u0131r\u0131r ve g\u00fcvenlik taramas\u0131 yapar.<\/li>\n<li>Ara\u00e7 (Linter\/G\u00fcvenlik Taray\u0131c\u0131s\u0131): Potansiyel g\u00fcvenlik a\u00e7\u0131klar\u0131n\u0131 veya kodlama standartlar\u0131 ihlallerini rapor eder.<\/li>\n<li>Ajan (LLM): Gelen raporlar\u0131 de\u011ferlendirir. G\u00fcvenlik a\u00e7\u0131\u011f\u0131 bulursa veya performans iyile\u015ftirme potansiyeli g\u00f6r\u00fcrse, bir d\u00fczeltme \u00f6nerisi olu\u015fturur.<\/li>\n<li>Ajan (LLM): \u00d6nerilen d\u00fczeltmeyi sunar ve geli\u015ftiriciden onay ister.<\/li>\n<li>Geli\u015ftirici: Onay verir veya ek sorular sorar.<\/li>\n<li>Ajan (LLM): Geli\u015ftiricinin onaylad\u0131\u011f\u0131 d\u00fczeltmeyi uygular ve otomatik testler \u00e7al\u0131\u015ft\u0131rmak i\u00e7in bir \"test \u00e7al\u0131\u015ft\u0131rma\" arac\u0131 \u00e7a\u011f\u0131r\u0131r.<\/li>\n<li>Ara\u00e7 (Test Runner): Test sonu\u00e7lar\u0131n\u0131 d\u00f6nd\u00fcr\u00fcr.<\/li>\n<li>Ajan (LLM): Test sonu\u00e7lar\u0131n\u0131 kontrol eder. E\u011fer ba\u015far\u0131l\u0131ysa, \"D\u00fczeltme ba\u015far\u0131l\u0131 oldu, kod temiz g\u00f6r\u00fcn\u00fcyor.\" mesaj\u0131n\u0131 verir. Ba\u015far\u0131s\u0131z olursa, yeni bir d\u00fczeltme stratejisi \u00fczerinde d\u00fc\u015f\u00fcnmeye devam eder (d\u00f6ng\u00fc).<\/li>\n<\/ol>\n<p>Bu vaka analizleri, LangGraph'\u0131n sadece basit sohbet botlar\u0131 olu\u015fturmaktan \u00e7ok daha fazlas\u0131n\u0131 yapabilece\u011fini g\u00f6stermektedir. Durum y\u00f6netimi, d\u00f6ng\u00fcsel grafikler ve ara\u00e7 entegrasyonu sayesinde, LangGraph, ger\u00e7ek d\u00fcnyadaki karma\u015f\u0131k i\u015f ak\u0131\u015flar\u0131n\u0131 otomatikle\u015ftirmek ve daha ak\u0131ll\u0131, otonom sistemler olu\u015fturmak i\u00e7in g\u00fc\u00e7l\u00fc bir \u00e7er\u00e7eve sunar.<\/p>\n<h2>Performans\u0131 ve G\u00fcvenilirli\u011fi Art\u0131rmak \u0130\u00e7in \u0130pu\u00e7lar\u0131 Nelerdir?<\/h2>\n<p>Bir LangGraph ajan\u0131 olu\u015fturmak harika bir ba\u015flang\u0131\u00e7t\u0131r, ancak \u00fcretim ortam\u0131nda kullan\u0131lacak veya daha karma\u015f\u0131k g\u00f6revleri \u00fcstlenecek bir ajan\u0131n performans\u0131n\u0131 ve g\u00fcvenilirli\u011fini art\u0131rmak i\u00e7in baz\u0131 stratejiler uygulamak gereklidir. \u0130\u015fte ajans\u0131n\u0131z\u0131n daha verimli, tutarl\u0131 ve sa\u011flam \u00e7al\u0131\u015fmas\u0131n\u0131 sa\u011flayacak ipu\u00e7lar\u0131:<\/p>\n<h3>1. \u00d6nbellekleme (Caching) Kullan\u0131m\u0131<\/h3>\n<p>Her LLM \u00e7a\u011fr\u0131s\u0131 hem zaman hem de maliyet a\u00e7\u0131s\u0131ndan bir y\u00fckt\u00fcr. Ajan\u0131n\u0131z\u0131n ayn\u0131 sorguya veya prompt'a tekrar tekrar yan\u0131t vermesi gerekti\u011finde, \u00f6nbellekleme devreye girer. LangChain, \u00e7e\u015fitli \u00f6nbellekleme mekanizmalar\u0131n\u0131 destekler (\u00f6rne\u011fin, in-memory, SQLite, Redis).<\/p>\n<div class=\"code-example\">\n<pre><code class=\"language-python\">\nfrom langchain.globals import set_llm_cache\nfrom langchain.cache import InMemoryCache\n# veya RedisCache, SQLiteCache\n\nset_llm_cache(InMemoryCache())\n\n# \u015eimdi LLM \u00e7a\u011fr\u0131lar\u0131 otomatik olarak \u00f6nbelle\u011fe al\u0131nacak ve tekrar eden \u00e7a\u011fr\u0131lar i\u00e7in h\u0131z kazan\u0131lacak\nllm = ChatOpenAI(model=\"gpt-4o\", temperature=0) # \u00d6nbellek otomatik olarak kullan\u0131lacak\n    <\/pre>\n<p><\/code>\n  <\/div>\n<p>Bu, \u00f6zellikle ajan\u0131n i\u00e7 d\u00f6ng\u00fclerinde ayn\u0131 LLM sorgular\u0131n\u0131n s\u0131k\u00e7a tekrarlanmas\u0131 durumunda b\u00fcy\u00fck bir performans art\u0131\u015f\u0131 sa\u011flar ve API maliyetlerini d\u00fc\u015f\u00fcr\u00fcr.<\/p>\n<h3>2. Ara\u00e7 Se\u00e7imi Optimizasyonu ve Prompt M\u00fchendisli\u011fi<\/h3>\n<p>Ajan\u0131n\u0131z\u0131n do\u011fru arac\u0131 do\u011fru zamanda se\u00e7ebilmesi, etkinli\u011finin anahtar\u0131d\u0131r. Bunu sa\u011flamak i\u00e7in:<\/p>\n<ul>\n<li><strong>Net Ara\u00e7 A\u00e7\u0131klamalar\u0131:<\/strong> Her arac\u0131n ne i\u015fe yarad\u0131\u011f\u0131n\u0131, hangi girdileri ald\u0131\u011f\u0131n\u0131 ve ne t\u00fcr \u00e7\u0131kt\u0131lar verdi\u011fini a\u00e7\u0131klayan net ve \u00f6zl\u00fc a\u00e7\u0131klamalar (docstring'ler) sa\u011flay\u0131n. LLM, bu a\u00e7\u0131klamalar\u0131 kullanarak hangi arac\u0131 kullanaca\u011f\u0131na karar verir.<\/li>\n<li><strong>Spesifik Prompt'lar:<\/strong> Ajan\u0131n amac\u0131n\u0131, k\u0131s\u0131tlamalar\u0131n\u0131 ve beklentilerinizi sistem prompt'unda a\u00e7\u0131k\u00e7a belirtin. \u00d6rne\u011fin, \"E\u011fer cevab\u0131 do\u011frudan bilmiyorsan, mutlaka 'search_web' arac\u0131n\u0131 kullan\" gibi talimatlar ekleyebilirsiniz.<\/li>\n<li><strong>\u00d6rnek Bazl\u0131 \u00d6\u011frenme (Few-shot Prompting):<\/strong> Ajan\u0131n belirli durumlarda nas\u0131l davranmas\u0131 gerekti\u011fini g\u00f6steren birka\u00e7 \u00f6rnek eklemek, karar verme yetene\u011fini \u00f6nemli \u00f6l\u00e7\u00fcde geli\u015ftirebilir.<\/li>\n<\/ul>\n<div class=\"expert-tip\">\n    Uzman \u0130pucu: Ajan\u0131n\u0131z\u0131n hangi ara\u00e7lar\u0131 se\u00e7ti\u011fini anlamak i\u00e7in LangSmith gibi izleme ara\u00e7lar\u0131n\u0131 kullan\u0131n. Bu, prompt'lar\u0131n\u0131zdaki veya ara\u00e7 a\u00e7\u0131klamalar\u0131n\u0131zdaki zay\u0131f noktalar\u0131 tespit etmenize yard\u0131mc\u0131 olacakt\u0131r.\n  <\/div>\n<h3>3. \u0130nsan M\u00fcdahalesi (Human-in-the-Loop) Stratejileri<\/h3>\n<p>Her ne kadar YZ ajanlar\u0131 otonom olsa da, kritik g\u00f6revlerde veya belirsiz durumlarda insan onay\u0131 veya m\u00fcdahalesi gerekebilir. LangGraph, bu senaryolar i\u00e7in m\u00fckemmel bir yap\u0131 sunar:<\/p>\n<ul>\n<li><strong>Onay Mekanizmalar\u0131:<\/strong> Ajan\u0131n kritik bir eylem yapmadan \u00f6nce (\u00f6rne\u011fin, bir veritaban\u0131 kayd\u0131n\u0131 de\u011fi\u015ftirmek) kullan\u0131c\u0131dan onay istemesini sa\u011flay\u0131n. Bunu, grafikteki ko\u015fullu bir kenarla ve bir \"insan onay\u0131\" d\u00fc\u011f\u00fcm\u00fcyle yapabilirsiniz.<\/li>\n<li><strong>Hata Kurtarma:<\/strong> Ajan bir hata ile kar\u015f\u0131la\u015ft\u0131\u011f\u0131nda veya bir arac\u0131 \u00e7al\u0131\u015ft\u0131ramad\u0131\u011f\u0131nda, durumu bir insan operat\u00f6re aktarabilir ve sorunu a\u00e7\u0131klayabilir.<\/li>\n<li><strong>\u00d6\u011frenme ve \u0130yile\u015ftirme:<\/strong> \u0130nsan m\u00fcdahaleleri, ajan\u0131n performans\u0131n\u0131 iyile\u015ftirmek i\u00e7in de\u011ferli geri bildirimler sa\u011flar. Bu veriler, ajan\u0131n gelecek s\u00fcr\u00fcmlerinde daha iyi karar vermesi i\u00e7in kullan\u0131labilir.<\/li>\n<\/ul>\n<h3>4. \u0130zlenebilirlik ve Kay\u0131t Tutma (Observability and Logging)<\/h3>\n<p>Ajan\u0131n davran\u0131\u015f\u0131n\u0131 anlamak ve sorunlar\u0131 gidermek i\u00e7in kapsaml\u0131 izleme ve kay\u0131t tutma kritik \u00f6neme sahiptir.<\/p>\n<ul>\n<li><strong>LangSmith:<\/strong> LangChain ve LangGraph projeleri i\u00e7in \u00f6zel olarak tasarlanm\u0131\u015f olan LangSmith, ajan\u0131n her ad\u0131m\u0131n\u0131, LLM \u00e7a\u011fr\u0131lar\u0131n\u0131, ara\u00e7 kullan\u0131mlar\u0131n\u0131 ve durum de\u011fi\u015fimlerini g\u00f6rselle\u015ftirmenizi sa\u011flar. Bu, hata ay\u0131klama ve performans analizi i\u00e7in vazge\u00e7ilmezdir.<\/li>\n<li><strong>Standart Loglama:<\/strong> Ajan\u0131n her d\u00fc\u011f\u00fcm\u00fcnde \u00f6nemli olaylar\u0131, kararlar\u0131 ve \u00e7\u0131kt\u0131lar\u0131 standart Python loglama k\u00fct\u00fcphanesi ile kaydedin. Bu kay\u0131tlar, sisteminizin genel sa\u011fl\u0131\u011f\u0131n\u0131 ve davran\u0131\u015f\u0131n\u0131 izlemenize yard\u0131mc\u0131 olur.<\/li>\n<\/ul>\n<h3>5. Mod\u00fclerlik ve Yeniden Kullan\u0131labilirlik<\/h3>\n<p>Ajan\u0131n\u0131z\u0131 olu\u015fturan d\u00fc\u011f\u00fcmleri ve ara\u00e7lar\u0131 m\u00fcmk\u00fcn oldu\u011funca mod\u00fcler tutun. Her d\u00fc\u011f\u00fcm tek bir sorumlulu\u011fa sahip olmal\u0131 ve kolayca test edilebilir olmal\u0131d\u0131r. Bu, kodu daha y\u00f6netilebilir hale getirir, hatalar\u0131 azalt\u0131r ve bile\u015fenleri farkl\u0131 projelerde yeniden kullanman\u0131z\u0131 sa\u011flar.<\/p>\n<h3>6. Maliyet Y\u00f6netimi<\/h3>\n<p>LLM API \u00e7a\u011fr\u0131lar\u0131 maliyetli olabilir. A\u015fa\u011f\u0131daki stratejileri g\u00f6z \u00f6n\u00fcnde bulundurun:<\/p>\n<ul>\n<li><strong>Daha K\u00fc\u00e7\u00fck Modeller:<\/strong> Geli\u015ftirme ve test a\u015famalar\u0131nda daha k\u00fc\u00e7\u00fck ve daha ucuz LLM modellerini kullan\u0131n.<\/li>\n<li><strong>Token Kullan\u0131m\u0131n\u0131 Azaltma:<\/strong> Prompt'lar\u0131 k\u0131sa ve \u00f6z tutun. Gereksiz bilgileri g\u00f6ndermekten ka\u00e7\u0131n\u0131n.<\/li>\n<li><strong>\u00c7\u0131k\u0131\u015f Kontrol\u00fc:<\/strong> LLM'den istenen \u00e7\u0131kt\u0131 format\u0131n\u0131 net bir \u015fekilde belirtin (JSON format\u0131 gibi), bu, gereksiz metin \u00fcretimini azaltabilir.<\/li>\n<\/ul>\n<p>Bu ipu\u00e7lar\u0131n\u0131 uygulayarak, LangGraph ajanlar\u0131n\u0131z\u0131n sadece i\u015flevsel olmakla kalmay\u0131p ayn\u0131 zamanda \u00fcretim ortam\u0131nda g\u00fcvenilir, performansl\u0131 ve s\u00fcrd\u00fcr\u00fclebilir olmas\u0131n\u0131 sa\u011flayabilirsiniz. Unutmay\u0131n, bir YZ ajan\u0131 in\u015fa etmek s\u00fcrekli bir iterasyon ve iyile\u015ftirme s\u00fcrecidir.<\/p>\n<h2>LangGraph Ajanlar\u0131n\u0131 Mobil Uygulamalarla Entegre Etmek M\u00fcmk\u00fcn m\u00fcd\u00fcr?<\/h2>\n<p>Evet, LangGraph ajanlar\u0131n\u0131 mobil uygulamalarla entegre etmek kesinlikle m\u00fcmk\u00fcnd\u00fcr ve giderek artan bir trenddir. Do\u011frudan mobil cihaz \u00fczerinde LangGraph kodunu \u00e7al\u0131\u015ft\u0131rmak yerine (ki bu genellikle pratik de\u011fildir ve cihaz kaynaklar\u0131n\u0131 zorlar), bu entegrasyon genellikle bir arka u\u00e7 (backend) API'si arac\u0131l\u0131\u011f\u0131yla ger\u00e7ekle\u015ftirilir. Mobil uygulama kullan\u0131c\u0131 aray\u00fcz\u00fcn\u00fc (UI) sa\u011flar ve kullan\u0131c\u0131 girdilerini LangGraph ajan\u0131n\u0131n \u00e7al\u0131\u015ft\u0131\u011f\u0131 arka uca g\u00f6nderir; arka u\u00e7 ise i\u015flenen yan\u0131t\u0131 mobil uygulamaya geri g\u00f6nderir.<\/p>\n<h3>Entegrasyon Mimarisi Nas\u0131l Olmal\u0131d\u0131r?<\/h3>\n<p>Temel entegrasyon mimarisi \u015fu ad\u0131mlar\u0131 i\u00e7erir:<\/p>\n<ol>\n<li><strong>Mobil Uygulama (\u00d6n U\u00e7):<\/strong> Kullan\u0131c\u0131 aray\u00fcz\u00fcn\u00fc sa\u011flar. Kullan\u0131c\u0131n\u0131n metin girdilerini al\u0131r ve ajandan gelen yan\u0131tlar\u0131 g\u00f6r\u00fcnt\u00fcler. Genellikle iOS i\u00e7in Swift\/Kotlin veya cross-platform \u00e7\u00f6z\u00fcmler (React Native, Flutter) ile geli\u015ftirilir.<\/li>\n<li><strong>Arka U\u00e7 API'si (Backend API):<\/strong> Bu, LangGraph ajan\u0131n\u0131z\u0131n \u00e7al\u0131\u015ft\u0131\u011f\u0131 sunucu taraf\u0131d\u0131r. Python ile Flask, FastAPI veya Django gibi web \u00e7er\u00e7eveleri kullan\u0131larak bir RESTful API veya GraphQL API olu\u015fturulur.<\/li>\n<li><strong>LangGraph Ajan\u0131:<\/strong> Arka u\u00e7 API'sinin bir par\u00e7as\u0131 olarak \u00e7al\u0131\u015f\u0131r. Mobil uygulamadan gelen iste\u011fi al\u0131r, LangGraph i\u015f ak\u0131\u015f\u0131n\u0131 \u00e7al\u0131\u015ft\u0131r\u0131r, ara\u00e7lar\u0131 kullan\u0131r ve bir yan\u0131t \u00fcretir.<\/li>\n<li><strong>Veritaban\u0131 (\u0130ste\u011fe Ba\u011fl\u0131):<\/strong> Ajan\u0131n sohbet ge\u00e7mi\u015fini, kullan\u0131c\u0131 tercihlerini veya di\u011fer durum bilgilerini kal\u0131c\u0131 olarak depolamak i\u00e7in kullan\u0131labilir.<\/li>\n<\/ol>\n<p><strong>Ak\u0131\u015f \u015eemas\u0131:<\/strong><\/p>\n<ul>\n<li>Kullan\u0131c\u0131 mobil uygulamadan bir sorgu g\u00f6nderir.<\/li>\n<li>Mobil uygulama (HTTP\/HTTPS \u00fczerinden) bu sorguyu arka u\u00e7 API'sine g\u00f6nderir.<\/li>\n<li>Arka u\u00e7 API'si, iste\u011fi al\u0131r ve LangGraph ajan\u0131n\u0131 \u00e7a\u011f\u0131r\u0131r.<\/li>\n<li>LangGraph ajan\u0131, sorguyu i\u015fler, gerekirse ara\u00e7lar\u0131 kullan\u0131r ve bir yan\u0131t olu\u015fturur.<\/li>\n<li>LangGraph ajan\u0131 yan\u0131t\u0131 arka u\u00e7 API'sine d\u00f6nd\u00fcr\u00fcr.<\/li>\n<li>Arka u\u00e7 API'si bu yan\u0131t\u0131 mobil uygulamaya geri g\u00f6nderir.<\/li>\n<li>Mobil uygulama, yan\u0131t\u0131 kullan\u0131c\u0131ya g\u00f6r\u00fcnt\u00fcler.<\/li>\n<\/ul>\n<h3>Neden Bu Yakla\u015f\u0131m Tercih Edilir?<\/h3>\n<ul>\n<li><strong>Performans:<\/strong> LLM'ler ve LangGraph i\u015flemleri genellikle yo\u011fun hesaplama gerektirir. Bunlar\u0131 bir sunucuda \u00e7al\u0131\u015ft\u0131rmak, mobil cihaz\u0131n pil \u00f6mr\u00fcn\u00fc korur ve daha h\u0131zl\u0131 yan\u0131t s\u00fcreleri sa\u011flar.<\/li>\n<li><strong>G\u00fcvenlik:<\/strong> LLM API anahtarlar\u0131 ve hassas i\u015f mant\u0131\u011f\u0131 sunucuda g\u00fcvende kal\u0131r, mobil uygulamadan s\u0131zd\u0131r\u0131lmas\u0131 riski azal\u0131r.<\/li>\n<li><strong>Esneklik:<\/strong> Ajan\u0131n mant\u0131\u011f\u0131n\u0131 sunucuda g\u00fcncelleyebilirsiniz, bu da mobil uygulamay\u0131 yeniden da\u011f\u0131tmadan yeni \u00f6zellikler eklemenizi veya iyile\u015ftirmeler yapman\u0131z\u0131 sa\u011flar.<\/li>\n<li><strong>\u00d6l\u00e7eklenebilirlik:<\/strong> Arka u\u00e7 sunucusu, gelen isteklere g\u00f6re \u00f6l\u00e7eklenebilir, bu da \u00e7ok say\u0131da mobil kullan\u0131c\u0131n\u0131n e\u015f zamanl\u0131 olarak ajan\u0131 kullanmas\u0131na olanak tan\u0131r.<\/li>\n<\/ul>\n<h3>Mobil Uyumlu HTML ve Kullan\u0131c\u0131 Aray\u00fcz\u00fc \u0130\u00e7in Ne D\u00fc\u015f\u00fcnmeliyiz?<\/h3>\n<p>Mobil uygulamalar genellikle kendi native UI bile\u015fenlerini kullan\u0131r, ancak e\u011fer web tabanl\u0131 bir aray\u00fcz (\u00f6rne\u011fin, WebView i\u00e7inde bir sohbet aray\u00fcz\u00fc) veya responsive bir web sitesi entegre ediyorsan\u0131z, HTML ve CSS'in mobil uyumlu olmas\u0131 \u00f6nemlidir. LangGraph ajan\u0131n\u0131n yan\u0131tlar\u0131 metin tabanl\u0131 olaca\u011f\u0131ndan, bu metnin mobil ekranlarda d\u00fczg\u00fcn g\u00f6r\u00fcnt\u00fclenmesi gerekir.<\/p>\n<p>\u0130\u015fte mobil uyumlu \u00e7\u0131kt\u0131lar\u0131 sa\u011flamak i\u00e7in basit bir CSS medya sorgusu \u00f6rne\u011fi:<\/p>\n<div class=\"code-example\">\n<pre><code class=\"language-html\">\n<style>\n  \/* Genel stil, geni\u015f ekranlar i\u00e7in *\/\n  .agent-output-container {\n    width: 80%;\n    max-width: 900px;\n    margin: 20px auto;\n    padding: 15px;\n    border: 1px solid #ddd;\n    border-radius: 8px;\n    background-color: #f9f9f9;\n    font-family: Arial, sans-serif;\n    line-height: 1.6;\n    box-shadow: 0 2px 4px rgba(0,0,0,0.1);\n  }\n\n  \/* Ba\u015fl\u0131klar i\u00e7in stil *\/\n  .agent-output-container h3 {\n    color: #333;\n    font-size: 1.2em;\n    margin-bottom: 10px;\n  }\n\n  \/* Paragraflar i\u00e7in stil *\/\n  .agent-output-container p {\n    color: #555;\n    font-size: 0.95em;\n    margin-bottom: 8px;\n  }\n\n  \/* Mobil cihazlar i\u00e7in medya sorgusu *\/\n  @media (max-width: 768px) {\n    .agent-output-container {\n      width: 95%; \/* K\u00fc\u00e7\u00fck ekranlarda daha geni\u015f alan kapla *\/\n      margin: 10px auto; \/* Kenar bo\u015fluklar\u0131n\u0131 azalt *\/\n      padding: 10px; \/* \u0130\u00e7 bo\u015fluklar\u0131 azalt *\/\n      font-size: 0.9em; \/* Yaz\u0131 boyutunu biraz k\u00fc\u00e7\u00fclt *\/\n    }\n    .agent-output-container h3 {\n      font-size: 1.1em;\n    }\n  }\n\n  \/* \u00c7ok k\u00fc\u00e7\u00fck cihazlar i\u00e7in (\u00f6rne\u011fin, iPhone SE) *\/\n  @media (max-width: 480px) {\n    .agent-output-container {\n      width: 98%;\n      padding: 8px;\n      font-size: 0.85em;\n    }\n    .agent-output-container h3 {\n      font-size: 1em;\n    }\n  }\n<\/style>\n\n<div class=\"agent-output-container\">\n  <h3>Ajan\u0131n\u0131zdan Gelen Yan\u0131t<\/h3>\n  <p>Mobil cihaz\u0131n\u0131zda LangGraph ajan\u0131n\u0131n yan\u0131tlar\u0131 bu \u015f\u0131k ve duyarl\u0131 kutunun i\u00e7inde g\u00f6r\u00fcnt\u00fclenecektir. Tasar\u0131m, ekran boyutuna g\u00f6re otomatik olarak ayarlanarak en iyi okuma deneyimini sunar.<\/p>\n  <p>\u00d6rne\u011fin, \"LangGraph nedir?\" diye sordu\u011funuzda gelen cevap burada yer alabilir. Arka u\u00e7 sunucusu, cevab\u0131 JSON format\u0131nda g\u00f6nderecek ve mobil uygulaman\u0131z bu JSON'u ayr\u0131\u015ft\u0131rarak burada g\u00f6sterecektir.<\/p>\n<\/div>\n    <\/pre>\n<p><\/code>\n  <\/div>\n<p>Bu \u00f6rnek, <code>agent-output-container<\/code> adl\u0131 bir <code>div<\/code> \u00f6\u011fesinin nas\u0131l responsive hale getirilece\u011fini g\u00f6stermektedir. CSS medya sorgular\u0131, farkl\u0131 ekran boyutlar\u0131na g\u00f6re elementlerin geni\u015fli\u011fini, dolgu de\u011ferlerini ve yaz\u0131 tiplerini ayarlayarak kullan\u0131c\u0131 deneyimini optimize eder.<\/p>\n<p>Sonu\u00e7 olarak, LangGraph ajanlar\u0131n\u0131 mobil uygulamalarla entegre etmek, kullan\u0131c\u0131lara g\u00fc\u00e7l\u00fc YZ yeteneklerini avu\u00e7lar\u0131n\u0131n i\u00e7inde sunman\u0131n etkili bir yoludur. Do\u011fru mimari ve dikkatli bir kullan\u0131c\u0131 aray\u00fcz\u00fc tasar\u0131m\u0131 ile bu entegrasyon olduk\u00e7a ba\u015far\u0131l\u0131 olabilir.<\/p>\n<h2>Sonu\u00e7: LangGraph ile Gelece\u011fin Ajanlar\u0131n\u0131 \u0130n\u015fa Etmek<\/h2>\n<p>Bu kapsaml\u0131 makale boyunca, LangGraph'\u0131n temelinden ba\u015flayarak karma\u015f\u0131k yapay zeka ajanlar\u0131 in\u015fa etme s\u00fcrecini ad\u0131m ad\u0131m inceledik. LangGraph'\u0131n, geleneksel LangChain zincirlerinin \u00f6tesine ge\u00e7erek durum y\u00f6netimi, d\u00f6ng\u00fcsel grafikler ve insan m\u00fcdahalesi gibi kritik yetenekler sunarak nas\u0131l daha ak\u0131ll\u0131 ve g\u00fcvenilir YZ uygulamalar\u0131 geli\u015ftirmemizi sa\u011flad\u0131\u011f\u0131n\u0131 g\u00f6rd\u00fck. \u0130lk \"Ara\u015ft\u0131rma Ajan\u0131m\u0131z\u0131\" olu\u015ftururken, bir ajan\u0131n durumunu tan\u0131mlamaktan, ara\u00e7lar\u0131 entegre etmeye, d\u00fc\u011f\u00fcmleri ve ko\u015fullu kenarlar\u0131 kullanarak dinamik i\u015f ak\u0131\u015flar\u0131 olu\u015fturmaya kadar her a\u015famay\u0131 uygulamal\u0131 olarak deneyimledik. Ayr\u0131ca, m\u00fc\u015fteri hizmetleri, ara\u015ft\u0131rma ve kod inceleme gibi ger\u00e7ek d\u00fcnya senaryolar\u0131ndaki potansiyelini vaka analizleriyle peki\u015ftirdik.<\/p>\n<p>LangGraph ile ajan geli\u015ftirirken performans\u0131 ve g\u00fcvenilirli\u011fi art\u0131rmak i\u00e7in \u00f6nbellekleme, optimize edilmi\u015f prompt m\u00fchendisli\u011fi, insan-in-the-loop stratejileri ve kapsaml\u0131 izleme gibi tekniklerin \u00f6nemini vurgulad\u0131k. Bu stratejiler, ajans\u0131n\u0131z\u0131n sadece i\u015flevsel de\u011fil, ayn\u0131 zamanda verimli ve s\u00fcrd\u00fcr\u00fclebilir olmas\u0131n\u0131 sa\u011flar. Mobil uygulamalarla entegrasyon konusundaki tart\u0131\u015fmam\u0131z ise, LangGraph ajanlar\u0131n\u0131n geni\u015f bir platform yelpazesinde nas\u0131l da\u011f\u0131t\u0131labilece\u011fine dair pratik bir bak\u0131\u015f a\u00e7\u0131s\u0131 sundu. Bir arka u\u00e7 API'si arac\u0131l\u0131\u011f\u0131yla mobil entegrasyonun hem g\u00fcvenlik hem de performans a\u00e7\u0131s\u0131ndan en iyi uygulama oldu\u011funu ve responsive HTML tasar\u0131mlar\u0131n\u0131n kullan\u0131c\u0131 deneyimini nas\u0131l iyile\u015ftirebilece\u011fini g\u00f6rd\u00fck.<\/p>\n<p>LangGraph, b\u00fcy\u00fck dil modellerinin potansiyelini tam anlam\u0131yla ortaya \u00e7\u0131karan, karma\u015f\u0131k ve otonom YZ ajanlar\u0131 yaratmak i\u00e7in g\u00fc\u00e7l\u00fc ve esnek bir \u00e7er\u00e7evedir. Bu teknolojiye hakim olmak, geli\u015ftiricilere sadece bug\u00fcn\u00fcn problemlerini \u00e7\u00f6zmekle kalmay\u0131p, ayn\u0131 zamanda gelece\u011fin yapay zeka odakl\u0131 uygulamalar\u0131n\u0131 \u015fekillendirme g\u00fcc\u00fc verir. Art\u0131k bu temellerle donanm\u0131\u015f olarak, kendi benzersiz fikirlerinizi hayata ge\u00e7irmek ve LangGraph ile daha da karma\u015f\u0131k, yenilik\u00e7i ajanlar in\u015fa etmek i\u00e7in haz\u0131rs\u0131n\u0131z. Unutmay\u0131n, \u00f6\u011frenme ve deneme s\u00fcreci devaml\u0131d\u0131r. Kendi projeleriniz \u00fczerinde \u00e7al\u0131\u015fmaya devam ederek ve toplulukla etkile\u015fimde bulunarak bilginizi s\u00fcrekli geni\u015fletin. Gelecek, LangGraph gibi ara\u00e7larla in\u015fa edilen zeki sistemlerin ellerindedir.<\/p>\n<h3>S\u0131k\u00e7a Sorulan Sorular (SSS)<\/h3>\n<ul>\n<li>\n<h4>LangGraph ve LangChain aras\u0131ndaki temel fark nedir?<\/h4>\n<p>LangChain, LLM'lerle uygulama geli\u015ftirmek i\u00e7in geni\u015f bir mod\u00fcler ara\u00e7 setidir (LLM'ler, prompt'lar, zincirler, ara\u00e7lar). LangGraph ise LangChain \u00fczerine in\u015fa edilmi\u015f, \u00f6zellikle durum odakl\u0131 (stateful) ve d\u00f6ng\u00fcsel (cyclical) grafikler kullanarak daha karma\u015f\u0131k, \u00e7ok akt\u00f6rl\u00fc ve otonom ajanlar olu\u015fturmaya odaklanm\u0131\u015f bir k\u00fct\u00fcphanedir. LangGraph, LangChain'in sundu\u011fu bile\u015fenleri bir araya getirerek daha geli\u015fmi\u015f i\u015f ak\u0131\u015flar\u0131 ve karar alma mekanizmalar\u0131 sa\u011flar.<\/p>\n<\/li>\n<li>\n<h4>LangGraph \u00f6\u011frenmek i\u00e7in \u00f6nko\u015fullar nelerdir?<\/h4>\n<p>LangGraph \u00f6\u011frenmek i\u00e7in temel Python programlama bilgisi ve LangChain'in anahtar kavramlar\u0131na (LLM'ler, prompt'lar, ara\u00e7lar) a\u015final\u0131k faydal\u0131d\u0131r. Ayr\u0131ca, bir LLM API'sine (\u00f6rne\u011fin, OpenAI) eri\u015fiminiz ve API anahtarlar\u0131n\u0131 ortam de\u011fi\u015fkenleri olarak ayarlama yetene\u011finiz olmal\u0131d\u0131r.<\/p>\n<\/li>\n<li>\n<h4>Hangi LLM'lerle LangGraph kullanabilirim?<\/h4>\n<p>LangGraph, LangChain ile entegre oldu\u011fu i\u00e7in LangChain'in destekledi\u011fi t\u00fcm B\u00fcy\u00fck Dil Modelleri (LLM'ler) ile uyumludur. Bu genellikle OpenAI (GPT-3.5, GPT-4), Anthropic (Claude), Google (Gemini), Hugging Face modelleri ve di\u011fer bir\u00e7ok LLM sa\u011flay\u0131c\u0131s\u0131n\u0131 i\u00e7erir. Model se\u00e7imi, projenizin gereksinimlerine ve maliyet k\u0131s\u0131tlamalar\u0131na ba\u011fl\u0131d\u0131r.<\/p>\n<\/li>\n<li>\n<h4>LangGraph ajanlar\u0131 \u00fcretim ortam\u0131nda kullan\u0131labilir mi?<\/h4>\n<p>Evet, LangGraph ajanlar\u0131 \u00fcretim ortam\u0131nda kullan\u0131labilir ve karma\u015f\u0131k g\u00f6revleri otomatikle\u015ftirmek i\u00e7in tasarlanm\u0131\u015ft\u0131r. Ancak \u00fcretimde kullanmadan \u00f6nce kapsaml\u0131 test, performans optimizasyonu, g\u00fcvenlik denetimleri ve izleme (LangSmith gibi ara\u00e7larla) yap\u0131lmas\u0131 \u00f6nemlidir. \u0130nsan-in-the-loop stratejileri, ajan\u0131n g\u00fcvenilirli\u011fini art\u0131rarak \u00fcretimde daha sa\u011flam \u00e7al\u0131\u015fmas\u0131na yard\u0131mc\u0131 olabilir.<\/p>\n<\/li>\n<li>\n<h4>LangGraph'\u0131n dezavantajlar\u0131 var m\u0131d\u0131r?<\/h4>\n<p>LangGraph'\u0131n g\u00fc\u00e7l\u00fc yetenekleri olmas\u0131na ra\u011fmen, baz\u0131 dezavantajlar\u0131 olabilir. \u00d6\u011frenme e\u011frisi, \u00f6zellikle LangChain ve grafik teorisine yeni ba\u015flayanlar i\u00e7in biraz dik olabilir. Ayr\u0131ca, \u00e7ok karma\u015f\u0131k grafikler tasarlamak ve hata ay\u0131klamak, basit do\u011frusal zincirlere g\u00f6re daha fazla \u00e7aba gerektirebilir. LLM \u00e7a\u011fr\u0131lar\u0131n\u0131n maliyeti ve h\u0131z\u0131 da b\u00fcy\u00fck \u00f6l\u00e7ekli uygulamalarda dikkate al\u0131nmas\u0131 gereken fakt\u00f6rlerdir.<\/p>\n<\/li>\n<\/ul>\n<p><\/body><\/p>\n","protected":false},"excerpt":{"rendered":"LangGraph ile etkile\u015fimli ve ak\u0131ll\u0131 yapay zeka ajanlar\u0131 in\u015fa etmenin temel ad\u0131mlar\u0131n\u0131 ke\u015ffedin. Bu kapsaml\u0131 rehberde, LangChain \u00fczerine&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-34992","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>LangGraph ile \u0130lk Yapay Zeka Ajan\u0131n\u0131z\u0131 Olu\u015fturun: Ad\u0131m Ad\u0131m Rehber<\/title>\n<meta name=\"description\" content=\"LangGraph ile etkile\u015fimli ve ak\u0131ll\u0131 yapay zeka ajanlar\u0131 in\u015fa etmenin temel ad\u0131mlar\u0131n\u0131 ke\u015ffedin. Bu kapsaml\u0131 rehberde, LangChain \u00fczerine kurulu bu g\u00fc\u00e7l\u00fc \u00e7er\u00e7eveyi s\u0131f\u0131rdan \u00f6\u011frenerek ilk otonom ajan\u0131n\u0131z\u0131 nas\u0131l olu\u015fturaca\u011f\u0131n\u0131z\u0131 ad\u0131m ad\u0131m inceleyece\u011fiz. Modern AI uygulamalar\u0131nda devrim yaratan bu teknolojiyi kullanarak karma\u015f\u0131k problemleri \u00e7\u00f6zmeye haz\u0131r olun.\" \/>\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\/langgraph-ile-ilk-yapay-zeka-ajaninizi-olusturun-adim-adim-rehber\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"LangGraph ile \u0130lk Yapay Zeka Ajan\u0131n\u0131z\u0131 Olu\u015fturun: Ad\u0131m Ad\u0131m Rehber\" \/>\n<meta property=\"og:description\" content=\"LangGraph ile etkile\u015fimli ve ak\u0131ll\u0131 yapay zeka ajanlar\u0131 in\u015fa etmenin temel ad\u0131mlar\u0131n\u0131 ke\u015ffedin. Bu kapsaml\u0131 rehberde, LangChain \u00fczerine kurulu bu g\u00fc\u00e7l\u00fc \u00e7er\u00e7eveyi s\u0131f\u0131rdan \u00f6\u011frenerek ilk otonom ajan\u0131n\u0131z\u0131 nas\u0131l olu\u015fturaca\u011f\u0131n\u0131z\u0131 ad\u0131m ad\u0131m inceleyece\u011fiz. Modern AI uygulamalar\u0131nda devrim yaratan bu teknolojiyi kullanarak karma\u015f\u0131k problemleri \u00e7\u00f6zmeye haz\u0131r olun.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/langgraph-ile-ilk-yapay-zeka-ajaninizi-olusturun-adim-adim-rehber\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2025-11-24T11:31:26+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\/langgraph-ile-ilk-yapay-zeka-ajaninizi-olusturun-adim-adim-rehber\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/langgraph-ile-ilk-yapay-zeka-ajaninizi-olusturun-adim-adim-rehber\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"LangGraph ile \u0130lk Yapay Zeka Ajan\u0131n\u0131z\u0131 Olu\u015fturun: Ad\u0131m Ad\u0131m Rehber\",\"datePublished\":\"2025-11-24T11:31:26+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/langgraph-ile-ilk-yapay-zeka-ajaninizi-olusturun-adim-adim-rehber\/\"},\"wordCount\":5721,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/langgraph-ile-ilk-yapay-zeka-ajaninizi-olusturun-adim-adim-rehber\/#respond\"]}],\"copyrightYear\":\"2025\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/langgraph-ile-ilk-yapay-zeka-ajaninizi-olusturun-adim-adim-rehber\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/langgraph-ile-ilk-yapay-zeka-ajaninizi-olusturun-adim-adim-rehber\/\",\"name\":\"LangGraph ile \u0130lk Yapay Zeka Ajan\u0131n\u0131z\u0131 Olu\u015fturun: Ad\u0131m Ad\u0131m Rehber\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2025-11-24T11:31:26+00:00\",\"description\":\"LangGraph ile etkile\u015fimli ve ak\u0131ll\u0131 yapay zeka ajanlar\u0131 in\u015fa etmenin temel ad\u0131mlar\u0131n\u0131 ke\u015ffedin. Bu kapsaml\u0131 rehberde, LangChain \u00fczerine kurulu bu g\u00fc\u00e7l\u00fc \u00e7er\u00e7eveyi s\u0131f\u0131rdan \u00f6\u011frenerek ilk otonom ajan\u0131n\u0131z\u0131 nas\u0131l olu\u015fturaca\u011f\u0131n\u0131z\u0131 ad\u0131m ad\u0131m inceleyece\u011fiz. Modern AI uygulamalar\u0131nda devrim yaratan bu teknolojiyi kullanarak karma\u015f\u0131k problemleri \u00e7\u00f6zmeye haz\u0131r olun.\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/langgraph-ile-ilk-yapay-zeka-ajaninizi-olusturun-adim-adim-rehber\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/langgraph-ile-ilk-yapay-zeka-ajaninizi-olusturun-adim-adim-rehber\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/langgraph-ile-ilk-yapay-zeka-ajaninizi-olusturun-adim-adim-rehber\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"LangGraph ile \u0130lk Yapay Zeka Ajan\u0131n\u0131z\u0131 Olu\u015fturun: Ad\u0131m Ad\u0131m Rehber\"}]},{\"@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":"LangGraph ile \u0130lk Yapay Zeka Ajan\u0131n\u0131z\u0131 Olu\u015fturun: Ad\u0131m Ad\u0131m Rehber","description":"LangGraph ile etkile\u015fimli ve ak\u0131ll\u0131 yapay zeka ajanlar\u0131 in\u015fa etmenin temel ad\u0131mlar\u0131n\u0131 ke\u015ffedin. Bu kapsaml\u0131 rehberde, LangChain \u00fczerine kurulu bu g\u00fc\u00e7l\u00fc \u00e7er\u00e7eveyi s\u0131f\u0131rdan \u00f6\u011frenerek ilk otonom ajan\u0131n\u0131z\u0131 nas\u0131l olu\u015fturaca\u011f\u0131n\u0131z\u0131 ad\u0131m ad\u0131m inceleyece\u011fiz. Modern AI uygulamalar\u0131nda devrim yaratan bu teknolojiyi kullanarak karma\u015f\u0131k problemleri \u00e7\u00f6zmeye haz\u0131r olun.","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\/langgraph-ile-ilk-yapay-zeka-ajaninizi-olusturun-adim-adim-rehber\/","og_locale":"tr_TR","og_type":"article","og_title":"LangGraph ile \u0130lk Yapay Zeka Ajan\u0131n\u0131z\u0131 Olu\u015fturun: Ad\u0131m Ad\u0131m Rehber","og_description":"LangGraph ile etkile\u015fimli ve ak\u0131ll\u0131 yapay zeka ajanlar\u0131 in\u015fa etmenin temel ad\u0131mlar\u0131n\u0131 ke\u015ffedin. Bu kapsaml\u0131 rehberde, LangChain \u00fczerine kurulu bu g\u00fc\u00e7l\u00fc \u00e7er\u00e7eveyi s\u0131f\u0131rdan \u00f6\u011frenerek ilk otonom ajan\u0131n\u0131z\u0131 nas\u0131l olu\u015fturaca\u011f\u0131n\u0131z\u0131 ad\u0131m ad\u0131m inceleyece\u011fiz. Modern AI uygulamalar\u0131nda devrim yaratan bu teknolojiyi kullanarak karma\u015f\u0131k problemleri \u00e7\u00f6zmeye haz\u0131r olun.","og_url":"https:\/\/fatihsoysal.com\/blog\/langgraph-ile-ilk-yapay-zeka-ajaninizi-olusturun-adim-adim-rehber\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2025-11-24T11:31:26+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\/langgraph-ile-ilk-yapay-zeka-ajaninizi-olusturun-adim-adim-rehber\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/langgraph-ile-ilk-yapay-zeka-ajaninizi-olusturun-adim-adim-rehber\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"LangGraph ile \u0130lk Yapay Zeka Ajan\u0131n\u0131z\u0131 Olu\u015fturun: Ad\u0131m Ad\u0131m Rehber","datePublished":"2025-11-24T11:31:26+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/langgraph-ile-ilk-yapay-zeka-ajaninizi-olusturun-adim-adim-rehber\/"},"wordCount":5721,"commentCount":0,"publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihsoysal.com\/blog\/langgraph-ile-ilk-yapay-zeka-ajaninizi-olusturun-adim-adim-rehber\/#respond"]}],"copyrightYear":"2025","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/langgraph-ile-ilk-yapay-zeka-ajaninizi-olusturun-adim-adim-rehber\/","url":"https:\/\/fatihsoysal.com\/blog\/langgraph-ile-ilk-yapay-zeka-ajaninizi-olusturun-adim-adim-rehber\/","name":"LangGraph ile \u0130lk Yapay Zeka Ajan\u0131n\u0131z\u0131 Olu\u015fturun: Ad\u0131m Ad\u0131m Rehber","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2025-11-24T11:31:26+00:00","description":"LangGraph ile etkile\u015fimli ve ak\u0131ll\u0131 yapay zeka ajanlar\u0131 in\u015fa etmenin temel ad\u0131mlar\u0131n\u0131 ke\u015ffedin. Bu kapsaml\u0131 rehberde, LangChain \u00fczerine kurulu bu g\u00fc\u00e7l\u00fc \u00e7er\u00e7eveyi s\u0131f\u0131rdan \u00f6\u011frenerek ilk otonom ajan\u0131n\u0131z\u0131 nas\u0131l olu\u015fturaca\u011f\u0131n\u0131z\u0131 ad\u0131m ad\u0131m inceleyece\u011fiz. Modern AI uygulamalar\u0131nda devrim yaratan bu teknolojiyi kullanarak karma\u015f\u0131k problemleri \u00e7\u00f6zmeye haz\u0131r olun.","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/langgraph-ile-ilk-yapay-zeka-ajaninizi-olusturun-adim-adim-rehber\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/langgraph-ile-ilk-yapay-zeka-ajaninizi-olusturun-adim-adim-rehber\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/langgraph-ile-ilk-yapay-zeka-ajaninizi-olusturun-adim-adim-rehber\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"LangGraph ile \u0130lk Yapay Zeka Ajan\u0131n\u0131z\u0131 Olu\u015fturun: Ad\u0131m Ad\u0131m Rehber"}]},{"@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\/34992","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=34992"}],"version-history":[{"count":0,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/34992\/revisions"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=34992"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=34992"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=34992"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}