{"id":37549,"date":"2026-01-08T16:21:05","date_gmt":"2026-01-08T13:21:05","guid":{"rendered":"https:\/\/fatihsoysal.com\/blog\/giris-yapay-zeka-ajanslari-ile-is-akislarinizi-neden-otomatiklestirmelisiniz\/"},"modified":"2026-01-08T16:21:05","modified_gmt":"2026-01-08T13:21:05","slug":"giris-yapay-zeka-ajanslari-ile-is-akislarinizi-neden-otomatiklestirmelisiniz","status":"publish","type":"post","link":"https:\/\/fatihsoysal.com\/blog\/giris-yapay-zeka-ajanslari-ile-is-akislarinizi-neden-otomatiklestirmelisiniz\/","title":{"rendered":"Giri\u015f: Yapay Zeka Ajanslar\u0131 ile \u0130\u015f Ak\u0131\u015flar\u0131n\u0131z\u0131 Neden Otomatikle\u015ftirmelisiniz?"},"content":{"rendered":"<p><title>CrewAI: Rol Tabanl\u0131 Ajan Orkestrasyonuna Pratik Bir Rehber<\/title><br \/>\n<body><\/p>\n<style>\n    \/* Mobil uyumlu tasar\u0131m i\u00e7in temel stiller *\/\n    body {\n        font-family: Arial, sans-serif;\n        line-height: 1.6;\n        color: #333;\n        margin: 0 auto;\n        padding: 20px;\n        max-width: 800px;\n    }\n    h2, h3 {\n        color: #2c3e50;\n        margin-top: 30px;\n        margin-bottom: 15px;\n    }\n    h2 {\n        font-size: 1.8em;\n    }\n    h3 {\n        font-size: 1.4em;\n    }\n    p {\n        margin-bottom: 15px;\n    }\n    ul, ol {\n        margin-bottom: 15px;\n        padding-left: 20px;\n    }\n    li {\n        margin-bottom: 5px;\n    }\n    pre {\n        background-color: #f4f4f4;\n        padding: 15px;\n        border-radius: 5px;\n        overflow-x: auto;\n        margin-bottom: 20px;\n    }\n    code {\n        font-family: \"Courier New\", Courier, monospace;\n        font-size: 0.9em;\n    }\n    .expert-tip {\n        background-color: #e0f2f7;\n        border-left: 5px solid #007bff;\n        padding: 15px;\n        margin: 20px 0;\n        border-radius: 5px;\n    }\n    .faq-item {\n        margin-bottom: 20px;\n        border-bottom: 1px dashed #ccc;\n        padding-bottom: 10px;\n    }\n    .faq-item:last-child {\n        border-bottom: none;\n    }\n    .faq-question {\n        font-weight: bold;\n        color: #34495e;\n    }\n    .faq-answer {\n        margin-top: 5px;\n    }\n    table {\n        width: 100%;\n        border-collapse: collapse;\n        margin-bottom: 20px;\n    }\n    th, td {\n        border: 1px solid #ddd;\n        padding: 8px;\n        text-align: left;\n    }\n    th {\n        background-color: #f2f2f2;\n        font-weight: bold;\n    }<\/p>\n<p>    \/* Mobil cihazlar i\u00e7in media query *\/\n    @media (max-width: 600px) {\n        body {\n            padding: 10px;\n        }\n        h2 {\n            font-size: 1.5em;\n        }\n        h3 {\n            font-size: 1.2em;\n        }\n        pre {\n            padding: 10px;\n        }\n        table, thead, tbody, th, td, tr {\n            display: block;\n        }\n        thead tr {\n            position: absolute;\n            top: -9999px;\n            left: -9999px;\n        }\n        tr {\n            border: 1px solid #ccc;\n            margin-bottom: 10px;\n        }\n        td {\n            border: none;\n            border-bottom: 1px solid #eee;\n            position: relative;\n            padding-left: 50%;\n            text-align: right;\n        }\n        td:before {\n            position: absolute;\n            left: 6px;\n            content: attr(data-label);\n            font-weight: bold;\n            text-align: left;\n            width: 45%;\n            white-space: nowrap;\n        }\n    }\n<\/style>\n<p>G\u00fcn\u00fcm\u00fcz\u00fcn karma\u015f\u0131k i\u015f d\u00fcnyas\u0131nda, tekrar eden g\u00f6revleri ve \u00e7ok ad\u0131ml\u0131 s\u00fcre\u00e7leri otomatikle\u015ftirmek, verimlili\u011fi art\u0131rman\u0131n anahtar\u0131d\u0131r. CrewAI, yapay zeka ajanlar\u0131n\u0131 belirli rollerle donatarak i\u015f ak\u0131\u015flar\u0131n\u0131z\u0131 ak\u0131ll\u0131ca y\u00f6netmenizi sa\u011flayan g\u00fc\u00e7l\u00fc bir Python k\u00fct\u00fcphanesidir.<\/p>\n<h2>Giri\u015f: Yapay Zeka Ajanslar\u0131 ile \u0130\u015f Ak\u0131\u015flar\u0131n\u0131z\u0131 Neden Otomatikle\u015ftirmelisiniz?<\/h2>\n<p>Modern i\u015fletmeler, s\u00fcrekli artan veri hacmi ve h\u0131zla de\u011fi\u015fen pazar ko\u015fullar\u0131yla ba\u015fa \u00e7\u0131kmak zorundad\u0131r. Bu durum, insan kaynaklar\u0131n\u0131n zaman\u0131n\u0131 ve enerjisini stratejik olmayan, tekrar eden g\u00f6revlere harcamas\u0131na neden olabilir. \u00d6rne\u011fin, bir pazarlama departman\u0131 s\u00fcrekli olarak blog yaz\u0131lar\u0131 \u00fcretmek, sosyal medya g\u00f6nderileri haz\u0131rlamak ve pazar ara\u015ft\u0131rmas\u0131 yapmakla me\u015fgul olabilir. Bu t\u00fcr g\u00f6revler, yarat\u0131c\u0131l\u0131k ve stratejik d\u00fc\u015f\u00fcnme gerektirse de, s\u00fcrecin belirli a\u015famalar\u0131 otomasyon i\u00e7in olduk\u00e7a elveri\u015flidir. Peki, bu noktada yapay zeka ajanlar\u0131 devreye nas\u0131l girer ve i\u015f ak\u0131\u015flar\u0131m\u0131z\u0131 neden onlara emanet etmeliyiz?<\/p>\n<p>Yapay zeka ajanlar\u0131, belirli g\u00f6revleri yerine getirmek, karar vermek ve hatta di\u011fer ajanlarla i\u015fbirli\u011fi yapmak \u00fczere tasarlanm\u0131\u015f otonom yaz\u0131l\u0131m varl\u0131klar\u0131d\u0131r. Geleneksel otomasyon sistemlerinin aksine, ajanlar dinamik durumlara uyum sa\u011flayabilir, \u00f6\u011frenme yetenekleri sayesinde performanslar\u0131n\u0131 art\u0131rabilir ve karma\u015f\u0131k problemleri \u00e7\u00f6zmek i\u00e7in birden fazla ad\u0131m\u0131 koordine edebilir. Bu, \u00f6zellikle rol tabanl\u0131 bir yakla\u015f\u0131mla birle\u015ftirildi\u011finde, bir ekibin farkl\u0131 \u00fcyelerinin belirli uzmanl\u0131k alanlar\u0131na sahip oldu\u011fu ger\u00e7ek d\u00fcnya senaryolar\u0131n\u0131 taklit etmelerini sa\u011flar. \u0130\u015fte tam da bu noktada CrewAI gibi ara\u00e7lar devreye girerek, bu ajanlar\u0131 bir &#8220;ekip&#8221; halinde organize etmemize olanak tan\u0131r.<\/p>\n<p>\u0130\u015f ak\u0131\u015flar\u0131n\u0131z\u0131 yapay zeka ajanlar\u0131yla otomatikle\u015ftirmek, sadece zaman ve maliyet tasarrufu sa\u011flamakla kalmaz, ayn\u0131 zamanda insan hatalar\u0131n\u0131 azalt\u0131r ve s\u00fcre\u00e7lerin tutarl\u0131l\u0131\u011f\u0131n\u0131 art\u0131r\u0131r. Bir ajans, belirli bir hedefi ger\u00e7ekle\u015ftirmek i\u00e7in farkl\u0131 rollerdeki ajanlar\u0131 bir araya getirerek, her bir ajan\u0131n kendi uzmanl\u0131k alan\u0131nda en iyi performans\u0131 g\u00f6stermesini sa\u011flar. \u00d6rne\u011fin, bir i\u00e7erik olu\u015fturma ajans\u0131nda bir &#8220;Ara\u015ft\u0131rmac\u0131 Ajan&#8221;, ilgili verileri toplarken, bir &#8220;Yaz\u0131c\u0131 Ajan&#8221; bu verileri kullanarak taslak metinler olu\u015fturabilir ve bir &#8220;Edit\u00f6r Ajan&#8221; da son kontrolleri yaparak i\u00e7eri\u011fi yay\u0131na haz\u0131r hale getirebilir. Bu i\u015fbirli\u011fi modeli, insan ekiplerinin \u00e7al\u0131\u015fma prensibine benzer ve s\u00fcre\u00e7leri \u00e7ok daha verimli hale getirir. Sonu\u00e7 olarak, yapay zeka ajanlar\u0131, i\u015fletmelerin daha h\u0131zl\u0131, daha ak\u0131ll\u0131 ve daha \u00f6l\u00e7eklenebilir bir \u015fekilde hareket etmesine olanak tan\u0131yarak rekabet avantaj\u0131 elde etmelerini sa\u011flar.<\/p>\n<h2>CrewAI Nedir ve Temel Kavramlar\u0131 Nelerdir?<\/h2>\n<p>CrewAI, birden fazla yapay zeka ajan\u0131n\u0131 bir araya getirerek karma\u015f\u0131k g\u00f6revleri i\u015fbirli\u011fi i\u00e7inde \u00e7\u00f6zmelerini sa\u011flayan, rol tabanl\u0131 bir ajan orkestrasyon k\u00fct\u00fcphanesidir. Python ile geli\u015ftirilmi\u015f bu k\u00fct\u00fcphane, b\u00fcy\u00fck dil modellerinin (LLM) g\u00fcc\u00fcn\u00fc kullanarak, her bir ajan\u0131n belirli bir uzmanl\u0131k alan\u0131na sahip olmas\u0131n\u0131 ve bu uzmanl\u0131k do\u011frultusunda hareket etmesini m\u00fcmk\u00fcn k\u0131lar. Peki, CrewAI&#8217;nin temel ta\u015flar\u0131 nelerdir ve bu kavramlar nas\u0131l bir araya gelerek bir &#8220;yapay zeka ajans\u0131&#8221; olu\u015fturur?<\/p>\n<p>CrewAI&#8217;nin anla\u015f\u0131lmas\u0131 gereken d\u00f6rt anahtar kavram\u0131 bulunmaktad\u0131r:<\/p>\n<ol>\n<li>\n<p><strong>Agent (Ajan):<\/strong> Bir ajans\u0131n temel yap\u0131 ta\u015f\u0131d\u0131r. Her ajan, belirli bir rol\u00fc (\u00f6rne\u011fin, &#8220;Ara\u015ft\u0131rmac\u0131&#8221;, &#8220;Yaz\u0131c\u0131&#8221;, &#8220;Pazarlamac\u0131&#8221;) ve bu rol\u00fc yerine getirmek i\u00e7in gerekli yetenekleri (\u00f6rne\u011fin, &#8220;web&#8217;de arama yapma&#8221;, &#8220;metin yazma&#8221;, &#8220;veri analiz etme&#8221;) temsil eder. Ajanlar, kendilerine atanan g\u00f6revleri yerine getirirken, bir B\u00fcy\u00fck Dil Modeli (LLM) arac\u0131l\u0131\u011f\u0131yla d\u00fc\u015f\u00fcn\u00fcr, karar verir ve eyleme ge\u00e7er. Her ajan\u0131n kendine \u00f6zg\u00fc bir ki\u015fili\u011fi, hedefleri ve hatta haf\u0131zas\u0131 olabilir, bu da onlar\u0131 daha esnek ve etkili k\u0131lar.<\/p>\n<ul>\n<li><strong>Role:<\/strong> Ajana atanan mesleki kimlik (\u00f6rn. &#8220;K\u0131demli Pazarlama Analisti&#8221;).<\/li>\n<li><strong>Goal:<\/strong> Ajan\u0131n genel amac\u0131 ve motivasyonu (\u00f6rn. &#8220;En iyi pazar trendlerini belirlemek&#8221;).<\/li>\n<li><strong>Backstory:<\/strong> Ajan\u0131n ge\u00e7mi\u015fi ve uzmanl\u0131k alan\u0131, g\u00f6revleri nas\u0131l ele alaca\u011f\u0131n\u0131 etkiler.<\/li>\n<li><strong>Tools:<\/strong> Ajan\u0131n kullanabilece\u011fi ara\u00e7lar (\u00f6rn. Google Arama, dosya okuyucu).<\/li>\n<\/ul>\n<\/li>\n<li>\n<p><strong>Task (G\u00f6rev):<\/strong> Ajanlar\u0131n yerine getirmesi gereken spesifik i\u015f par\u00e7ac\u0131klar\u0131d\u0131r. Bir g\u00f6rev, belirli bir ajana atan\u0131r ve o ajandan beklenen \u00e7\u0131kt\u0131y\u0131 a\u00e7\u0131k\u00e7a tan\u0131mlar. G\u00f6revler, bir ajan\u0131n hedefleriyle uyumlu olmal\u0131 ve ajan\u0131n sahip oldu\u011fu ara\u00e7larla \u00e7\u00f6z\u00fclebilecek nitelikte olmal\u0131d\u0131r. \u00d6rne\u011fin, &#8220;Pazar trendlerini ara\u015ft\u0131r&#8221; veya &#8220;Blog yaz\u0131s\u0131 tasla\u011f\u0131 olu\u015ftur&#8221; birer g\u00f6rev olabilir. G\u00f6revler, CrewAI&#8217;nin orkestrasyon mekanizmas\u0131 sayesinde birbirini takip edebilir veya paralel olarak y\u00fcr\u00fct\u00fclebilir.<\/p>\n<ul>\n<li><strong>Description:<\/strong> G\u00f6revin ne oldu\u011funu ve ne bekledi\u011fini a\u00e7\u0131klar.<\/li>\n<li><strong>Expected Output:<\/strong> G\u00f6rev tamamland\u0131\u011f\u0131nda \u00fcretilmesi gereken \u00e7\u0131kt\u0131n\u0131n format\u0131 ve i\u00e7eri\u011fi.<\/li>\n<li><strong>Agent:<\/strong> G\u00f6revi \u00fcstlenecek ajan.<\/li>\n<\/ul>\n<\/li>\n<li>\n<p><strong>Tool (Ara\u00e7):<\/strong> Ajanlar\u0131n d\u0131\u015f d\u00fcnyayla etkile\u015fim kurmas\u0131n\u0131 veya belirli eylemleri ger\u00e7ekle\u015ftirmesini sa\u011flayan fonksiyonlard\u0131r. Bunlar, web aramas\u0131 yapmaktan, dosya okumaya\/yazmaya, API \u00e7a\u011fr\u0131lar\u0131 yapmaya kadar \u00e7e\u015fitli yetenekler olabilir. CrewAI, LangChain&#8217;in ara\u00e7 entegrasyonlar\u0131n\u0131 destekler, bu da geli\u015ftiricilere geni\u015f bir ara\u00e7 yelpazesi sunar. Bir ajan, bir g\u00f6revi yerine getirirken hangi arac\u0131 kullanaca\u011f\u0131na kendi ba\u015f\u0131na karar verebilir.<\/p>\n<ul>\n<li>\u00d6rnekler: <code>SerperDevTool<\/code> (web arama), <code>FileIO<\/code> (dosya i\u015flemleri), \u00f6zel Python fonksiyonlar\u0131.<\/li>\n<\/ul>\n<\/li>\n<li>\n<p><strong>Crew (Ajans\/Ekip):<\/strong> Birbirleriyle i\u015fbirli\u011fi yapan ajanlar\u0131n ve bu ajanlara atanm\u0131\u015f g\u00f6revlerin bir araya geldi\u011fi ana yap\u0131d\u0131r. Bir Crew, belirli bir nihai hedefe ula\u015fmak i\u00e7in ajanlar\u0131 ve g\u00f6revleri koordine eder. Ajanlar, Crew&#8217;in belirledi\u011fi bir &#8220;s\u00fcre\u00e7&#8221; (sequential, hierarchical, consensual) dahilinde birbirleriyle ileti\u015fim kurar ve g\u00f6revleri tamamlamak i\u00e7in i\u015fbirli\u011fi yapar. Bu orkestrasyon, karma\u015f\u0131k problemlerin daha k\u00fc\u00e7\u00fck, y\u00f6netilebilir par\u00e7alara ayr\u0131larak \u00e7\u00f6z\u00fclmesini sa\u011flar.<\/p>\n<ul>\n<li><strong>Agents:<\/strong> Ekipteki t\u00fcm ajanlar.<\/li>\n<li><strong>Tasks:<\/strong> Ekipteki t\u00fcm g\u00f6revler.<\/li>\n<li><strong>Process:<\/strong> Ajanlar\u0131n g\u00f6revleri nas\u0131l y\u00fcr\u00fctece\u011fini belirleyen strateji (\u00f6rn. s\u0131ral\u0131, hiyerar\u015fik).<\/li>\n<li><strong>Verbose:<\/strong> Ajanlar\u0131n d\u00fc\u015f\u00fcnme s\u00fcre\u00e7lerini ve eylemlerini detayl\u0131 olarak g\u00f6rmek i\u00e7in kullan\u0131lan ayar.<\/li>\n<\/ul>\n<\/ol>\n<p>Bu temel kavramlar bir araya geldi\u011finde, CrewAI, ger\u00e7ek d\u00fcnya i\u015f ak\u0131\u015flar\u0131n\u0131 taklit eden dinamik ve ak\u0131ll\u0131 yapay zeka ajanslar\u0131 olu\u015fturmak i\u00e7in g\u00fc\u00e7l\u00fc bir \u00e7er\u00e7eve sunar. Bir sonraki b\u00f6l\u00fcmde, bu kavramlar\u0131 uygulamal\u0131 olarak nas\u0131l hayata ge\u00e7irece\u011fimizi ad\u0131m ad\u0131m inceleyece\u011fiz.<\/p>\n<h2>CrewAI ile \u0130lk Ajans\u0131n\u0131z\u0131 Nas\u0131l Kurars\u0131n\u0131z? Ad\u0131m Ad\u0131m Rehber<\/h2>\n<p>CrewAI&#8217;nin temel kavramlar\u0131n\u0131 anlad\u0131\u011f\u0131m\u0131za g\u00f6re, \u015fimdi ilk yapay zeka ajans\u0131m\u0131z\u0131 kurman\u0131n pratik ad\u0131mlar\u0131na ge\u00e7ebiliriz. Bu b\u00f6l\u00fcm, CrewAI&#8217;yi sisteminize kurmaktan, ilk ajan\u0131n\u0131z\u0131 ve g\u00f6revinizi tan\u0131mlamaya kadar her \u015feyi kapsayacak. Amac\u0131m\u0131z, basit ama i\u015flevsel bir ajans olu\u015fturarak k\u00fct\u00fcphanenin temel i\u015fleyi\u015fini kavramakt\u0131r.<\/p>\n<h3>1. CrewAI Ortam\u0131n\u0131 Haz\u0131rlama ve Kurulum<\/h3>\n<p>\u00d6ncelikle, CrewAI&#8217;yi ve gerekli ba\u011f\u0131ml\u0131l\u0131klar\u0131 Python ortam\u0131n\u0131za kurman\u0131z gerekiyor. Sanal bir ortam kullanmak, ba\u011f\u0131ml\u0131l\u0131k \u00e7ak\u0131\u015fmalar\u0131n\u0131 \u00f6nlemek i\u00e7in her zaman iyi bir uygulamad\u0131r.<\/p>\n<pre><code>\n# Sanal ortam olu\u015fturma (iste\u011fe ba\u011fl\u0131 ama \u00f6nerilir)\npython -m venv crewai_env\nsource crewai_env\/bin\/activate  # Linux\/macOS\n# crewai_env\\Scripts\\activate  # Windows\n\n# CrewAI ve OpenAI k\u00fct\u00fcphanelerini kurma\npip install crewai openai\n<\/code><\/pre>\n<p>CrewAI, b\u00fcy\u00fck dil modelleri (LLM&#8217;ler) ile \u00e7al\u0131\u015ft\u0131\u011f\u0131 i\u00e7in, bir LLM API anahtar\u0131na ihtiyac\u0131n\u0131z olacak. Genellikle OpenAI API anahtar\u0131 kullan\u0131l\u0131r. Bu anahtar\u0131 ortam de\u011fi\u015fkeni olarak ayarlamak en g\u00fcvenli yoldur.<\/p>\n<pre><code>\n# Terminalde ayarlama (ge\u00e7ici)\nexport OPENAI_API_KEY='sk-YOUR_OPENAI_API_KEY'\n\n# Veya bir .env dosyas\u0131 kullanarak (daha kal\u0131c\u0131)\n# .env dosyas\u0131 olu\u015fturun ve i\u00e7ine:\n# OPENAI_API_KEY=sk-YOUR_OPENAI_API_KEY\n# yaz\u0131n. Sonra Python kodunuzda python-dotenv kullan\u0131n.\n<\/code><\/pre>\n<h3>2. Temel Ajan Tan\u0131mlama<\/h3>\n<p>\u015eimdi ilk ajan\u0131m\u0131z\u0131 tan\u0131mlayal\u0131m. Bu ajan, basit bir &#8220;Bilgi Toplay\u0131c\u0131&#8221; rol\u00fcne sahip olacak ve belirli bir konuda bilgi ara\u015ft\u0131rmakla g\u00f6revlendirilecek.<\/p>\n<pre><code>\n# main.py\nimport os\nfrom crewai import Agent, Task, Crew, Process\nfrom langchain_openai import ChatOpenAI # OpenAI modelini kullanmak i\u00e7in\n\n# Ortam de\u011fi\u015fkenini y\u00fckle (e\u011fer .env kullan\u0131yorsan\u0131z)\n# from dotenv import load_dotenv\n# load_dotenv()\n\n# OpenAI API anahtar\u0131n\u0131z\u0131n ayarland\u0131\u011f\u0131ndan emin olun\n# os.environ[\"OPENAI_API_KEY\"] = \"sk-YOUR_OPENAI_API_KEY\" # E\u011fer ortam de\u011fi\u015fkeni olarak ayarlamad\u0131ysan\u0131z\n\n# LLM modelini tan\u0131mla\nllm = ChatOpenAI(model=\"gpt-4o\", temperature=0.7) # \u0130ste\u011fe ba\u011fl\u0131 olarak ba\u015fka bir model de kullanabilirsiniz\n\n# Bilgi Toplay\u0131c\u0131 Ajan\u0131 Tan\u0131mlama\nresearcher = Agent(\n    role='Bilgi Toplay\u0131c\u0131',\n    goal='Verilen konu hakk\u0131nda detayl\u0131 ve do\u011fru bilgi toplamak',\n    backstory='Kapsaml\u0131 ara\u015ft\u0131rmalar yapma konusunda uzmanla\u015fm\u0131\u015f deneyimli bir bilgi toplay\u0131c\u0131.',\n    verbose=True, # Ajan\u0131n d\u00fc\u015f\u00fcnme s\u00fcrecini g\u00f6rmek i\u00e7in True yap\u0131n\n    allow_delegation=False, # Ba\u015fka ajanlara g\u00f6rev devretmesine izin verme\n    llm=llm # Kullan\u0131lacak LLM'i belirtin\n)\n<\/code><\/pre>\n<p>Yukar\u0131daki kod blo\u011funda, <code>Agent<\/code> s\u0131n\u0131f\u0131n\u0131 kullanarak bir <code>researcher<\/code> ajan\u0131 olu\u015fturduk. Bu ajana bir rol, bir hedef ve bir arka plan hikayesi verdik. <code>verbose=True<\/code> ayar\u0131, ajan\u0131n d\u00fc\u015f\u00fcnce s\u00fcre\u00e7lerini konsola yazd\u0131rmas\u0131n\u0131 sa\u011flayarak hata ay\u0131klama ve anlama a\u00e7\u0131s\u0131ndan \u00e7ok faydal\u0131d\u0131r. <code>llm=llm<\/code> ile ajan\u0131m\u0131z\u0131n hangi b\u00fcy\u00fck dil modelini kullanaca\u011f\u0131n\u0131 belirttik.<\/p>\n<h3>3. Temel G\u00f6rev Tan\u0131mlama<\/h3>\n<p>S\u0131rada, ajan\u0131m\u0131za atayaca\u011f\u0131m\u0131z bir g\u00f6rev var. Bu g\u00f6rev, &#8220;Yapay Zeka&#8217;n\u0131n gelece\u011fi hakk\u0131nda bilgi topla&#8221; \u015feklinde basit bir ara\u015ft\u0131rma g\u00f6revi olabilir.<\/p>\n<pre><code>\n# Bilgi Toplama G\u00f6revini Tan\u0131mlama\nresearch_task = Task(\n    description='Yapay Zeka\\'n\u0131n (AI) \u00f6n\u00fcm\u00fczdeki 5 y\u0131l i\u00e7indeki potansiyel geli\u015fimleri, etkileri ve ana trendleri hakk\u0131nda kapsaml\u0131 bir rapor haz\u0131rla.',\n    expected_output='AI\\'\u0131n gelece\u011fine dair ana trendleri, potansiyel etkilerini ve geli\u015fim alanlar\u0131n\u0131 i\u00e7eren detayl\u0131, maddeler halinde bir \u00f6zet.',\n    agent=researcher # Bu g\u00f6revi \u00fcstlenecek ajan\u0131 belirtin\n)\n<\/code><\/pre>\n<p>Burada, <code>Task<\/code> s\u0131n\u0131f\u0131n\u0131 kullanarak bir g\u00f6rev tan\u0131mlad\u0131k. G\u00f6revin ne oldu\u011funu a\u00e7\u0131klayan bir <code>description<\/code>, beklenen \u00e7\u0131kt\u0131y\u0131 belirten bir <code>expected_output<\/code> ve bu g\u00f6revi hangi ajan\u0131n \u00fcstlenece\u011fini g\u00f6steren bir <code>agent<\/code> parametresi verdik.<\/p>\n<h3>4. Ajans\u0131 (Crew) Olu\u015fturma ve \u00c7al\u0131\u015ft\u0131rma<\/h3>\n<p>Son ad\u0131m, ajan\u0131m\u0131z\u0131 ve g\u00f6revimizi bir &#8220;Crew&#8221; i\u00e7inde bir araya getirip \u00e7al\u0131\u015ft\u0131rmakt\u0131r. Bu, CrewAI&#8217;nin orkestrasyon motorunu ba\u015flatacakt\u0131r.<\/p>\n<pre><code>\n# Ajans\u0131 (Crew) Olu\u015fturma\nmy_crew = Crew(\n    agents=[researcher], # Ajans\u0131m\u0131zdaki ajanlar\n    tasks=[research_task], # Ajans\u0131m\u0131zdaki g\u00f6revler\n    process=Process.sequential, # G\u00f6revlerin s\u0131ral\u0131 olarak y\u00fcr\u00fct\u00fclece\u011fini belirtir\n    verbose=True # Ajans\u0131n genel s\u00fcrecini g\u00f6rmek i\u00e7in True yap\u0131n\n)\n\n# Ajans\u0131 \u00c7al\u0131\u015ft\u0131rma\nprint(\"CrewAI Ajans\u0131 G\u00f6revine Ba\u015fl\u0131yor...\")\nresult = my_crew.kickoff()\nprint(\"\\nCrewAI Ajans\u0131 G\u00f6revi Tamamlad\u0131!\")\nprint(\"\\nNihai Sonu\u00e7:\")\nprint(result)\n<\/code><\/pre>\n<p><code>Crew<\/code> s\u0131n\u0131f\u0131, ajanlar\u0131m\u0131z\u0131 ve g\u00f6revlerimizi bir liste olarak al\u0131r. <code>process=Process.sequential<\/code>, g\u00f6revlerin tan\u0131mland\u0131\u011f\u0131 s\u0131rayla y\u00fcr\u00fct\u00fclece\u011fini belirtir. <code>kickoff()<\/code> metodu, ajans\u0131n \u00e7al\u0131\u015fmas\u0131n\u0131 ba\u015flat\u0131r ve nihai \u00e7\u0131kt\u0131y\u0131 d\u00f6nd\u00fcr\u00fcr.<\/p>\n<p>Bu ad\u0131mlar\u0131 takip ederek, CrewAI ile ilk basit yapay zeka ajans\u0131n\u0131z\u0131 ba\u015far\u0131yla kurmu\u015f ve \u00e7al\u0131\u015ft\u0131rm\u0131\u015f olacaks\u0131n\u0131z. Bu temel yap\u0131, daha karma\u015f\u0131k ve rol tabanl\u0131 ajanslar olu\u015fturmak i\u00e7in bir ba\u015flang\u0131\u00e7 noktas\u0131d\u0131r. Bir sonraki b\u00f6l\u00fcmde, ger\u00e7ek d\u00fcnya senaryolar\u0131nda rol tabanl\u0131 ajan orkestrasyonunun nas\u0131l \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131 bir vaka analiziyle inceleyece\u011fiz.<\/p>\n<h2>Rol Tabanl\u0131 Ajan Orkestrasyonu Nas\u0131l \u00c7al\u0131\u015f\u0131r? Vaka Analizi: \u0130\u00e7erik Ajans\u0131<\/h2>\n<p>CrewAI&#8217;nin g\u00fcc\u00fc, ajanlara belirli roller atayarak ve onlar\u0131 bir ekip gibi i\u015fbirli\u011fi yapmaya te\u015fvik ederek karma\u015f\u0131k g\u00f6revleri \u00e7\u00f6zmesinde yatar. Bu b\u00f6l\u00fcmde, ger\u00e7ek d\u00fcnya bir senaryo \u00fczerinden rol tabanl\u0131 ajan orkestrasyonunun nas\u0131l \u00e7al\u0131\u015ft\u0131\u011f\u0131n\u0131 inceleyece\u011fiz: &#8220;\u0130\u00e7erik Olu\u015fturma Ajans\u0131&#8221;. Bu ajans, belirli bir konu hakk\u0131nda blog yaz\u0131s\u0131 tasla\u011f\u0131 haz\u0131rlamak i\u00e7in \u00fc\u00e7 farkl\u0131 role sahip ajan\u0131 kullanacak.<\/p>\n<h3>Vaka Analizi: Blog Yaz\u0131s\u0131 Olu\u015fturma Ajans\u0131<\/h3>\n<p>Hedefimiz, &#8220;Yapay Zeka ve S\u00fcrd\u00fcr\u00fclebilirlik&#8221; konulu bir blog yaz\u0131s\u0131 tasla\u011f\u0131 olu\u015fturmak. Bu s\u00fcre\u00e7 i\u00e7in a\u015fa\u011f\u0131daki rollere sahip ajanlara ihtiyac\u0131m\u0131z var:<\/p>\n<ol>\n<li><strong>Ara\u015ft\u0131rmac\u0131 Ajan:<\/strong> Konuyla ilgili en g\u00fcncel verileri ve trendleri toplar.<\/li>\n<li><strong>Yaz\u0131c\u0131 Ajan:<\/strong> Toplanan verileri kullanarak blog yaz\u0131s\u0131 tasla\u011f\u0131n\u0131 olu\u015fturur.<\/li>\n<li><strong>Edit\u00f6r Ajan:<\/strong> Yaz\u0131lan tasla\u011f\u0131 dilbilgisi, ak\u0131c\u0131l\u0131k ve SEO uyumu a\u00e7\u0131s\u0131ndan kontrol eder ve son halini verir.<\/li>\n<\/ol>\n<p>Bu ajanlar, belirli g\u00f6revleri yerine getirmek i\u00e7in birbirleriyle i\u015fbirli\u011fi yapacaklar. Her ajan\u0131n kendi uzmanl\u0131k alan\u0131 ve kullanabilece\u011fi ara\u00e7lar olacak.<\/p>\n<h3>1. Gerekli Ara\u00e7lar\u0131n Tan\u0131mlanmas\u0131<\/h3>\n<p>Ajanlar\u0131m\u0131z\u0131n bilgiye eri\u015fmesi i\u00e7in bir web arama arac\u0131na ihtiyac\u0131m\u0131z var. LangChain&#8217;in <code>SerperDevTool<\/code>&#8216;u bu i\u015f i\u00e7in idealdir.<\/p>\n<pre><code>\n# main.py devam\u0131\nfrom crewai import Agent, Task, Crew, Process\nfrom langchain_openai import ChatOpenAI\nfrom langchain.tools import SerperDevTool # Web arama arac\u0131\n\n# Ortam de\u011fi\u015fkenlerini y\u00fckleyin ve API anahtarlar\u0131n\u0131 ayarlay\u0131n\n# os.environ[\"OPENAI_API_KEY\"] = \"sk-YOUR_OPENAI_API_KEY\"\n# os.environ[\"SERPER_API_KEY\"] = \"YOUR_SERPER_API_KEY\" # Serper API anahtar\u0131n\u0131z\u0131 buraya girin\n\n# LLM modelini tan\u0131mla\nllm = ChatOpenAI(model=\"gpt-4o\", temperature=0.7)\n\n# Web arama arac\u0131n\u0131 tan\u0131mla\nsearch_tool = SerperDevTool()\n<\/code><\/pre>\n<p><code>SerperDevTool<\/code> kullanabilmek i\u00e7in <a href=\"https:\/\/serper.dev\/\" target=\"_blank\">Serper.dev<\/a> adresinden bir API anahtar\u0131 alman\u0131z ve bunu <code>SERPER_API_KEY<\/code> ortam de\u011fi\u015fkeni olarak ayarlaman\u0131z gerekmektedir.<\/p>\n<h3>2. Rol Tabanl\u0131 Ajanlar\u0131n Tan\u0131mlanmas\u0131<\/h3>\n<p>\u015eimdi, her biri kendi rol\u00fc, hedefi ve arka plan hikayesi olan ajanlar\u0131m\u0131z\u0131 tan\u0131mlayal\u0131m. Ayr\u0131ca, her ajan\u0131n hangi ara\u00e7lar\u0131 kullanabilece\u011fini de belirtelim.<\/p>\n<pre><code>\n# Ara\u015ft\u0131rmac\u0131 Ajan\nresearcher = Agent(\n    role='K\u0131demli Ara\u015ft\u0131rma Analisti',\n    goal='Yapay Zeka ve S\u00fcrd\u00fcr\u00fclebilirlik konusundaki en g\u00fcncel trendleri, teknolojileri ve vaka \u00e7al\u0131\u015fmalar\u0131n\u0131 belirlemek.',\n    backstory='Teknolojik geli\u015fmeleri derinlemesine analiz etme ve anlaml\u0131 i\u00e7g\u00f6r\u00fcler sunma konusunda uzmanla\u015fm\u0131\u015f bir analist.',\n    tools=[search_tool], # Ara\u015ft\u0131rma i\u00e7in web arama arac\u0131n\u0131 kullan\u0131r\n    verbose=True,\n    allow_delegation=False,\n    llm=llm\n)\n\n# Yaz\u0131c\u0131 Ajan\nwriter = Agent(\n    role='Profesyonel Blog Yazar\u0131',\n    goal='Ara\u015ft\u0131rma sonu\u00e7lar\u0131na dayanarak ilgi \u00e7ekici ve bilgilendirici bir blog yaz\u0131s\u0131 tasla\u011f\u0131 olu\u015fturmak.',\n    backstory='Karma\u015f\u0131k konular\u0131 anla\u015f\u0131l\u0131r ve ak\u0131c\u0131 bir dile d\u00f6n\u00fc\u015ft\u00fcrme yetene\u011fine sahip deneyimli bir yazar.',\n    verbose=True,\n    allow_delegation=False,\n    llm=llm\n)\n\n# Edit\u00f6r Ajan\neditor = Agent(\n    role='Uzman Edit\u00f6r',\n    goal='Blog yaz\u0131s\u0131 tasla\u011f\u0131n\u0131 dilbilgisi, yaz\u0131m, ak\u0131c\u0131l\u0131k ve SEO uyumu a\u00e7\u0131s\u0131ndan g\u00f6zden ge\u00e7irmek ve son halini vermek.',\n    backstory='Y\u00fcksek kaliteli ve hatas\u0131z i\u00e7erik \u00fcretiminde titiz bir edit\u00f6r.',\n    verbose=True,\n    allow_delegation=False,\n    llm=llm\n)\n<\/code><\/pre>\n<p>Fark edebilece\u011finiz gibi, <code>researcher<\/code> ajan\u0131 <code>search_tool<\/code>&#8216;u kullanabilirken, <code>writer<\/code> ve <code>editor<\/code> ajanlar\u0131 \u015fimdilik do\u011frudan bir araca sahip de\u011fil. \u00c7\u00fcnk\u00fc onlar\u0131n g\u00f6revi daha \u00e7ok metin \u00fcretimi ve d\u00fczenlemesi \u00fczerine kurulu.<\/p>\n<h3>3. G\u00f6revlerin Tan\u0131mlanmas\u0131 ve Ajanlara Atanmas\u0131<\/h3>\n<p>\u015eimdi, ajanlar\u0131m\u0131z\u0131n s\u0131rayla yerine getirece\u011fi g\u00f6revleri tan\u0131mlayal\u0131m. Her g\u00f6rev, bir \u00f6nceki g\u00f6revin \u00e7\u0131kt\u0131s\u0131n\u0131 bir sonraki g\u00f6revin girdisi olarak kullanacak \u015fekilde tasarlanm\u0131\u015ft\u0131r.<\/p>\n<pre><code>\n# G\u00f6rev 1: Ara\u015ft\u0131rma G\u00f6revi\nresearch_task = Task(\n    description='Yapay Zeka\\'n\u0131n s\u00fcrd\u00fcr\u00fclebilirlik alan\u0131ndaki uygulamalar\u0131n\u0131, ba\u015far\u0131 hikayelerini ve gelecekteki potansiyelini detayl\u0131 olarak ara\u015ft\u0131r. En az 3 farkl\u0131 \u00f6rnek uygulama veya vaka \u00e7al\u0131\u015fmas\u0131 bul.',\n    expected_output='Yapay Zeka\\'n\u0131n s\u00fcrd\u00fcr\u00fclebilirlik \u00fczerindeki etkilerini, g\u00fcncel uygulamalar\u0131n\u0131 ve gelecek trendlerini \u00f6zetleyen maddeler halinde kapsaml\u0131 bir ara\u015ft\u0131rma raporu.',\n    agent=researcher\n)\n\n# G\u00f6rev 2: Yazma G\u00f6revi\nwrite_task = Task(\n    description='Ara\u015ft\u0131rma raporunu kullanarak \"Yapay Zeka ve S\u00fcrd\u00fcr\u00fclebilirlik: Gelece\u011fi \u015eekillendiren Teknolojiler\" ba\u015fl\u0131kl\u0131 800 kelimelik bir blog yaz\u0131s\u0131 tasla\u011f\u0131 olu\u015ftur. Yaz\u0131, giri\u015f, ana geli\u015fme b\u00f6l\u00fcmleri (en az 3 farkl\u0131 AI uygulamas\u0131n\u0131 i\u00e7eren) ve sonu\u00e7 b\u00f6l\u00fcm\u00fcnden olu\u015fmal\u0131d\u0131r. Hedef kitleye hitap eden, bilgilendirici ve ilgi \u00e7ekici bir \u00fcslup kullan.',\n    expected_output='Belirtilen ba\u015fl\u0131k ve kelime say\u0131s\u0131na uygun, iyi yap\u0131land\u0131r\u0131lm\u0131\u015f, bilgilendirici ve ak\u0131c\u0131 bir blog yaz\u0131s\u0131 tasla\u011f\u0131.',\n    agent=writer,\n    context=[research_task] # Bu g\u00f6rev, ara\u015ft\u0131rma g\u00f6revinin \u00e7\u0131kt\u0131s\u0131n\u0131 kullan\u0131r\n)\n\n# G\u00f6rev 3: D\u00fczenleme G\u00f6revi\nedit_task = Task(\n    description='Blog yaz\u0131s\u0131 tasla\u011f\u0131n\u0131 dilbilgisi, yaz\u0131m hatalar\u0131, ak\u0131c\u0131l\u0131k, okunabilirlik ve SEO uyumu (anahtar kelime entegrasyonu) a\u00e7\u0131s\u0131ndan g\u00f6zden ge\u00e7ir. Yaz\u0131y\u0131 son kullan\u0131c\u0131ya haz\u0131r hale getir ve son halini ver.',\n    expected_output='T\u00fcm d\u00fczeltmelerin yap\u0131ld\u0131\u011f\u0131, SEO dostu, hatas\u0131z ve yay\u0131nlanmaya haz\u0131r nihai blog yaz\u0131s\u0131.',\n    agent=editor,\n    context=[write_task] # Bu g\u00f6rev, yazma g\u00f6revinin \u00e7\u0131kt\u0131s\u0131n\u0131 kullan\u0131r\n)\n<\/code><\/pre>\n<p>Burada dikkat \u00e7ekici olan, <code>context<\/code> parametresidir. <code>write_task<\/code>, <code>research_task<\/code>&#8216;\u0131n \u00e7\u0131kt\u0131s\u0131n\u0131 ba\u011flam olarak al\u0131rken, <code>edit_task<\/code> da <code>write_task<\/code>&#8216;\u0131n \u00e7\u0131kt\u0131s\u0131n\u0131 ba\u011flam olarak al\u0131r. Bu, ajanlar\u0131n birbirlerinin i\u015flerini temel alarak ilerlemesini sa\u011flar.<\/p>\n<h3>4. Ajans\u0131 (Crew) Olu\u015fturma ve \u00c7al\u0131\u015ft\u0131rma<\/h3>\n<p>Son olarak, t\u00fcm ajanlar\u0131 ve g\u00f6revleri bir araya getirip ajans\u0131 \u00e7al\u0131\u015ft\u0131ral\u0131m.<\/p>\n<pre><code>\n# \u0130\u00e7erik Ajans\u0131'n\u0131 Olu\u015fturma\ncontent_crew = Crew(\n    agents=[researcher, writer, editor],\n    tasks=[research_task, write_task, edit_task],\n    process=Process.sequential, # G\u00f6revler s\u0131rayla y\u00fcr\u00fct\u00fclecek\n    verbose=True\n)\n\n# Ajans\u0131 \u00c7al\u0131\u015ft\u0131rma\nprint(\"\u0130\u00e7erik Ajans\u0131 G\u00f6revine Ba\u015fl\u0131yor...\")\nblog_post = content_crew.kickoff()\nprint(\"\\n\u0130\u00e7erik Ajans\u0131 G\u00f6revi Tamamlad\u0131!\")\nprint(\"\\nNihai Blog Yaz\u0131s\u0131:\")\nprint(blog_post)\n<\/code><\/pre>\n<p>Bu \u00f6rnekte, CrewAI&#8217;nin rol tabanl\u0131 orkestrasyon yetene\u011fini net bir \u015fekilde g\u00f6rebiliriz. Her ajan kendi uzmanl\u0131k alan\u0131na odaklanarak, bir sonraki ajana belirli bir \u00e7\u0131kt\u0131 sunar. Bu i\u015fbirli\u011fi, karma\u015f\u0131k bir hedefe ula\u015fmak i\u00e7in mod\u00fcler ve verimli bir yol sa\u011flar. Bu yap\u0131, pazarlama kampanyalar\u0131, yaz\u0131l\u0131m geli\u015ftirme, m\u00fc\u015fteri hizmetleri gibi bir\u00e7ok farkl\u0131 alanda uygulanabilir.<\/p>\n<div class=\"expert-tip\">\n    Uzman \u0130pucu: Ajanlar\u0131n\u0131z\u0131 tasarlarken, rollerini ve hedeflerini m\u00fcmk\u00fcn oldu\u011funca spesifik tutmaya \u00f6zen g\u00f6sterin. Bu, ajan\u0131n odaklanmas\u0131n\u0131 art\u0131r\u0131r ve istenmeyen davran\u0131\u015flar\u0131 azalt\u0131r. Ayr\u0131ca, her ajan\u0131n kullanabilece\u011fi ara\u00e7lar\u0131 sadece ihtiyac\u0131 olanlarla s\u0131n\u0131rlamak, gereksiz i\u015flem y\u00fck\u00fcn\u00fc engeller.\n<\/div>\n<h2>Ajanlara \u00d6zel Ara\u00e7lar (Tools) Nas\u0131l Entegre Edilir?<\/h2>\n<p>CrewAI ajanlar\u0131, kendi ba\u015flar\u0131na d\u00fc\u015f\u00fcnme ve karar verme yetene\u011fine sahip olsalar da, d\u0131\u015f d\u00fcnyayla etkile\u015fim kurmalar\u0131 ve belirli eylemleri ger\u00e7ekle\u015ftirmeleri i\u00e7in ara\u00e7lara (Tools) ihtiya\u00e7 duyarlar. Bu ara\u00e7lar, web aramas\u0131 yapmaktan, dosya sistemine eri\u015fmeye, API \u00e7a\u011fr\u0131lar\u0131 yapmaya kadar geni\u015f bir yelpazeyi kapsayabilir. CrewAI, LangChain&#8217;in ara\u00e7 entegrasyonlar\u0131n\u0131 destekleyerek geli\u015ftiricilere b\u00fcy\u00fck esneklik sunar.<\/p>\n<h3>Neden Ara\u00e7lara \u0130htiya\u00e7 Duyar\u0131z?<\/h3>\n<p>B\u00fcy\u00fck Dil Modelleri (LLM&#8217;ler) genellikle belirli bir tarihe kadar e\u011fitilmi\u015f statik bilgiye sahiptir. G\u00fcncel bilgilere eri\u015fmek, ger\u00e7ek zamanl\u0131 veri \u00e7ekmek veya spesifik bir veritaban\u0131nda arama yapmak gibi yetenekler LLM&#8217;lerin do\u011fal bir par\u00e7as\u0131 de\u011fildir. \u0130\u015fte bu noktada ara\u00e7lar devreye girer. Bir ajan, bir g\u00f6revi yerine getirirken, mevcut bilgilere ek olarak bir araca ba\u015fvurmas\u0131 gerekti\u011fine karar verebilir ve bu arac\u0131 kullanarak d\u0131\u015f d\u00fcnyadan bilgi \u00e7ekebilir veya bir eylemi ger\u00e7ekle\u015ftirebilir.<\/p>\n<h3>LangChain Ara\u00e7lar\u0131n\u0131 Entegre Etme<\/h3>\n<p>CrewAI, LangChain&#8217;in zengin ara\u00e7 ekosisteminden do\u011frudan yararlan\u0131r. Daha \u00f6nce <code>SerperDevTool<\/code> \u00f6rne\u011fini g\u00f6rm\u00fc\u015ft\u00fck. \u015eimdi, farkl\u0131 t\u00fcrde ara\u00e7lar\u0131n nas\u0131l entegre edilebilece\u011fine dair birka\u00e7 \u00f6rnek inceleyelim.<\/p>\n<h4>1. Web Arama Arac\u0131 (SerperDevTool)<\/h4>\n<p>Bu, ajanlar\u0131n internette g\u00fcncel bilgi aramas\u0131 yapmas\u0131n\u0131 sa\u011flayan en temel ve en s\u0131k kullan\u0131lan ara\u00e7lardan biridir. Daha \u00f6nce de belirtti\u011fimiz gibi, <a href=\"https:\/\/serper.dev\/\" target=\"_blank\">Serper.dev<\/a>&#8216;den bir API anahtar\u0131 alman\u0131z gerekmektedir.<\/p>\n<pre><code>\nfrom langchain.tools import SerperDevTool\nimport os\n\n# os.environ[\"SERPER_API_KEY\"] = \"YOUR_SERPER_API_KEY\"\n\nsearch_tool = SerperDevTool()\n\n# Ajan tan\u0131m\u0131 i\u00e7inde kullan\u0131m:\n# researcher = Agent(\n#     # ... di\u011fer parametreler ...\n#     tools=[search_tool],\n#     # ...\n# )\n<\/code><\/pre>\n<h4>2. Dosya Okuma\/Yazma Arac\u0131 (FileIO)<\/h4>\n<p>Ajanlar\u0131n dosya sistemleriyle etkile\u015fim kurmas\u0131 gerekti\u011finde <code>FileIO<\/code> arac\u0131 kullan\u0131labilir. Bu, ajanlar\u0131n bir dosyadan veri okumas\u0131n\u0131 veya \u00fcrettikleri \u00e7\u0131kt\u0131y\u0131 bir dosyaya yazmas\u0131n\u0131 sa\u011flar.<\/p>\n<pre><code>\nfrom langchain.tools import FileIO\nfrom pathlib import Path\n\n# Bir dosya okuma arac\u0131 tan\u0131mlama\nread_tool = FileIO(\n    file_path=Path(\"veri.txt\"), # Okunacak dosyan\u0131n yolu\n    mode=\"r\"\n)\n\n# Bir dosya yazma arac\u0131 tan\u0131mlama\nwrite_tool = FileIO(\n    file_path=Path(\"cikti.md\"), # Yaz\u0131lacak dosyan\u0131n yolu\n    mode=\"w\"\n)\n\n# Ajan tan\u0131m\u0131 i\u00e7inde kullan\u0131m:\n# data_analyst = Agent(\n#     # ...\n#     tools=[read_tool, write_tool],\n#     # ...\n# )\n<\/code><\/pre>\n<p>Bu \u00f6rnekte, ajan\u0131n\u0131z\u0131n <code>veri.txt<\/code> dosyas\u0131n\u0131 okuyabilece\u011fini ve <code>cikti.md<\/code> dosyas\u0131na yazabilece\u011fini belirtiyoruz. Dosya yollar\u0131n\u0131 ve modlar\u0131n\u0131 (okuma &#8216;r&#8217;, yazma &#8216;w&#8217;) dikkatlice ayarlaman\u0131z \u00f6nemlidir.<\/p>\n<h4>3. \u00d6zel Python Fonksiyonlar\u0131n\u0131 Ara\u00e7 Olarak Tan\u0131mlama<\/h4>\n<p>Bazen, ajanlar\u0131n\u0131z\u0131n belirli bir API&#8217;ye ba\u011flanmas\u0131, \u00f6zel bir hesaplama yapmas\u0131 veya sizin tan\u0131mlad\u0131\u011f\u0131n\u0131z karma\u015f\u0131k bir mant\u0131\u011f\u0131 y\u00fcr\u00fctmesi gerekebilir. Bu durumlarda, kendi Python fonksiyonlar\u0131n\u0131z\u0131 CrewAI i\u00e7in bir ara\u00e7 olarak tan\u0131mlayabilirsiniz. <code>tool<\/code> dekorat\u00f6r\u00fc bu i\u015fi kolayla\u015ft\u0131r\u0131r.<\/p>\n<pre><code>\nfrom crewai import Agent, Task, Crew, Process, tool\nfrom langchain_openai import ChatOpenAI\nimport requests # API \u00e7a\u011fr\u0131lar\u0131 i\u00e7in\n\n# LLM modelini tan\u0131mla\nllm = ChatOpenAI(model=\"gpt-4o\", temperature=0.7)\n\n# \u00d6zel bir ara\u00e7 fonksiyonu tan\u0131mlama\n@tool(\"Hava Durumu Sorgulama Arac\u0131\")\ndef get_weather(city: str) -> str:\n    \"\"\"Belirtilen \u015fehir i\u00e7in g\u00fcncel hava durumu bilgisini getirir.\"\"\"\n    api_key = \"YOUR_WEATHER_API_KEY\" # Ger\u00e7ek bir API anahtar\u0131 kullan\u0131n\n    base_url = f\"http:\/\/api.openweathermap.org\/data\/2.5\/weather?q={city}&appid={api_key}&units=metric\"\n    try:\n        response = requests.get(base_url)\n        response.raise_for_status() # HTTP hatalar\u0131 i\u00e7in\n        data = response.json()\n        if data[\"cod\"] == 200:\n            weather_desc = data[\"weather\"][0][\"description\"]\n            temp = data[\"main\"][\"temp\"]\n            return f\"{city} \u015fehrinde hava durumu: {weather_desc}, S\u0131cakl\u0131k: {temp}\u00b0C.\"\n        else:\n            return f\"Hava durumu bilgisi al\u0131namad\u0131: {data.get('message', 'Bilinmeyen Hata')}\"\n    except requests.exceptions.RequestException as e:\n        return f\"Hava durumu sorgulamas\u0131nda hata olu\u015ftu: {e}\"\n\n# Ajan tan\u0131m\u0131 i\u00e7inde kullan\u0131m:\nweather_reporter = Agent(\n    role='Hava Durumu Muhabiri',\n    goal='Belirtilen \u015fehirler i\u00e7in g\u00fcncel hava durumu raporlar\u0131 sunmak.',\n    backstory='D\u00fcnya genelindeki hava durumu verilerini an\u0131nda analiz eden ve raporlayan uzman.',\n    tools=[get_weather], # \u00d6zel arac\u0131m\u0131z\u0131 ekledik\n    verbose=True,\n    llm=llm\n)\n\n# G\u00f6rev tan\u0131m\u0131:\nweather_task = Task(\n    description='\u0130stanbul ve Ankara i\u00e7in g\u00fcncel hava durumu raporlar\u0131n\u0131 topla ve \u00f6zetle.',\n    expected_output='\u0130stanbul ve Ankara\\'n\u0131n hava durumu bilgilerini i\u00e7eren k\u0131sa bir rapor.',\n    agent=weather_reporter\n)\n\n# Crew olu\u015fturma ve \u00e7al\u0131\u015ft\u0131rma (yukar\u0131daki gibi)\nweather_crew = Crew(\n    agents=[weather_reporter],\n    tasks=[weather_task],\n    process=Process.sequential,\n    verbose=True\n)\n\n# result = weather_crew.kickoff()\n# print(result)\n<\/code><\/pre>\n<p><code>@tool<\/code> dekorat\u00f6r\u00fc sayesinde herhangi bir Python fonksiyonunu CrewAI i\u00e7in bir araca d\u00f6n\u00fc\u015ft\u00fcrebilirsiniz. Fonksiyonun bir docstring&#8217;e sahip olmas\u0131 ve parametrelerinin tip ipu\u00e7lar\u0131yla belirtilmesi (\u00f6rn. <code>city: str<\/code>) \u00f6nemlidir, \u00e7\u00fcnk\u00fc bu bilgiler LLM&#8217;in arac\u0131 ne zaman ve nas\u0131l kullanaca\u011f\u0131n\u0131 anlamas\u0131na yard\u0131mc\u0131 olur. Bu esneklik, CrewAI&#8217;nin ger\u00e7ek d\u00fcnya problemlerini \u00e7\u00f6zmek i\u00e7in neredeyse s\u0131n\u0131rs\u0131z bir potansiyele sahip olmas\u0131n\u0131 sa\u011flar.<\/p>\n<h2>Performans\u0131 Art\u0131ran \u0130pu\u00e7lar\u0131 ve \u0130leri Seviye CrewAI Kullan\u0131m\u0131<\/h2>\n<p>CrewAI&#8217;yi temel d\u00fczeyde kullanmay\u0131 \u00f6\u011frendik, ancak performans\u0131n\u0131 optimize etmek ve daha karma\u015f\u0131k senaryolar i\u00e7in ileri d\u00fczey \u00f6zelliklerinden yararlanmak, projelerinizin ba\u015far\u0131s\u0131 i\u00e7in kritik \u00f6neme sahiptir. \u0130\u015fte CrewAI deneyiminizi bir \u00fcst seviyeye ta\u015f\u0131yacak baz\u0131 ipu\u00e7lar\u0131 ve teknikler.<\/p>\n<h3>1. Ajanlar\u0131n &#8220;Process&#8221; T\u00fcr\u00fcn\u00fc Anlamak ve Optimize Etmek<\/h3>\n<p>CrewAI, ajanlar\u0131n g\u00f6revleri nas\u0131l koordine edece\u011fini belirleyen farkl\u0131 s\u00fcre\u00e7 tipleri sunar:<\/p>\n<ul>\n<li>\n<p><strong><code>Process.sequential<\/code> (S\u0131ral\u0131):<\/strong> G\u00f6revler, tan\u0131mland\u0131klar\u0131 s\u0131rayla birer birer y\u00fcr\u00fct\u00fcl\u00fcr. Bir g\u00f6rev tamamland\u0131\u011f\u0131nda, \u00e7\u0131kt\u0131s\u0131 bir sonraki g\u00f6reve ba\u011flam olarak aktar\u0131l\u0131r. Bu, basit ve do\u011frusal i\u015f ak\u0131\u015flar\u0131 i\u00e7in idealdir.<\/p>\n<div class=\"expert-tip\">\n            Uzman \u0130pucu: Yeni ba\u015flayanlar i\u00e7in <code>Process.sequential<\/code> ile ba\u015flamak, ajans\u0131n davran\u0131\u015f\u0131n\u0131 anlamak a\u00e7\u0131s\u0131ndan en kolay yoldur. Karma\u015f\u0131kla\u015fan s\u00fcre\u00e7lerde di\u011fer se\u00e7eneklere ge\u00e7ebilirsiniz.\n        <\/div>\n<\/li>\n<li>\n<p><strong><code>Process.hierarchical<\/code> (Hiyerar\u015fik):<\/strong> Bu s\u00fcre\u00e7te, bir &#8220;Y\u00f6netici Ajan&#8221; atan\u0131r. Y\u00f6netici Ajan, di\u011fer ajanlara g\u00f6revler atar, onlar\u0131n ilerlemesini izler ve gerekirse m\u00fcdahale eder. Bu, daha karma\u015f\u0131k, dallanabilen veya dinamik olarak g\u00f6rev atamas\u0131 gerektiren i\u015f ak\u0131\u015flar\u0131 i\u00e7in uygundur. Y\u00f6netici Ajan, g\u00f6revi tamamlamak i\u00e7in hangi ajan\u0131n hangi g\u00f6revi yapaca\u011f\u0131na karar verir.<\/p>\n<pre><code>\n# Hiyerar\u015fik s\u00fcre\u00e7 i\u00e7in Y\u00f6netici Ajan tan\u0131mlamas\u0131\nmanager_llm = ChatOpenAI(model=\"gpt-4o\", temperature=0.7) # Y\u00f6netici i\u00e7in farkl\u0131 bir LLM kullanabilirsiniz\n\nmanager_agent = Agent(\n    role='Proje Y\u00f6neticisi',\n    goal='T\u00fcm ajanlar\u0131n g\u00f6revlerini en verimli \u015fekilde tamamlamas\u0131n\u0131 sa\u011flamak ve nihai hedefe ula\u015fmak.',\n    backstory='Karma\u015f\u0131k projeleri y\u00f6netme ve ekipleri koordine etme konusunda deneyimli bir lider.',\n    verbose=True,\n    llm=manager_llm\n)\n\n# Crew olu\u015ftururken:\n# my_hierarchical_crew = Crew(\n#     agents=[manager_agent, researcher, writer, editor],\n#     tasks=[research_task, write_task, edit_task],\n#     process=Process.hierarchical,\n#     manager_llm=manager_llm, # Y\u00f6netici i\u00e7in kullan\u0131lacak LLM\n#     verbose=True\n# )\n        <\/code><\/pre>\n<\/li>\n<li>\n<p><strong><code>Process.consensual<\/code> (Konsens\u00fcs):<\/strong> Bu deneysel s\u00fcre\u00e7te, t\u00fcm ajanlar bir g\u00f6revi tamamlamak i\u00e7in tart\u0131\u015f\u0131r ve bir fikir birli\u011fine varmaya \u00e7al\u0131\u015f\u0131r. Daha \u00e7ok ara\u015ft\u0131rma veya fikir f\u0131rt\u0131nas\u0131 gerektiren senaryolar i\u00e7in d\u00fc\u015f\u00fcn\u00fclebilir.<\/p>\n<\/li>\n<\/ul>\n<h3>2. Ajanlar Aras\u0131 G\u00f6rev Devri (Delegation)<\/h3>\n<p>Bir ajan, kendi uzmanl\u0131k alan\u0131n\u0131n d\u0131\u015f\u0131na \u00e7\u0131kan bir g\u00f6revle kar\u015f\u0131la\u015ft\u0131\u011f\u0131nda veya daha iyi bir sonuca ula\u015fmak i\u00e7in ba\u015fka bir ajan\u0131n yard\u0131m\u0131na ihtiya\u00e7 duydu\u011funda g\u00f6revi devredebilir. Bu, <code>allow_delegation=True<\/code> parametresi ile etkinle\u015ftirilir.<\/p>\n<pre><code>\n# G\u00f6rev devrine izin veren bir ajan\nflexible_researcher = Agent(\n    role='Esnek Ara\u015ft\u0131rmac\u0131',\n    goal='En do\u011fru bilgiyi bulmak, gerekirse uzmanlara dan\u0131\u015fmak.',\n    backstory='Bilgiye ula\u015fmak i\u00e7in her yolu deneyen, i\u015fbirli\u011fine a\u00e7\u0131k bir ara\u015ft\u0131rmac\u0131.',\n    verbose=True,\n    allow_delegation=True, # G\u00f6rev devrine izin ver\n    llm=llm\n)\n<\/code><\/pre>\n<p>Bir ajan <code>allow_delegation=True<\/code> olarak ayarland\u0131\u011f\u0131nda, bir g\u00f6revi yerine getiremeyece\u011fini d\u00fc\u015f\u00fcnd\u00fc\u011f\u00fcnde veya daha iyi bir \u00e7\u0131kt\u0131 i\u00e7in ba\u015fka bir ajan\u0131n uzmanl\u0131\u011f\u0131na ihtiya\u00e7 duydu\u011funda, g\u00f6revi Crew&#8217;deki di\u011fer uygun ajanlara devretmeyi d\u00fc\u015f\u00fcnecektir. Bu, ajans\u0131n daha esnek ve uyarlanabilir olmas\u0131n\u0131 sa\u011flar.<\/p>\n<h3>3. Ajanlar\u0131n Haf\u0131zas\u0131n\u0131 Kullanma<\/h3>\n<p>Ajanlar varsay\u0131lan olarak k\u0131sa vadeli haf\u0131zaya sahiptirler (yani mevcut g\u00f6rev ba\u011flam\u0131n\u0131 hat\u0131rlarlar). Ancak, daha uzun s\u00fcreli ve g\u00f6revler aras\u0131 tutarl\u0131l\u0131k i\u00e7in haf\u0131za sistemleri entegre edilebilir. CrewAI, bu konuda LangChain&#8217;in haf\u0131za mod\u00fcllerini kullanman\u0131za olanak tan\u0131r. \u00d6rne\u011fin, bir &#8220;chat history&#8221; (sohbet ge\u00e7mi\u015fi) haf\u0131zas\u0131, ajan\u0131n \u00f6nceki etkile\u015fimlerini hat\u0131rlamas\u0131n\u0131 sa\u011flayabilir.<\/p>\n<pre><code>\nfrom langchain.memory import ConversationSummaryBufferMemory\n\n# Ajan i\u00e7in haf\u0131za tan\u0131mlama\nagent_memory = ConversationSummaryBufferMemory(\n    llm=llm,\n    max_token_limit=1000, # Haf\u0131zada tutulacak maksimum token say\u0131s\u0131\n    memory_key=\"chat_history\", # Haf\u0131zan\u0131n anahtar\u0131\n    return_messages=True\n)\n\n# Ajan tan\u0131m\u0131 i\u00e7inde haf\u0131zay\u0131 kullanma:\n# long_term_agent = Agent(\n#     # ...\n#     memory=agent_memory,\n#     # ...\n# )\n<\/code><\/pre>\n<p>Haf\u0131za kullan\u0131m\u0131, \u00f6zellikle \u00e7ok ad\u0131ml\u0131 ve birbirine ba\u011fl\u0131 g\u00f6revlerde ajan\u0131n tutarl\u0131l\u0131\u011f\u0131n\u0131 ve ba\u011flam\u0131 koruma yetene\u011fini \u00f6nemli \u00f6l\u00e7\u00fcde art\u0131r\u0131r. Ancak, haf\u0131za kullanmak LLM \u00e7a\u011fr\u0131lar\u0131n\u0131n maliyetini ve gecikmesini art\u0131rabilece\u011fi i\u00e7in dikkatli kullan\u0131lmal\u0131d\u0131r.<\/p>\n<h3>4. Verbose \u00c7\u0131kt\u0131 ve Hata Ay\u0131klama<\/h3>\n<p><code>verbose=True<\/code> ayar\u0131, CrewAI&#8217;nin en de\u011ferli hata ay\u0131klama ara\u00e7lar\u0131ndan biridir. Hem ajan hem de Crew seviyesinde bu ayar\u0131 etkinle\u015ftirerek, ajanlar\u0131n d\u00fc\u015f\u00fcnce s\u00fcre\u00e7lerini (<code>thought<\/code>), kulland\u0131klar\u0131 ara\u00e7lar\u0131 (<code>tool_code<\/code>), g\u00f6zlemlerini (<code>observation<\/code>) ve nihai kararlar\u0131n\u0131 (<code>final_answer<\/code>) ad\u0131m ad\u0131m takip edebilirsiniz. Bu, ajan\u0131n neden belirli bir \u015fekilde davrand\u0131\u011f\u0131n\u0131 anlaman\u0131za ve hatalar\u0131 tespit etmenize yard\u0131mc\u0131 olur.<\/p>\n<pre><code>\n# Hem ajan hem de crew seviyesinde verbose etkinle\u015ftirme\n# researcher = Agent(..., verbose=True, ...)\n# my_crew = Crew(..., verbose=True)\n<\/code><\/pre>\n<h3>5. Prompt M\u00fchendisli\u011fi ve Ajan Tan\u0131mlar\u0131n\u0131n \u0130yile\u015ftirilmesi<\/h3>\n<p>Ajanlar\u0131n rolleri, hedefleri ve arka plan hikayeleri (backstory) asl\u0131nda birer prompt&#8217;tur. Bu prompt&#8217;lar\u0131 ne kadar net ve detayl\u0131 yazarsan\u0131z, ajan\u0131n davran\u0131\u015f\u0131n\u0131 o kadar iyi y\u00f6nlendirirsiniz. Anahtar kelimeler, beklentiler ve k\u0131s\u0131tlamalar konusunda spesifik olun. \u00d6rne\u011fin:<\/p>\n<ul>\n<li><strong>Rol:<\/strong> &#8220;K\u0131demli Pazarlama Stratejisti&#8221; yerine &#8220;Veri odakl\u0131, B2B SaaS \u015firketleri i\u00e7in pazarlama stratejileri geli\u015ftiren K\u0131demli Pazarlama Stratejisti&#8221;.<\/li>\n<li><strong>Hedef:<\/strong> &#8220;En iyi stratejiyi bulmak&#8221; yerine &#8220;Hedef kitle segmentasyonu yaparak, %15 d\u00f6n\u00fc\u015f\u00fcm art\u0131\u015f\u0131 sa\u011flayacak yeni bir dijital pazarlama stratejisi geli\u015ftirmek&#8221;.<\/li>\n<li><strong>Backstory:<\/strong> &#8220;Tecr\u00fcbeli bir analist&#8221; yerine &#8220;Be\u015f y\u0131ld\u0131r pazar ara\u015ft\u0131rmas\u0131 ve rekabet analizi alan\u0131nda \u00e7al\u0131\u015fm\u0131\u015f, kritik i\u00e7g\u00f6r\u00fcler sunma konusunda uzmanla\u015fm\u0131\u015f bir analist&#8221;.<\/li>\n<\/ul>\n<p>Bu detaylar, LLM&#8217;in ajan\u0131n rol\u00fcn\u00fc daha iyi anlamas\u0131na ve g\u00f6revleri bu ba\u011flamda ele almas\u0131na yard\u0131mc\u0131 olur.<\/p>\n<div class=\"expert-tip\">\n    Uzman \u0130pucu: Ajanlar\u0131n\u0131z\u0131n bir g\u00f6revi tamamlamakta zorland\u0131\u011f\u0131n\u0131 fark ederseniz, \u00f6ncelikle rollerini, hedeflerini ve g\u00f6rev tan\u0131mlar\u0131n\u0131 g\u00f6zden ge\u00e7irin. Bazen k\u00fc\u00e7\u00fck bir kelime de\u011fi\u015fikli\u011fi bile ajan\u0131n davran\u0131\u015f\u0131nda b\u00fcy\u00fck fark yaratabilir. Ayr\u0131ca, ajan\u0131n kullanabilece\u011fi ara\u00e7lar\u0131n g\u00f6revi \u00e7\u00f6zmek i\u00e7in yeterli olup olmad\u0131\u011f\u0131n\u0131 kontrol edin.\n<\/div>\n<p>Bu ileri seviye ipu\u00e7lar\u0131 ve teknikler, CrewAI ile daha g\u00fc\u00e7l\u00fc, verimli ve uyarlanabilir yapay zeka ajanslar\u0131 olu\u015fturman\u0131za yard\u0131mc\u0131 olacakt\u0131r. Deneme yapmaktan ve farkl\u0131 konfig\u00fcrasyonlar\u0131 test etmekten \u00e7ekinmeyin; en iyi sonu\u00e7lar genellikle iterasyon ve ince ayar yoluyla elde edilir.<\/p>\n<h2>Sonu\u00e7: CrewAI ile Gelece\u011fin \u0130\u015f Ak\u0131\u015flar\u0131n\u0131 \u015eekillendirin ve S\u0131k\u00e7a Sorulan Sorular<\/h2>\n<p>CrewAI, yapay zeka ajanlar\u0131n\u0131 belirli rollerle donatarak ve onlar\u0131 bir ekip halinde orkestre ederek karma\u015f\u0131k i\u015f ak\u0131\u015flar\u0131n\u0131 otomatikle\u015ftirmek i\u00e7in devrim niteli\u011finde bir yakla\u015f\u0131m sunuyor. Bu rehber boyunca, CrewAI&#8217;nin temel kavramlar\u0131ndan, ilk ajans\u0131n\u0131z\u0131 kurmaya, rol tabanl\u0131 orkestrasyonu ger\u00e7ek d\u00fcnya senaryolar\u0131nda uygulamaya ve ajanlara \u00f6zel ara\u00e7lar entegre etmeye kadar geni\u015f bir yelpazeyi ele ald\u0131k. Ayr\u0131ca, performans optimizasyonu ve ileri d\u00fczey kullan\u0131m ipu\u00e7lar\u0131yla CrewAI&#8217;den en iyi \u015fekilde nas\u0131l yararlanabilece\u011finizi g\u00f6sterdik.<\/p>\n<p>CrewAI&#8217;nin esnek ve mod\u00fcler yap\u0131s\u0131 sayesinde, pazarlama, i\u00e7erik olu\u015fturma, yaz\u0131l\u0131m geli\u015ftirme, m\u00fc\u015fteri hizmetleri ve veri analizi gibi bir\u00e7ok alanda otonom ajanslar olu\u015fturabilirsiniz. Bu, sadece zaman ve kaynak tasarrufu sa\u011flamakla kalmaz, ayn\u0131 zamanda insan ekiplerinin daha stratejik ve yarat\u0131c\u0131 g\u00f6revlere odaklanmas\u0131na olanak tan\u0131r. Gelecekte, CrewAI gibi ara\u00e7lar, yapay zeka destekli otomasyonun i\u015f s\u00fcre\u00e7lerimize entegrasyonunda kilit bir rol oynayacak ve i\u015fletmelerin daha \u00e7evik, verimli ve yenilik\u00e7i olmas\u0131n\u0131 sa\u011flayacakt\u0131r. Kendi yapay zeka ajanslar\u0131n\u0131z\u0131 kurmaya ba\u015flamak i\u00e7in \u015fimdi tam zaman\u0131!<\/p>\n<h3>S\u0131k\u00e7a Sorulan Sorular (SSS)<\/h3>\n<div class=\"faq-item\">\n<div class=\"faq-question\">CrewAI kullanmak i\u00e7in hangi LLM&#8217;lere ihtiyac\u0131m var?<\/div>\n<div class=\"faq-answer\">\n<p>CrewAI, LangChain arac\u0131l\u0131\u011f\u0131yla bir\u00e7ok B\u00fcy\u00fck Dil Modelini (LLM) destekler. En yayg\u0131n kullan\u0131lanlar OpenAI modelleridir (GPT-3.5, GPT-4, GPT-4o gibi). Ancak, Hugging Face Hub&#8217;daki modeller, Anthropic&#8217;in Claude&#8217;u veya yerel olarak \u00e7al\u0131\u015fan a\u00e7\u0131k kaynakl\u0131 LLM&#8217;ler gibi di\u011fer modelleri de entegre edebilirsiniz. Se\u00e7iminiz, projenizin gereksinimlerine ve maliyet k\u0131s\u0131tlamalar\u0131na ba\u011fl\u0131d\u0131r.<\/p>\n<\/p><\/div>\n<\/div>\n<div class=\"faq-item\">\n<div class=\"faq-question\">CrewAI ajanslar\u0131 ne kadar karma\u015f\u0131k g\u00f6revleri \u00e7\u00f6zebilir?<\/div>\n<div class=\"faq-answer\">\n<p>CrewAI ajanslar\u0131, birden fazla ajan\u0131n i\u015fbirli\u011fi yapmas\u0131 ve ara\u00e7lar\u0131 kullanmas\u0131 sayesinde olduk\u00e7a karma\u015f\u0131k g\u00f6revleri \u00e7\u00f6zebilir. G\u00f6rev ne kadar iyi tan\u0131mlanm\u0131\u015f, ajanlar\u0131n rolleri ne kadar net ve ara\u00e7lar\u0131 ne kadar uygunsa, ajans\u0131n ba\u015far\u0131 oran\u0131 o kadar y\u00fcksek olur. Hiyerar\u015fik s\u00fcre\u00e7ler ve g\u00f6rev devri gibi \u00f6zellikler, ajanslar\u0131n daha adaptif olmas\u0131n\u0131 sa\u011flar.<\/p>\n<\/p><\/div>\n<\/div>\n<div class=\"faq-item\">\n<div class=\"faq-question\">CrewAI&#8217;nin performans\u0131 nas\u0131l optimize edilir?<\/div>\n<div class=\"faq-answer\">\n<p>Performans\u0131 optimize etmek i\u00e7in birka\u00e7 yol vard\u0131r:<\/p>\n<ol>\n<li>Ajanlar\u0131n rollerini, hedeflerini ve arka plan hikayelerini (prompt&#8217;lar\u0131) net ve spesifik tutun.<\/li>\n<li>Gereksiz ara\u00e7 entegrasyonlar\u0131ndan ka\u00e7\u0131n\u0131n, sadece ihtiyac\u0131 olan ajanlara gerekli ara\u00e7lar\u0131 verin.<\/li>\n<li><code>verbose=True<\/code> \u00e7\u0131kt\u0131s\u0131n\u0131 kullanarak ajan\u0131n d\u00fc\u015f\u00fcnce s\u00fcrecini izleyin ve iyile\u015ftirme alanlar\u0131n\u0131 belirleyin.<\/li>\n<li>Daha k\u00fc\u00e7\u00fck, y\u00f6netilebilir g\u00f6revlere b\u00f6l\u00fcn ve <code>Process.sequential<\/code> ile ba\u015flay\u0131n, gerekti\u011finde <code>Process.hierarchical<\/code>&#8216;a ge\u00e7in.<\/li>\n<li>Daha d\u00fc\u015f\u00fck maliyetli veya daha h\u0131zl\u0131 LLM&#8217;leri deneyerek dengeyi bulun.<\/li>\n<\/ol>\n<\/p><\/div>\n<\/div>\n<div class=\"faq-item\">\n<div class=\"faq-question\">CrewAI&#8217;nin gelece\u011fi nas\u0131l g\u00f6r\u00fcn\u00fcyor?<\/div>\n<div class=\"faq-answer\">\n<p>CrewAI, aktif olarak geli\u015ftirilen ve b\u00fcy\u00fcyen bir k\u00fct\u00fcphanedir. Gelecekte, daha fazla LLM entegrasyonu, geli\u015fmi\u015f haf\u0131za y\u00f6netim sistemleri, daha dinamik g\u00f6rev atama mekanizmalar\u0131 ve kullan\u0131c\u0131 aray\u00fcz\u00fc entegrasyonlar\u0131 gibi \u00f6zelliklerin eklenmesi beklenmektedir. Yapay zeka ajanlar\u0131n\u0131n i\u015f ak\u0131\u015flar\u0131m\u0131za daha derinlemesine entegre olmas\u0131yla, CrewAI gibi ara\u00e7lar\u0131n \u00f6nemi artmaya devam edecektir.<\/p>\n<\/p><\/div>\n<\/div>\n<p><\/body><\/p>\n","protected":false},"excerpt":{"rendered":"CrewAI: Rol Tabanl\u0131 Ajan Orkestrasyonuna Pratik Bir Rehber G\u00fcn\u00fcm\u00fcz\u00fcn karma\u015f\u0131k i\u015f d\u00fcnyas\u0131nda, tekrar eden g\u00f6revleri ve \u00e7ok ad\u0131ml\u0131&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-37549","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>Giri\u015f: Yapay Zeka Ajanslar\u0131 ile \u0130\u015f Ak\u0131\u015flar\u0131n\u0131z\u0131 Neden Otomatikle\u015ftirmelisiniz?<\/title>\n<meta name=\"description\" content=\"G\u00fcn\u00fcm\u00fcz\u00fcn karma\u015f\u0131k i\u015f d\u00fcnyas\u0131nda, tekrar eden g\u00f6revleri ve \u00e7ok ad\u0131ml\u0131 s\u00fcre\u00e7leri otomatikle\u015ftirmek, verimlili\u011fi art\u0131rman\u0131n anahtar\u0131d\u0131r. CrewAI, yapay zeka ajanlar\u0131n\u0131 belirli rollerle donatarak i\u015f ak\u0131\u015flar\u0131n\u0131z\u0131 ak\u0131ll\u0131ca y\u00f6netmenizi sa\u011flayan g\u00fc\u00e7l\u00fc bir Python k\u00fct\u00fcphanesidir.\" \/>\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\/giris-yapay-zeka-ajanslari-ile-is-akislarinizi-neden-otomatiklestirmelisiniz\/\" \/>\n<meta property=\"og:locale\" content=\"tr_TR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Giri\u015f: Yapay Zeka Ajanslar\u0131 ile \u0130\u015f Ak\u0131\u015flar\u0131n\u0131z\u0131 Neden Otomatikle\u015ftirmelisiniz?\" \/>\n<meta property=\"og:description\" content=\"G\u00fcn\u00fcm\u00fcz\u00fcn karma\u015f\u0131k i\u015f d\u00fcnyas\u0131nda, tekrar eden g\u00f6revleri ve \u00e7ok ad\u0131ml\u0131 s\u00fcre\u00e7leri otomatikle\u015ftirmek, verimlili\u011fi art\u0131rman\u0131n anahtar\u0131d\u0131r. CrewAI, yapay zeka ajanlar\u0131n\u0131 belirli rollerle donatarak i\u015f ak\u0131\u015flar\u0131n\u0131z\u0131 ak\u0131ll\u0131ca y\u00f6netmenizi sa\u011flayan g\u00fc\u00e7l\u00fc bir Python k\u00fct\u00fcphanesidir.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/fatihsoysal.com\/blog\/giris-yapay-zeka-ajanslari-ile-is-akislarinizi-neden-otomatiklestirmelisiniz\/\" \/>\n<meta property=\"og:site_name\" content=\"Kodlar\u0131n Gizemli D\u00fcnyas\u0131\" \/>\n<meta property=\"article:published_time\" content=\"2026-01-08T13:21:05+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=\"28 dakika\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/giris-yapay-zeka-ajanslari-ile-is-akislarinizi-neden-otomatiklestirmelisiniz\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/giris-yapay-zeka-ajanslari-ile-is-akislarinizi-neden-otomatiklestirmelisiniz\/\"},\"author\":{\"name\":\"Fatih Soysal\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"headline\":\"Giri\u015f: Yapay Zeka Ajanslar\u0131 ile \u0130\u015f Ak\u0131\u015flar\u0131n\u0131z\u0131 Neden Otomatikle\u015ftirmelisiniz?\",\"datePublished\":\"2026-01-08T13:21:05+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/giris-yapay-zeka-ajanslari-ile-is-akislarinizi-neden-otomatiklestirmelisiniz\/\"},\"wordCount\":4010,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/giris-yapay-zeka-ajanslari-ile-is-akislarinizi-neden-otomatiklestirmelisiniz\/#respond\"]}],\"copyrightYear\":\"2026\",\"copyrightHolder\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#organization\"}},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/giris-yapay-zeka-ajanslari-ile-is-akislarinizi-neden-otomatiklestirmelisiniz\/\",\"url\":\"https:\/\/fatihsoysal.com\/blog\/giris-yapay-zeka-ajanslari-ile-is-akislarinizi-neden-otomatiklestirmelisiniz\/\",\"name\":\"Giri\u015f: Yapay Zeka Ajanslar\u0131 ile \u0130\u015f Ak\u0131\u015flar\u0131n\u0131z\u0131 Neden Otomatikle\u015ftirmelisiniz?\",\"isPartOf\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/#website\"},\"datePublished\":\"2026-01-08T13:21:05+00:00\",\"description\":\"G\u00fcn\u00fcm\u00fcz\u00fcn karma\u015f\u0131k i\u015f d\u00fcnyas\u0131nda, tekrar eden g\u00f6revleri ve \u00e7ok ad\u0131ml\u0131 s\u00fcre\u00e7leri otomatikle\u015ftirmek, verimlili\u011fi art\u0131rman\u0131n anahtar\u0131d\u0131r. CrewAI, yapay zeka ajanlar\u0131n\u0131 belirli rollerle donatarak i\u015f ak\u0131\u015flar\u0131n\u0131z\u0131 ak\u0131ll\u0131ca y\u00f6netmenizi sa\u011flayan g\u00fc\u00e7l\u00fc bir Python k\u00fct\u00fcphanesidir.\",\"breadcrumb\":{\"@id\":\"https:\/\/fatihsoysal.com\/blog\/giris-yapay-zeka-ajanslari-ile-is-akislarinizi-neden-otomatiklestirmelisiniz\/#breadcrumb\"},\"inLanguage\":\"tr\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/fatihsoysal.com\/blog\/giris-yapay-zeka-ajanslari-ile-is-akislarinizi-neden-otomatiklestirmelisiniz\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/fatihsoysal.com\/blog\/giris-yapay-zeka-ajanslari-ile-is-akislarinizi-neden-otomatiklestirmelisiniz\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Anasayfa\",\"item\":\"https:\/\/fatihsoysal.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Giri\u015f: Yapay Zeka Ajanslar\u0131 ile \u0130\u015f Ak\u0131\u015flar\u0131n\u0131z\u0131 Neden Otomatikle\u015ftirmelisiniz?\"}]},{\"@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":"Giri\u015f: Yapay Zeka Ajanslar\u0131 ile \u0130\u015f Ak\u0131\u015flar\u0131n\u0131z\u0131 Neden Otomatikle\u015ftirmelisiniz?","description":"G\u00fcn\u00fcm\u00fcz\u00fcn karma\u015f\u0131k i\u015f d\u00fcnyas\u0131nda, tekrar eden g\u00f6revleri ve \u00e7ok ad\u0131ml\u0131 s\u00fcre\u00e7leri otomatikle\u015ftirmek, verimlili\u011fi art\u0131rman\u0131n anahtar\u0131d\u0131r. CrewAI, yapay zeka ajanlar\u0131n\u0131 belirli rollerle donatarak i\u015f ak\u0131\u015flar\u0131n\u0131z\u0131 ak\u0131ll\u0131ca y\u00f6netmenizi sa\u011flayan g\u00fc\u00e7l\u00fc bir Python k\u00fct\u00fcphanesidir.","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\/giris-yapay-zeka-ajanslari-ile-is-akislarinizi-neden-otomatiklestirmelisiniz\/","og_locale":"tr_TR","og_type":"article","og_title":"Giri\u015f: Yapay Zeka Ajanslar\u0131 ile \u0130\u015f Ak\u0131\u015flar\u0131n\u0131z\u0131 Neden Otomatikle\u015ftirmelisiniz?","og_description":"G\u00fcn\u00fcm\u00fcz\u00fcn karma\u015f\u0131k i\u015f d\u00fcnyas\u0131nda, tekrar eden g\u00f6revleri ve \u00e7ok ad\u0131ml\u0131 s\u00fcre\u00e7leri otomatikle\u015ftirmek, verimlili\u011fi art\u0131rman\u0131n anahtar\u0131d\u0131r. CrewAI, yapay zeka ajanlar\u0131n\u0131 belirli rollerle donatarak i\u015f ak\u0131\u015flar\u0131n\u0131z\u0131 ak\u0131ll\u0131ca y\u00f6netmenizi sa\u011flayan g\u00fc\u00e7l\u00fc bir Python k\u00fct\u00fcphanesidir.","og_url":"https:\/\/fatihsoysal.com\/blog\/giris-yapay-zeka-ajanslari-ile-is-akislarinizi-neden-otomatiklestirmelisiniz\/","og_site_name":"Kodlar\u0131n Gizemli D\u00fcnyas\u0131","article_published_time":"2026-01-08T13:21:05+00:00","author":"Fatih Soysal","twitter_card":"summary_large_image","twitter_misc":{"Yazan:":"Fatih Soysal","Tahmini okuma s\u00fcresi":"28 dakika"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/fatihsoysal.com\/blog\/giris-yapay-zeka-ajanslari-ile-is-akislarinizi-neden-otomatiklestirmelisiniz\/#article","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/giris-yapay-zeka-ajanslari-ile-is-akislarinizi-neden-otomatiklestirmelisiniz\/"},"author":{"name":"Fatih Soysal","@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"headline":"Giri\u015f: Yapay Zeka Ajanslar\u0131 ile \u0130\u015f Ak\u0131\u015flar\u0131n\u0131z\u0131 Neden Otomatikle\u015ftirmelisiniz?","datePublished":"2026-01-08T13:21:05+00:00","mainEntityOfPage":{"@id":"https:\/\/fatihsoysal.com\/blog\/giris-yapay-zeka-ajanslari-ile-is-akislarinizi-neden-otomatiklestirmelisiniz\/"},"wordCount":4010,"commentCount":0,"publisher":{"@id":"https:\/\/fatihsoysal.com\/blog\/#\/schema\/person\/002a254750921dcfd568a99e48240dd1"},"inLanguage":"tr","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/fatihsoysal.com\/blog\/giris-yapay-zeka-ajanslari-ile-is-akislarinizi-neden-otomatiklestirmelisiniz\/#respond"]}],"copyrightYear":"2026","copyrightHolder":{"@id":"https:\/\/fatihsoysal.com\/blog\/#organization"}},{"@type":"WebPage","@id":"https:\/\/fatihsoysal.com\/blog\/giris-yapay-zeka-ajanslari-ile-is-akislarinizi-neden-otomatiklestirmelisiniz\/","url":"https:\/\/fatihsoysal.com\/blog\/giris-yapay-zeka-ajanslari-ile-is-akislarinizi-neden-otomatiklestirmelisiniz\/","name":"Giri\u015f: Yapay Zeka Ajanslar\u0131 ile \u0130\u015f Ak\u0131\u015flar\u0131n\u0131z\u0131 Neden Otomatikle\u015ftirmelisiniz?","isPartOf":{"@id":"https:\/\/fatihsoysal.com\/blog\/#website"},"datePublished":"2026-01-08T13:21:05+00:00","description":"G\u00fcn\u00fcm\u00fcz\u00fcn karma\u015f\u0131k i\u015f d\u00fcnyas\u0131nda, tekrar eden g\u00f6revleri ve \u00e7ok ad\u0131ml\u0131 s\u00fcre\u00e7leri otomatikle\u015ftirmek, verimlili\u011fi art\u0131rman\u0131n anahtar\u0131d\u0131r. CrewAI, yapay zeka ajanlar\u0131n\u0131 belirli rollerle donatarak i\u015f ak\u0131\u015flar\u0131n\u0131z\u0131 ak\u0131ll\u0131ca y\u00f6netmenizi sa\u011flayan g\u00fc\u00e7l\u00fc bir Python k\u00fct\u00fcphanesidir.","breadcrumb":{"@id":"https:\/\/fatihsoysal.com\/blog\/giris-yapay-zeka-ajanslari-ile-is-akislarinizi-neden-otomatiklestirmelisiniz\/#breadcrumb"},"inLanguage":"tr","potentialAction":[{"@type":"ReadAction","target":["https:\/\/fatihsoysal.com\/blog\/giris-yapay-zeka-ajanslari-ile-is-akislarinizi-neden-otomatiklestirmelisiniz\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/fatihsoysal.com\/blog\/giris-yapay-zeka-ajanslari-ile-is-akislarinizi-neden-otomatiklestirmelisiniz\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Anasayfa","item":"https:\/\/fatihsoysal.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Giri\u015f: Yapay Zeka Ajanslar\u0131 ile \u0130\u015f Ak\u0131\u015flar\u0131n\u0131z\u0131 Neden Otomatikle\u015ftirmelisiniz?"}]},{"@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\/37549","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=37549"}],"version-history":[{"count":0,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/posts\/37549\/revisions"}],"wp:attachment":[{"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/media?parent=37549"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/categories?post=37549"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/fatihsoysal.com\/blog\/wp-json\/wp\/v2\/tags?post=37549"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}