{"id":37837,"date":"2026-01-16T16:00:40","date_gmt":"2026-01-16T13:00:40","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/langchain-ifade-dili-lcel-uzmanligi-dallanma-paralellik-ve-akis\/"},"modified":"2026-01-16T16:00:40","modified_gmt":"2026-01-16T13:00:40","slug":"langchain-ifade-dili-lcel-uzmanligi-dallanma-paralellik-ve-akis","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/langchain-ifade-dili-lcel-uzmanligi-dallanma-paralellik-ve-akis\/","title":{"rendered":"LangChain \u0130fade Dili (LCEL) Uzmanl\u0131\u011f\u0131: Dallanma, Paralellik ve Ak\u0131\u015f"},"content":{"rendered":"<h2>LangChain \u0130fade Dili (LCEL) Uzmanl\u0131\u011f\u0131: Dallanma, Paralellik ve Ak\u0131\u015f<\/h2>\n<p>Yapay zeka uygulamalar\u0131 geli\u015ftirirken, \u00f6zellikle b\u00fcy\u00fck dil modelleri (LLM&#8217;ler) ile \u00e7al\u0131\u015f\u0131rken, karma\u015f\u0131k i\u015f ak\u0131\u015flar\u0131n\u0131 y\u00f6netmek ve optimize etmek kritik \u00f6neme sahiptir. LangChain Expression Language (LCEL), bu ihtiyac\u0131 kar\u015f\u0131lamak \u00fczere tasarlanm\u0131\u015f g\u00fc\u00e7l\u00fc bir ara\u00e7t\u0131r. LCEL, zincirleri mod\u00fcler, esnek ve performansl\u0131 bir \u015fekilde olu\u015fturman\u0131z\u0131, dallanma, paralellik ve ak\u0131\u015f gibi geli\u015fmi\u015f \u00f6zelliklerden faydalanman\u0131z\u0131 sa\u011flar. Bu makalede, LCEL&#8217;in temel prensiplerini, dallanma, paralellik ve ak\u0131\u015f yeteneklerini derinlemesine inceleyecek, ger\u00e7ek d\u00fcnya senaryolar\u0131yla destekleyerek bu g\u00fc\u00e7l\u00fc arac\u0131 nas\u0131l ustal\u0131kla kullanaca\u011f\u0131n\u0131z\u0131 g\u00f6sterece\u011fiz.<\/p>\n<h3>LangChain \u0130fade Dili (LCEL) Nedir ve Neden \u00d6nemlidir?<\/h3>\n<p>LangChain, LLM destekli uygulamalar geli\u015ftirmek i\u00e7in bir \u00e7er\u00e7eve sunar. LCEL ise bu \u00e7er\u00e7evenin kalbinde yer alan, zincirleri olu\u015fturmak ve birle\u015ftirmek i\u00e7in kullan\u0131lan deklaratif bir dil ve \u00e7al\u0131\u015fma zaman\u0131 sistemidir. Geleneksel programlama yakla\u015f\u0131mlar\u0131na k\u0131yasla daha okunabilir, mod\u00fcler ve performansl\u0131 zincirler olu\u015fturman\u0131z\u0131 sa\u011flar.<\/p>\n<h4>LCEL&#8217;in Temel Yap\u0131 Ta\u015flar\u0131<\/h4>\n<p>LCEL, <code>Runnable<\/code> ad\u0131 verilen temel birimler \u00fczerine kuruludur. Her <code>Runnable<\/code>, belirli bir giri\u015fi al\u0131r, bir i\u015flem ger\u00e7ekle\u015ftirir ve bir \u00e7\u0131kt\u0131 \u00fcretir. Bu <code>Runnable<\/code>&#8216;lar, <code>|<\/code> operat\u00f6r\u00fc ile birle\u015ftirilerek zincirler olu\u015fturulur. LCEL&#8217;in sa\u011flad\u0131\u011f\u0131 soyutlama sayesinde, zincirin her bir ad\u0131m\u0131n\u0131 ba\u011f\u0131ms\u0131z olarak test edebilir, de\u011fi\u015ftirebilir ve yeniden kullanabilirsiniz.<\/p>\n<pre><code class=\"language-python\">from langchain_core.runnables import RunnablePassthrough\nfrom langchain_core.prompts import ChatPromptTemplate\nfrom langchain_openai import ChatOpenAI\n\n# Basit bir LCEL zinciri \u00f6rne\u011fi\nprompt = ChatPromptTemplate.from_template(\"Bana {konu} hakk\u0131nda k\u0131sa bir bilgi ver.\")\nmodel = ChatOpenAI(model=\"gpt-3.5-turbo\")\n\nchain = {\"konu\": RunnablePassthrough()} | prompt | model\nresponse = chain.invoke({\"konu\": \"LangChain\"})\nprint(response.content)\n<\/pre>\n<p><\/code><\/p>\n<h4>Geleneksel Zincirlere G\u00f6re Avantajlar\u0131<\/h4>\n<p>LCEL, geleneksel LangChain zincirlerine g\u00f6re bir\u00e7ok avantaj sunar:<\/p>\n<ul>\n<li><strong>Mod\u00fclerlik:<\/strong> Her ad\u0131m ba\u011f\u0131ms\u0131z bir <code>Runnable<\/code> oldu\u011fu i\u00e7in, zincirler daha kolay y\u00f6netilir ve bak\u0131m\u0131 yap\u0131l\u0131r.<\/li>\n<li><strong>Esneklik:<\/strong> Zincirleri dinamik olarak de\u011fi\u015ftirebilir, farkl\u0131 ko\u015fullara g\u00f6re dalland\u0131rabilir veya paralel \u00e7al\u0131\u015ft\u0131rabilirsiniz.<\/li>\n<li><strong>Performans:<\/strong> Paralel \u00e7al\u0131\u015fma ve ak\u0131\u015f gibi \u00f6zellikler sayesinde daha verimli ve h\u0131zl\u0131 uygulamalar geli\u015ftirilebilir.<\/li>\n<li><strong>Test Edilebilirlik:<\/strong> Her <code>Runnable<\/code> ba\u011f\u0131ms\u0131z olarak test edilebilir, bu da hata ay\u0131klamay\u0131 kolayla\u015ft\u0131r\u0131r.<\/li>\n<li><strong>Geni\u015fletilebilirlik:<\/strong> Kendi \u00f6zel <code>Runnable<\/code>'lar\u0131n\u0131z\u0131 olu\u015fturarak LCEL'i ihtiya\u00e7lar\u0131n\u0131za g\u00f6re geni\u015fletebilirsiniz.<\/li>\n<\/ul>\n<h4>Zincir Olu\u015fturmada Mod\u00fclerlik ve Esneklik<\/h4>\n<p>LCEL ile zincirler, Lego bloklar\u0131 gibi birle\u015ftirilebilir. Bu mod\u00fcler yap\u0131, karma\u015f\u0131k sistemleri daha k\u00fc\u00e7\u00fck, y\u00f6netilebilir par\u00e7alara ay\u0131rman\u0131za olanak tan\u0131r. \u00d6rne\u011fin, bir metin \u00f6zetleme ad\u0131m\u0131n\u0131, farkl\u0131 bir ba\u011flamda soru-cevap sistemi i\u00e7inde de kullanabilirsiniz. Bu yeniden kullan\u0131labilirlik, geli\u015ftirme s\u00fcrecini h\u0131zland\u0131r\u0131r ve kod tekrar\u0131n\u0131 azalt\u0131r.<\/p>\n<h3>LCEL ile Dallanma (Branching): Ak\u0131ll\u0131 Karar Mekanizmalar\u0131<\/h3>\n<p>Dallanma, bir i\u015f ak\u0131\u015f\u0131n\u0131n belirli ko\u015fullara g\u00f6re farkl\u0131 yollar izlemesini sa\u011flayan temel bir programlama konseptidir. LCEL'de bu yetenek, <code>RunnableBranch<\/code> s\u0131n\u0131f\u0131 arac\u0131l\u0131\u011f\u0131yla g\u00fc\u00e7l\u00fc bir \u015fekilde uygulan\u0131r. Bu sayede, uygulaman\u0131z\u0131n giri\u015fine veya ara sonu\u00e7lara g\u00f6re dinamik olarak farkl\u0131 zincirleri veya modelleri tetikleyebilirsiniz.<\/p>\n<h4><code>RunnableBranch<\/code> Kullan\u0131m\u0131 ve Ko\u015fullu Mant\u0131k<\/h4>\n<p><code>RunnableBranch<\/code>, bir ko\u015ful listesi ve her ko\u015fula kar\u015f\u0131l\u0131k gelen bir <code>Runnable<\/code>'dan olu\u015fur. \u0130lk e\u015fle\u015fen ko\u015fulun <code>Runnable<\/code>'\u0131 y\u00fcr\u00fct\u00fcl\u00fcr. E\u011fer hi\u00e7bir ko\u015ful e\u015fle\u015fmezse, iste\u011fe ba\u011fl\u0131 bir varsay\u0131lan <code>Runnable<\/code> \u00e7al\u0131\u015ft\u0131r\u0131l\u0131r. Bu yap\u0131, karma\u015f\u0131k karar a\u011fa\u00e7lar\u0131n\u0131 basit ve okunabilir bir \u015fekilde olu\u015fturman\u0131za olanak tan\u0131r.<\/p>\n<pre><code class=\"language-python\">from langchain_core.runnables import RunnableBranch, RunnableLambda\nfrom langchain_core.prompts import ChatPromptTemplate\nfrom langchain_openai import ChatOpenAI\n\nmodel = ChatOpenAI(model=\"gpt-3.5-turbo\")\n\n# Ko\u015ful fonksiyonlar\u0131\ndef is_greeting(text: str) -> bool:\n    return \"merhaba\" in text.lower() or \"selam\" in text.lower()\n\ndef is_question(text: str) -> bool:\n    return \"?\" in text\n\n# Dallanma zinciri\nbranch = RunnableBranch(\n    (is_greeting, ChatPromptTemplate.from_template(\"Merhaba! Sana nas\u0131l yard\u0131mc\u0131 olabilirim?\") | model),\n    (is_question, ChatPromptTemplate.from_template(\"Sorunuz: {input}. Cevaplamaya \u00e7al\u0131\u015f\u0131yorum.\") | model),\n    ChatPromptTemplate.from_template(\"Anlamad\u0131m: {input}. L\u00fctfen daha a\u00e7\u0131k konu\u015fur musunuz?\") | model # Varsay\u0131lan\n)\n\nprint(branch.invoke(\"Selam, nas\u0131ls\u0131n?\").content)\nprint(branch.invoke(\"LangChain nedir?\").content)\nprint(branch.invoke(\"Bug\u00fcn hava \u00e7ok g\u00fczel.\").content)\n<\/pre>\n<p><\/code><\/p>\n<h4>Dinamik Y\u00f6nlendirme Senaryolar\u0131<\/h4>\n<p>Dallanma, \u00e7e\u015fitli dinamik y\u00f6nlendirme senaryolar\u0131nda kullan\u0131labilir:<\/p>\n<ul>\n<li><strong>Dil Tespiti:<\/strong> Kullan\u0131c\u0131n\u0131n girdi\u011fi dile g\u00f6re farkl\u0131 dil modellerini veya \u00e7eviri zincirlerini tetikleme.<\/li>\n<li><strong>Niyet Tan\u0131ma:<\/strong> Kullan\u0131c\u0131n\u0131n niyetine (\u00f6rne\u011fin, sipari\u015f verme, bilgi alma, \u015fikayet) g\u00f6re farkl\u0131 i\u015f ak\u0131\u015flar\u0131na y\u00f6nlendirme.<\/li>\n<li><strong>Kullan\u0131c\u0131 Rol\u00fc Bazl\u0131 Eri\u015fim:<\/strong> Y\u00f6neticiler i\u00e7in farkl\u0131, son kullan\u0131c\u0131lar i\u00e7in farkl\u0131 yan\u0131tlar veya i\u015flevler sunma.<\/li>\n<li><strong>Veri Tipi \u0130\u015fleme:<\/strong> Gelen verinin tipine (metin, resim, kod) g\u00f6re \u00f6zelle\u015fmi\u015f i\u015fleme zincirleri \u00e7al\u0131\u015ft\u0131rma.<\/li>\n<\/ul>\n<h4>Kod \u00d6rne\u011fi: Basit Bir Dallanma<\/h4>\n<p>Yukar\u0131daki \u00f6rnekte, kullan\u0131c\u0131n\u0131n giri\u015fine g\u00f6re \u00fc\u00e7 farkl\u0131 yol izleyen basit bir dallanma zinciri olu\u015fturduk. Bu, LCEL'in ko\u015fullu mant\u0131\u011f\u0131 ne kadar zarif bir \u015fekilde ele ald\u0131\u011f\u0131n\u0131 g\u00f6stermektedir. <code>RunnableLambda<\/code> kullanarak ko\u015ful fonksiyonlar\u0131n\u0131 do\u011frudan zincire entegre edebilir veya daha karma\u015f\u0131k mant\u0131k i\u00e7in \u00f6zel <code>Runnable<\/code>'lar yazabilirsiniz.<\/p>\n<h3>LCEL ile Paralellik (Parallelism): Performans ve Verimlilik<\/h3>\n<p>Paralellik, birden fazla g\u00f6revin e\u015fzamanl\u0131 olarak y\u00fcr\u00fct\u00fclmesini sa\u011flayarak uygulama performans\u0131n\u0131 \u00f6nemli \u00f6l\u00e7\u00fcde art\u0131r\u0131r. LCEL, <code>RunnableParallel<\/code> yap\u0131s\u0131 sayesinde bu yetene\u011fi kolayca entegre etmenize olanak tan\u0131r. \u00d6zellikle birden fazla LLM \u00e7a\u011fr\u0131s\u0131 yapman\u0131z veya farkl\u0131 veri i\u015fleme ad\u0131mlar\u0131n\u0131 ayn\u0131 anda \u00e7al\u0131\u015ft\u0131rman\u0131z gerekti\u011finde paralellik hayati \u00f6nem ta\u015f\u0131r.<\/p>\n<h4><code>RunnableParallel<\/code> ile E\u015fzamanl\u0131 \u0130\u015flemler<\/h4>\n<p><code>RunnableParallel<\/code>, bir s\u00f6zl\u00fck veya liste olarak tan\u0131mlanan birden fazla <code>Runnable<\/code>'\u0131 ayn\u0131 anda \u00e7al\u0131\u015ft\u0131r\u0131r. T\u00fcm <code>Runnable<\/code>'lar tamamland\u0131\u011f\u0131nda, sonu\u00e7lar\u0131 bir s\u00f6zl\u00fck veya liste olarak d\u00f6nd\u00fcr\u00fcr. Bu, \u00f6zellikle ba\u011f\u0131ms\u0131z olarak \u00e7al\u0131\u015fabilen g\u00f6revler i\u00e7in idealdir ve toplam y\u00fcr\u00fctme s\u00fcresini k\u0131salt\u0131r.<\/p>\n<pre><code class=\"language-python\">from langchain_core.runnables import RunnableParallel, RunnablePassthrough\nfrom langchain_core.prompts import ChatPromptTemplate\nfrom langchain_openai import ChatOpenAI\n\nmodel = ChatOpenAI(model=\"gpt-3.5-turbo\")\n\n# Farkl\u0131 prompt'lar\nprompt_summary = ChatPromptTemplate.from_template(\"A\u015fa\u011f\u0131daki metni \u00f6zetle: {text}\")\nprompt_keywords = ChatPromptTemplate.from_template(\"A\u015fa\u011f\u0131daki metinden anahtar kelimeleri \u00e7\u0131kar: {text}\")\n\n# Paralel zincir\nparallel_chain = RunnableParallel(\n    summary=prompt_summary | model,\n    keywords=prompt_keywords | model\n)\n\ntext_input = \"LangChain, b\u00fcy\u00fck dil modelleri (LLM'ler) ile desteklenen uygulamalar geli\u015ftirmeyi basitle\u015ftiren bir \u00e7er\u00e7evedir. Geli\u015ftiricilerin LLM'leri harici veri kaynaklar\u0131 ve i\u015flem mant\u0131\u011f\u0131 ile birle\u015ftirmesine olanak tan\u0131r.\"\nresults = parallel_chain.invoke({\"text\": text_input})\n\nprint(\"\u00d6zet:\", results[\"summary\"].content)\nprint(\"Anahtar Kelimeler:\", results[\"keywords\"].content)\n<\/pre>\n<p><\/code><\/p>\n<h4>\u00c7oklu LLM Sorgular\u0131 ve Veri \u0130\u015fleme<\/h4>\n<p>Paralellik, a\u015fa\u011f\u0131daki gibi senaryolarda \u00e7ok de\u011ferlidir:<\/p>\n<ul>\n<li><strong>Birden Fazla Perspektif:<\/strong> Ayn\u0131 girdi i\u00e7in farkl\u0131 modellerden veya farkl\u0131 prompt'lardan yan\u0131tlar almak (\u00f6rne\u011fin, bir metnin hem \u00f6zetini hem de anahtar kelimelerini \u00e7\u0131karma).<\/li>\n<li><strong>A\/B Testi:<\/strong> Farkl\u0131 model konfig\u00fcrasyonlar\u0131n\u0131 veya prompt'lar\u0131 e\u015fzamanl\u0131 olarak test etme.<\/li>\n<li><strong>Veri Zenginle\u015ftirme:<\/strong> Birincil bir LLM \u00e7a\u011fr\u0131s\u0131na ek olarak, ba\u015fka bir LLM \u00e7a\u011fr\u0131s\u0131yla veya harici bir API ile veriyi zenginle\u015ftirme.<\/li>\n<li><strong>Karma\u015f\u0131k \u0130\u015f Ak\u0131\u015flar\u0131:<\/strong> Birka\u00e7 ba\u011f\u0131ms\u0131z \u00f6n i\u015fleme ad\u0131m\u0131n\u0131 veya analiz g\u00f6revini ayn\u0131 anda y\u00fcr\u00fctme.<\/li>\n<\/ul>\n<h4>Kod \u00d6rne\u011fi: Paralel Sorgular<\/h4>\n<p>Yukar\u0131daki \u00f6rnekte, ayn\u0131 metin i\u00e7in hem \u00f6zet hem de anahtar kelime \u00e7\u0131karma i\u015flemlerini paralel olarak ger\u00e7ekle\u015ftirdik. Bu, iki LLM \u00e7a\u011fr\u0131s\u0131n\u0131n e\u015fzamanl\u0131 olarak yap\u0131lmas\u0131n\u0131 sa\u011flayarak toplam yan\u0131t s\u00fcresini \u00f6nemli \u00f6l\u00e7\u00fcde azalt\u0131r. <code>RunnableParallel<\/code>, bu t\u00fcr karma\u015f\u0131k i\u015f ak\u0131\u015flar\u0131n\u0131 temiz ve etkili bir \u015fekilde y\u00f6netmek i\u00e7in idealdir.<\/p>\n<h3>LCEL'de Ak\u0131\u015f (Streaming): Anl\u0131k ve Etkile\u015fimli Yan\u0131tlar<\/h3>\n<p>Ak\u0131\u015f, LLM'lerden gelen yan\u0131tlar\u0131 par\u00e7alar halinde, tamam\u0131n\u0131 beklemeksizin alman\u0131z\u0131 sa\u011flayan bir \u00f6zelliktir. Bu, \u00f6zellikle uzun yan\u0131tlar \u00fcreten veya gecikme s\u00fcresinin kritik oldu\u011fu uygulamalarda kullan\u0131c\u0131 deneyimini radikal bir \u015fekilde iyile\u015ftirir. LCEL, <code>stream()<\/code> metodu ile bu yetene\u011fi t\u00fcm <code>Runnable<\/code>'lar ve zincirler i\u00e7in do\u011fal olarak destekler.<\/p>\n<h4>Ak\u0131\u015f\u0131n \u00d6nemi ve Kullan\u0131c\u0131 Deneyimi<\/h4>\n<p>Geleneksel olarak, bir LLM'den yan\u0131t al\u0131rken, model t\u00fcm \u00e7\u0131kt\u0131y\u0131 \u00fcretmeyi bitirene kadar beklemek zorunda kal\u0131rs\u0131n\u0131z. Bu, \u00f6zellikle karma\u015f\u0131k veya uzun metinler i\u00e7in birka\u00e7 saniye s\u00fcrebilir. Ak\u0131\u015f sayesinde, kullan\u0131c\u0131lar yan\u0131t\u0131n ilk par\u00e7alar\u0131n\u0131 an\u0131nda g\u00f6rmeye ba\u015flar, bu da uygulaman\u0131n daha h\u0131zl\u0131 ve duyarl\u0131 hissetmesini sa\u011flar. Chatbotlar, kod tamamlama ara\u00e7lar\u0131 ve ger\u00e7ek zamanl\u0131 i\u00e7erik \u00fcretimi gibi uygulamalar i\u00e7in vazge\u00e7ilmezdir.<\/p>\n<h4><code>stream()<\/code> Metodu ile Par\u00e7al\u0131 Yan\u0131tlar<\/h4>\n<p>LCEL'deki herhangi bir <code>Runnable<\/code> veya zincir, <code>.stream()<\/code> metodunu \u00e7a\u011f\u0131rarak ak\u0131\u015fl\u0131 bir yan\u0131t \u00fcretebilir. Bu metod, yan\u0131t par\u00e7alar\u0131n\u0131 i\u00e7eren bir jenerat\u00f6r d\u00f6nd\u00fcr\u00fcr. Her bir par\u00e7a, LLM'den gelen incremental bir \u00e7\u0131kt\u0131y\u0131 temsil eder.<\/p>\n<pre><code class=\"language-python\">from langchain_core.prompts import ChatPromptTemplate\nfrom langchain_openai import ChatOpenAI\n\nmodel = ChatOpenAI(model=\"gpt-3.5-turbo\")\nprompt = ChatPromptTemplate.from_template(\"Bana {konu} hakk\u0131nda detayl\u0131 bir makale yaz.\")\nchain = prompt | model\n\nprint(\"Ak\u0131\u015fl\u0131 Yan\u0131t:\")\nfor chunk in chain.stream({\"konu\": \"LangChain Expression Language\"}):\n    print(chunk.content, end=\"\", flush=True)\nprint(\"\\nAk\u0131\u015f tamamland\u0131.\")\n<\/pre>\n<p><\/code><\/p>\n<h4>Kod \u00d6rne\u011fi: Ak\u0131\u015fl\u0131 Yan\u0131t \u00dcretimi<\/h4>\n<p>Yukar\u0131daki \u00f6rnekte, \"LangChain Expression Language\" hakk\u0131nda detayl\u0131 bir makale yazmas\u0131 i\u00e7in bir LLM'i kulland\u0131k ve yan\u0131t\u0131 <code>.stream()<\/code> metodu arac\u0131l\u0131\u011f\u0131yla par\u00e7alar halinde ald\u0131k. <code>flush=True<\/code> parametresi, her par\u00e7an\u0131n hemen ekrana yaz\u0131lmas\u0131n\u0131 sa\u011flayarak ger\u00e7ek zamanl\u0131 ak\u0131\u015f deneyimini sim\u00fcle eder. Bu, kullan\u0131c\u0131lar\u0131n uzun yan\u0131tlar\u0131 beklerken s\u0131k\u0131lmamas\u0131n\u0131 ve etkile\u015fimli bir deneyim ya\u015famas\u0131n\u0131 sa\u011flar.<\/p>\n<h3>\u0130leri D\u00fczey LCEL Kullan\u0131m\u0131 ve En \u0130yi Pratikler<\/h3>\n<p>LCEL'in temel yeteneklerinin \u00f6tesine ge\u00e7erek, \u00f6zel <code>Runnable<\/code>'lar olu\u015fturmak, hata y\u00f6netimini entegre etmek ve performans\u0131 optimize etmek, uygulamalar\u0131n\u0131z\u0131n daha sa\u011flam ve verimli olmas\u0131n\u0131 sa\u011flar.<\/p>\n<h4>\u00d6zel Runnable'lar ve Entegrasyonlar<\/h4>\n<p>LCEL, kendi \u00f6zel mant\u0131\u011f\u0131n\u0131z\u0131 i\u00e7eren <code>Runnable<\/code>'lar olu\u015fturman\u0131za olanak tan\u0131r. <code>RunnableLambda<\/code> kullanarak basit fonksiyonlar\u0131 <code>Runnable<\/code>'lara d\u00f6n\u00fc\u015ft\u00fcrebilir veya <code>BaseRunnable<\/code> s\u0131n\u0131f\u0131ndan t\u00fcreterek daha karma\u015f\u0131k, durum bilgisi olan <code>Runnable<\/code>'lar yazabilirsiniz. Bu, harici API \u00e7a\u011fr\u0131lar\u0131, \u00f6zel veri i\u015fleme ad\u0131mlar\u0131 veya karma\u015f\u0131k i\u015f mant\u0131\u011f\u0131 gibi LangChain'in yerle\u015fik bile\u015fenlerinin kapsamad\u0131\u011f\u0131 senaryolar i\u00e7in idealdir.<\/p>\n<pre><code class=\"language-python\">from langchain_core.runnables import RunnableLambda\n\n# \u00d6zel bir Runnable (fonksiyon)\ndef custom_processor(text: str) -> str:\n    return text.upper() + \" - \u0130\u015eLEND\u0130!\"\n\ncustom_runnable = RunnableLambda(custom_processor)\n\nchain = custom_runnable | ChatPromptTemplate.from_template(\"Bana bu metin hakk\u0131nda bilgi ver: {input}\") | ChatOpenAI()\nprint(chain.invoke(\"Merhaba d\u00fcnya\").content)\n<\/pre>\n<p><\/code><\/p>\n<h4>Hata Y\u00f6netimi ve \u0130zleme<\/h4>\n<p>\u00dcretim ortam\u0131ndaki uygulamalar i\u00e7in hata y\u00f6netimi ve izleme kritik \u00f6neme sahiptir. LCEL, <code>with_config<\/code> metodu arac\u0131l\u0131\u011f\u0131yla geri \u00e7a\u011fr\u0131mlar\u0131 (callbacks) entegre etmenize olanak tan\u0131r. Bu geri \u00e7a\u011fr\u0131mlar, zincirin her ad\u0131m\u0131nda tetiklenebilir ve hata durumlar\u0131n\u0131 yakalaman\u0131za, loglama yapman\u0131za veya \u00f6zel hata i\u015fleme mant\u0131\u011f\u0131 uygulaman\u0131za yard\u0131mc\u0131 olur. LangChain'in yerle\u015fik izleme ara\u00e7lar\u0131 (\u00f6rne\u011fin, LangSmith) ile entegrasyon, zincirlerinizin davran\u0131\u015f\u0131n\u0131 derinlemesine anlaman\u0131z\u0131 sa\u011flar.<\/p>\n<pre><code class=\"language-python\">from langchain_core.callbacks import BaseCallbackHandler\nfrom langchain_core.runnables import RunnablePassthrough\nfrom langchain_core.prompts import ChatPromptTemplate\nfrom langchain_openai import ChatOpenAI\n\nclass CustomErrorHandler(BaseCallbackHandler):\n    def on_chain_error(self, error: Exception, **kwargs):\n        print(f\"Zincirde bir hata olu\u015ftu: {error}\")\n\nmodel = ChatOpenAI(model=\"gpt-3.5-turbo\")\nprompt = ChatPromptTemplate.from_template(\"Hata yaratacak bir \u015fey yap: {input}\")\nerror_chain = prompt | model\n\n# Hata i\u015fleyici ile zinciri \u00e7al\u0131\u015ft\u0131rma\ntry:\n    error_chain.invoke({\"input\": \"Bana anlams\u0131z bir \u015fey s\u00f6yle\"}, config={\"callbacks\": [CustomErrorHandler()]})\nexcept Exception as e:\n    print(f\"Ana yakalay\u0131c\u0131: {e}\")\n<\/pre>\n<p><\/code><\/p>\n<h4>Performans Optimizasyonu ve Bak\u0131m<\/h4>\n<p>LCEL zincirlerinizin performans\u0131n\u0131 optimize etmek i\u00e7in:<\/p>\n<ul>\n<li><strong>\u00d6nbellekleme:<\/strong> Tekrarlayan LLM \u00e7a\u011fr\u0131lar\u0131n\u0131 \u00f6nbelle\u011fe alarak gecikmeyi ve maliyeti azalt\u0131n.<\/li>\n<li><strong>Paralellik:<\/strong> Ba\u011f\u0131ms\u0131z g\u00f6revleri <code>RunnableParallel<\/code> ile e\u015fzamanl\u0131 \u00e7al\u0131\u015ft\u0131r\u0131n.<\/li>\n<li><strong>Ak\u0131\u015f:<\/strong> Kullan\u0131c\u0131 deneyimini iyile\u015ftirmek i\u00e7in uzun yan\u0131tlar i\u00e7in ak\u0131\u015f\u0131 kullan\u0131n.<\/li>\n<li><strong>Mod\u00fclerlik:<\/strong> Zincirleri k\u00fc\u00e7\u00fck, test edilebilir par\u00e7alara ay\u0131rarak bak\u0131m\u0131 kolayla\u015ft\u0131r\u0131n ve performans darbo\u011fazlar\u0131n\u0131 daha rahat tespit edin.<\/li>\n<li><strong>Geri \u00c7a\u011fr\u0131mlar:<\/strong> LangSmith gibi ara\u00e7larla zincirlerinizi izleyerek performans sorunlar\u0131n\u0131 belirleyin.<\/li>\n<\/ul>\n<h3>Sonu\u00e7<\/h3>\n<p>LangChain Expression Language (LCEL), modern yapay zeka uygulamalar\u0131 geli\u015ftiricileri i\u00e7in vazge\u00e7ilmez bir ara\u00e7t\u0131r. Dallanma, paralellik ve ak\u0131\u015f gibi geli\u015fmi\u015f yetenekleri sayesinde, karma\u015f\u0131k i\u015f ak\u0131\u015flar\u0131n\u0131 daha mod\u00fcler, esnek ve performansl\u0131 bir \u015fekilde olu\u015fturman\u0131za olanak tan\u0131r. LCEL'i ustal\u0131kla kullanarak, kullan\u0131c\u0131 deneyimini iyile\u015ftiren, verimli \u00e7al\u0131\u015fan ve kolayca bak\u0131m\u0131 yap\u0131labilen LLM destekli uygulamalar geli\u015ftirebilirsiniz. Bu makalede ele ald\u0131\u011f\u0131m\u0131z prensipler ve kod \u00f6rnekleri, LCEL yolculu\u011funuzda size rehberlik edecek ve yapay zeka projelerinizde yeni ufuklar a\u00e7acakt\u0131r.<\/p>\n<h3>SSS (S\u0131k Sorulan Sorular)<\/h3>\n<h4>1. LCEL kullanmak i\u00e7in LangChain'i ne kadar bilmem gerekiyor?<\/h4>\n<p>LCEL, LangChain'in temel zincir olu\u015fturma mant\u0131\u011f\u0131n\u0131n bir evrimidir. Temel LangChain kavramlar\u0131na (modeller, prompt'lar) a\u015fina olmak faydal\u0131 olsa da, LCEL'in kendisi mod\u00fcler yap\u0131s\u0131yla \u00f6\u011frenmeyi kolayla\u015ft\u0131r\u0131r. Bu makaledeki \u00f6rneklerle ba\u015flayarak h\u0131zla ilerleyebilirsiniz.<\/p>\n<h4>2. <code>RunnableBranch<\/code> ile <code>if\/else<\/code> bloklar\u0131 aras\u0131ndaki fark nedir?<\/h4>\n<p><code>RunnableBranch<\/code>, <code>if\/else<\/code> mant\u0131\u011f\u0131n\u0131 LangChain zincirleri i\u00e7ine entegre etmenin LCEL'e \u00f6zg\u00fc, deklaratif bir yoludur. Bu, zincirlerin daha okunabilir ve y\u00f6netilebilir olmas\u0131n\u0131 sa\u011flar, ayr\u0131ca LangChain'in izleme ve hata y\u00f6netimi \u00f6zellikleriyle sorunsuz bir \u015fekilde entegre olur. Geleneksel <code>if\/else<\/code> bloklar\u0131, zincir d\u0131\u015f\u0131 mant\u0131k i\u00e7in kullan\u0131labilirken, <code>RunnableBranch<\/code> zincir i\u00e7i ko\u015fullu ak\u0131\u015flar i\u00e7in tasarlanm\u0131\u015ft\u0131r.<\/p>\n<h4>3. LCEL'de paralellik ne zaman kullan\u0131lmal\u0131?<\/h4>\n<p>Paralellik, bir zincirdeki birden fazla ad\u0131m\u0131n birbirine ba\u011f\u0131ml\u0131 olmad\u0131\u011f\u0131 ve e\u015fzamanl\u0131 olarak y\u00fcr\u00fct\u00fclebilece\u011fi durumlarda kullan\u0131lmal\u0131d\u0131r. \u00d6rne\u011fin, ayn\u0131 giri\u015ften birden fazla farkl\u0131 analiz (\u00f6zetleme, anahtar kelime \u00e7\u0131karma) yaparken veya farkl\u0131 harici API'leri ayn\u0131 anda \u00e7a\u011f\u0131r\u0131rken <code>RunnableParallel<\/code> kullanmak performans\u0131 \u00f6nemli \u00f6l\u00e7\u00fcde art\u0131r\u0131r.<\/p>\n<h4>4. Ak\u0131\u015f (Streaming) her zaman gerekli midir?<\/h4>\n<p>Ak\u0131\u015f, \u00f6zellikle uzun yan\u0131tlar \u00fcreten LLM'ler veya kullan\u0131c\u0131lar\u0131n an\u0131nda geri bildirim bekledi\u011fi interaktif uygulamalar (chatbotlar gibi) i\u00e7in \u015fiddetle tavsiye edilir. Ancak, \u00e7ok k\u0131sa yan\u0131tlar veya toplu i\u015fleme gerektiren senaryolarda geleneksel <code>invoke()<\/code> metodunu kullanmak da yeterli olabilir. Ak\u0131\u015f, genellikle kullan\u0131c\u0131 deneyimini iyile\u015ftirmek i\u00e7in bir optimizasyondur.<\/p>\n<h4>5. LCEL'de kendi \u00f6zel Runnable'lar\u0131m\u0131 nas\u0131l olu\u015ftururum?<\/h4>\n<p>Kendi \u00f6zel <code>Runnable<\/code>'lar\u0131n\u0131z\u0131 olu\u015fturmak i\u00e7in en basit yol, bir Python fonksiyonunu <code>RunnableLambda<\/code> ile sarmalamakt\u0131r. Daha karma\u015f\u0131k senaryolar veya durum bilgisi olan <code>Runnable<\/code>'lar i\u00e7in <code>langchain_core.runnables.BaseRunnable<\/code> s\u0131n\u0131f\u0131ndan t\u00fcreyen \u00f6zel bir s\u0131n\u0131f yazman\u0131z gerekir. Bu, <code>invoke<\/code>, <code>stream<\/code> ve <code>batch<\/code> gibi metodlar\u0131 uygulaman\u0131z\u0131 gerektirir.<\/p>\n","protected":false},"excerpt":{"rendered":"Yapay zeka uygulamalar\u0131 geli\u015ftirirken, \u00f6zellikle b\u00fcy\u00fck dil modelleri (LLM&#8217;ler) ile \u00e7al\u0131\u015f\u0131rken, karma\u015f\u0131k i\u015f ak\u0131\u015flar\u0131n\u0131 y\u00f6netmek ve optimize e&#8230;","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":[1342],"tags":[],"class_list":{"0":"post-37837","1":"post","2":"type-post","3":"status-publish","4":"format-standard","6":"category-ai","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>LangChain \u0130fade Dili (LCEL) Uzmanl\u0131\u011f\u0131: Dallanma, Paralellik ve Ak\u0131\u015f - Kodlar\u0131n Gizemli D\u00fcnyas\u0131<\/title>\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\/langchain-ifade-dili-lcel-uzmanligi-dallanma-paralellik-ve-akis\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"LangChain \u0130fade Dili (LCEL) Uzmanl\u0131\u011f\u0131: Dallanma, Paralellik ve Ak\u0131\u015f\" \/>\n<meta property=\"og:description\" content=\"Yapay zeka uygulamalar\u0131 geli\u015ftirirken, \u00f6zellikle b\u00fcy\u00fck dil modelleri (LLM&#039;ler) ile \u00e7al\u0131\u015f\u0131rken, karma\u015f\u0131k i\u015f ak\u0131\u015flar\u0131n\u0131 y\u00f6netmek ve optimize e...\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/langchain-ifade-dili-lcel-uzmanligi-dallanma-paralellik-ve-akis\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2026-01-16T13:00:40+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=\"13 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/langchain-ifade-dili-lcel-uzmanligi-dallanma-paralellik-ve-akis\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/langchain-ifade-dili-lcel-uzmanligi-dallanma-paralellik-ve-akis\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"LangChain \u0130fade Dili (LCEL) Uzmanl\u0131\u011f\u0131: Dallanma, Paralellik ve Ak\u0131\u015f\",\"datePublished\":\"2026-01-16T13:00:40+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/langchain-ifade-dili-lcel-uzmanligi-dallanma-paralellik-ve-akis\/\"},\"wordCount\":2024,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"articleSection\":[\"AI\"],\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/langchain-ifade-dili-lcel-uzmanligi-dallanma-paralellik-ve-akis\/#respond\"]}],\"copyrightYear\":\"2026\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/langchain-ifade-dili-lcel-uzmanligi-dallanma-paralellik-ve-akis\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/langchain-ifade-dili-lcel-uzmanligi-dallanma-paralellik-ve-akis\/\",\"name\":\"LangChain \u0130fade Dili (LCEL) Uzmanl\u0131\u011f\u0131: Dallanma, Paralellik ve Ak\u0131\u015f - Kodlar\u0131n Gizemli D\u00fcnyas\u0131\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2026-01-16T13:00:40+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/langchain-ifade-dili-lcel-uzmanligi-dallanma-paralellik-ve-akis\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/langchain-ifade-dili-lcel-uzmanligi-dallanma-paralellik-ve-akis\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/langchain-ifade-dili-lcel-uzmanligi-dallanma-paralellik-ve-akis\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"LangChain \u0130fade Dili (LCEL) Uzmanl\u0131\u011f\u0131: Dallanma, Paralellik ve Ak\u0131\u015f\"}]},{\"@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":"LangChain \u0130fade Dili (LCEL) Uzmanl\u0131\u011f\u0131: Dallanma, Paralellik ve Ak\u0131\u015f - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","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\/langchain-ifade-dili-lcel-uzmanligi-dallanma-paralellik-ve-akis\/","og_locale":"tr_TR","og_type":"article","og_title":"LangChain \u0130fade Dili (LCEL) Uzmanl\u0131\u011f\u0131: Dallanma, Paralellik ve Ak\u0131\u015f","og_description":"Yapay zeka uygulamalar\u0131 geli\u015ftirirken, \u00f6zellikle b\u00fcy\u00fck dil modelleri (LLM'ler) ile \u00e7al\u0131\u015f\u0131rken, karma\u015f\u0131k i\u015f ak\u0131\u015flar\u0131n\u0131 y\u00f6netmek ve optimize e...","og_url":"https:\/\/fatihsoysal.com\/blog\/langchain-ifade-dili-lcel-uzmanligi-dallanma-paralellik-ve-akis\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2026-01-16T13:00:40+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"13 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/langchain-ifade-dili-lcel-uzmanligi-dallanma-paralellik-ve-akis\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/langchain-ifade-dili-lcel-uzmanligi-dallanma-paralellik-ve-akis\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"LangChain \u0130fade Dili (LCEL) Uzmanl\u0131\u011f\u0131: Dallanma, Paralellik ve Ak\u0131\u015f","datePublished":"2026-01-16T13:00:40+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/langchain-ifade-dili-lcel-uzmanligi-dallanma-paralellik-ve-akis\/"},"wordCount":2024,"commentCount":0,"publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"articleSection":["AI"],"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihsoysal.com\/blog\/langchain-ifade-dili-lcel-uzmanligi-dallanma-paralellik-ve-akis\/#respond"]}],"copyrightYear":"2026","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/langchain-ifade-dili-lcel-uzmanligi-dallanma-paralellik-ve-akis\/","url":"https:\/\/fatihsoysal.com\/blog\/langchain-ifade-dili-lcel-uzmanligi-dallanma-paralellik-ve-akis\/","name":"LangChain \u0130fade Dili (LCEL) Uzmanl\u0131\u011f\u0131: Dallanma, Paralellik ve Ak\u0131\u015f - Kodlar\u0131n Gizemli D\u00fcnyas\u0131","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2026-01-16T13:00:40+00:00","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/langchain-ifade-dili-lcel-uzmanligi-dallanma-paralellik-ve-akis\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/langchain-ifade-dili-lcel-uzmanligi-dallanma-paralellik-ve-akis\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/langchain-ifade-dili-lcel-uzmanligi-dallanma-paralellik-ve-akis\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"LangChain \u0130fade Dili (LCEL) Uzmanl\u0131\u011f\u0131: Dallanma, Paralellik ve Ak\u0131\u015f"}]},{"@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\/37837","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=37837"}],"version-history":[{"count":0,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/37837\/revisions"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=37837"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=37837"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=37837"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}