CrewAI ile Blog Yazıları Yazan AI Ajanı Oluşturma
0

CrewAI ile Blog Yazıları Yazan AI Ajanı Oluşturma

CrewAI, yapay zeka ajanları oluşturmak ve bu ajanları belirli görevleri gerçekleştirmek üzere bir ekip halinde çalıştırmak için kullanılan bir çerçevedir. Bu yazıda, CrewAI kullanarak otomatik blog yazıları oluşturan bir AI ajanı nasıl geliştirilebileceğini detaylı olarak anlatacağım.

CrewAI Nedir?

CrewAI, farklı uzmanlık alanlarına sahip yapay zeka ajanlarının bir ekip olarak çalışmasını sağlayan açık kaynaklı bir Python kütüphanesidir. Bu kütüphane, Language Model (LLM) temelli ajanların karmaşık görevleri çözmek için işbirliği yapmasına olanak tanır.

CrewAI’ın temel bileşenleri şunlardır:

  • Agent (Ajan): Belirli bir rolü ve uzmanlığı temsil eden yapay zeka varlığı
  • Task (Görev): Ajanların yerine getirmesi gereken belirli işler
  • Crew (Ekip): Birlikte çalışan ajanların oluşturduğu grup
  • Process (Süreç): Görevlerin nasıl yürütüleceğini belirleyen iş akışı

Neden Blog Yazıları İçin CrewAI Kullanmalıyız?

Blog içeriği oluşturmak genellikle birden fazla uzmanlık gerektirir:

  1. Konu araştırması yapma
  2. İçerik planı oluşturma
  3. SEO uyumlu yazı yazma
  4. Düzenleme ve kontrol etme

CrewAI ile bu farklı görevleri yerine getirecek uzman ajanlar oluşturabilir ve onların işbirliği yaparak kaliteli blog yazıları üretmesini sağlayabiliriz.

CrewAI Gerekli Kurulumlar ve Hazırlıklar

Öncelikle gerekli kütüphaneleri kuralım:

pip install crewai
pip install langchain
pip install openai

Ayrıca bir LLM sağlayıcısına erişim anahtarına ihtiyacımız olacak. Bu örnekte OpenAI API’sini kullanacağız:

import os
from crewai import Agent, Task, Crew, Process
from langchain.llms import OpenAI

# OpenAI API anahtarınızı ayarlayın
os.environ["OPENAI_API_KEY"] = "sizin_api_anahtariniz"

Ajanların Oluşturulması

Blog yazısı oluşturmak için üç farklı uzman ajan tanımlayacağız:

  1. Araştırmacı
  2. İçerik Yazarı
  3. Editör

Her bir ajanı şu şekilde oluşturabiliriz:

# OpenAI modelini yapılandırma
llm = OpenAI(temperature=0.7, model="gpt-4")

# Araştırmacı Ajanı
researcher = Agent(
    role="Kıdemli Araştırmacı",
    goal="Verilen konu hakkında derinlemesine ve doğru araştırma yapmak",
    backstory="Sen internet üzerindeki bilgileri analiz etme ve sentezleme konusunda uzman bir araştırmacısın. "
              "Verilen her konuyu derinlemesine inceleyip en değerli içgörüleri bulursun.",
    verbose=True,
    llm=llm
)

# İçerik Yazarı Ajanı
writer = Agent(
    role="SEO Uzmanı İçerik Yazarı",
    goal="Araştırma sonuçlarını kullanarak çekici ve bilgilendirici blog yazıları yazmak",
    backstory="Sen hem SEO kurallarını hem de etkileyici hikaye anlatımını bilen üst düzey bir içerik "
              "yazarısın. Herhangi bir konuyu okuyucular için anlaşılır hale getirebilirsin.",
    verbose=True,
    llm=llm
)

# Editör Ajanı
editor = Agent(
    role="Baş Editör",
    goal="Blog yazılarını düzenlemek, geliştirmek ve son halini vermek",
    backstory="Sen bir yayıncılık kuruluşunda yıllarca çalışmış deneyimli bir editörsün. "
              "Dil bilgisi hatalarını düzeltir, tutarlılığı sağlar ve içeriğin kalitesini artırırsın.",
    verbose=True,
    llm=llm
)

Görevlerin Tanımlanması

Şimdi her bir ajan için belirli görevler tanımlayalım:

# Blog konusu
blog_konu = "Yapay Zeka ve İş Dünyasının Geleceği"

# Araştırma Görevi
research_task = Task(
    description=f"'{blog_konu}' konusu hakkında kapsamlı bir araştırma yap. "
                f"Güncel istatistikler, uzman görüşleri, örnekler ve vaka çalışmaları dahil olmak üzere "
                f"en az 5 önemli bulgu belirle. Her bulgu için kaynak bilgisi ekle.",
    agent=researcher,
    output_file="research_findings.txt"  # Araştırma sonuçlarını bir dosyaya kaydediyoruz
)

# Yazma Görevi
writing_task = Task(
    description=f"Araştırmacının bulgularını kullanarak '{blog_konu}' hakkında 1500-2000 kelimelik "
                f"kapsamlı bir blog yazısı oluştur. Yazı, açık bir giriş, alt başlıklar, "
                f"somut örnekler ve net bir sonuç içermeli. SEO açısından anahtar kelimeleri "
                f"doğal bir şekilde yerleştir ve okunması kolay olsun.",
    agent=writer,
    context=[research_task],  # Araştırma görevinin sonuçlarını bağlam olarak kullanıyoruz
    output_file="draft_blog_post.txt"
)

# Düzenleme Görevi
editing_task = Task(
    description=f"Blog yazısını kapsamlı bir şekilde düzenle. Dil bilgisi ve yazım hatalarını düzelt, "
                f"cümle yapısını iyileştir, tutarlılığı sağla ve genel akışı kontrol et. "
                f"SEO açısından başlık ve alt başlıkları optimize et. Son blog yazısı "
                f"profesyonel ve yayınlanmaya hazır olmalı.",
    agent=editor,
    context=[writing_task],  # Yazma görevinin sonuçlarını bağlam olarak kullanıyoruz
    output_file="final_blog_post.txt"
)

Ekip Oluşturma ve Çalıştırma

Ajanlarımızı ve görevlerini tanımladıktan sonra, artık bir ekip oluşturup çalıştırabiliriz:

# Ekip oluşturma
blog_crew = Crew(
    agents=[researcher, writer, editor],
    tasks=[research_task, writing_task, editing_task],
    verbose=2,  # Ayrıntılı çıktı almak için
    process=Process.sequential  # Görevleri sırayla çalıştırma
)

# Ekibi çalıştırma
result = blog_crew.kickoff()

print("Blog yazısı oluşturma işlemi tamamlandı!")
print(result)

CrewAI Daha Gelişmiş Kullanım: Araştırma Araçları Ekleme

Ajanlarımızın internetteki güncel bilgilere erişebilmesi için araştırma araçları ekleyebiliriz. Bunun için langchain kütüphanesindeki araçları kullanacağız:

from langchain.agents import load_tools
from langchain.agents import initialize_agent
from langchain.agents import AgentType

# Araştırma araçlarını yükleme
search_tools = load_tools(["serpapi", "llm-math"], llm=llm)

# Araştırmacı için araçları tanımlama
researcher = Agent(
    role="Kıdemli Araştırmacı",
    goal="Verilen konu hakkında derinlemesine ve doğru araştırma yapmak",
    backstory="Sen internet üzerindeki bilgileri analiz etme ve sentezleme konusunda uzman bir araştırmacısın. "
              "Verilen her konuyu derinlemesine inceleyip en değerli içgörüleri bulursun.",
    verbose=True,
    llm=llm,
    tools=search_tools
)

Çoklu Konular İçin Kullanım

Blog konularını bir liste olarak tanımlayıp, her biri için otomatik blog yazıları oluşturabiliriz:

blog_konulari = [
    "Yapay Zeka ve İş Dünyasının Geleceği",
    "Sürdürülebilir Enerji Çözümleri",
    "Uzaktan Çalışmanın Verimliliğe Etkileri"
]

for konu in blog_konulari:
    print(f"\n{konu} konusu için blog yazısı oluşturuluyor...\n")
    
    # Her konu için görevleri güncelleme
    research_task.description = f"'{konu}' konusu hakkında kapsamlı bir araştırma yap..."
    writing_task.description = f"Araştırmacının bulgularını kullanarak '{konu}' hakkında bir blog yazısı oluştur..."
    editing_task.description = f"'{konu}' hakkındaki blog yazısını kapsamlı bir şekilde düzenle..."
    
    # Çıktı dosya adlarını güncelleme
    research_task.output_file = f"research_{konu.lower().replace(' ', '_')}.txt"
    writing_task.output_file = f"draft_{konu.lower().replace(' ', '_')}.txt"
    editing_task.output_file = f"final_{konu.lower().replace(' ', '_')}.txt"
    
    # Ekibi çalıştırma
    result = blog_crew.kickoff()
    
    print(f"\n{konu} için blog yazısı tamamlandı!\n")

Sonuçları İyileştirme

Daha kaliteli blog yazıları elde etmek için aşağıdaki iyileştirmeleri yapabilirsiniz:

  1. Detaylı Talimatlar: Ajanlara daha spesifik talimatlar vererek çıktı kalitesini artırabilirsiniz.




writing_task = Task(
    description=f"Araştırmacının bulgularını kullanarak '{blog_konu}' hakkında bir blog yazısı oluştur. "
                f"Blog yazısı şu bölümleri içermeli:\n"
                f"1. Dikkat çekici bir başlık\n"
                f"2. Konuya giriş yapan bir açılış paragrafı\n"
                f"3. Konu hakkında temel bilgiler\n"
                f"4. En az 3 alt başlık\n"
                f"5. Her alt başlık altında destekleyici istatistikler ve örnekler\n"
                f"6. Okuyucuya eylem çağrısı içeren bir sonuç bölümü\n"
                f"Metin, akıcı olmalı ve SEO için şu anahtar kelimeleri doğal bir şekilde içermeli: "
                f"yapay zeka, iş dünyası, dijital dönüşüm, otomasyon, verimlilik.",
    agent=writer,
    context=[research_task]
)
  1. Daha İyi Kontrol: Editör ajanının görevini daha spesifik hale getirerek daha iyi sonuçlar alabilirsiniz:




editing_task = Task(
    description=f"Blog yazısını düzenle ve şu kriterlere göre değerlendir:\n"
                f"1. Dil bilgisi ve yazım hataları\n"
                f"2. Cümle yapısı ve okunabilirlik (Flesch-Kincaid skoru en az 60 olmalı)\n"
                f"3. SEO optimizasyonu (anahtar kelimeler doğal yerleştirilmiş mi?)\n"
                f"4. Başlık ve alt başlıklar etkileyici ve bilgilendirici mi?\n"
                f"5. İçerik, hedef kitleye uygun mu?\n"
                f"Gerekli tüm düzeltmeleri yap ve final versiyonu hazırla.",
    agent=editor,
    context=[writing_task]
)

Gerçek Dünya Uygulaması: WordPress’e Otomatik Yayınlama

Blog yazılarını otomatik olarak WordPress’e yüklemek için Python’ın python-wordpress-xmlrpc kütüphanesini kullanabiliriz:

pip install python-wordpress-xmlrpc

İşte blog yazısını WordPress’e yüklemek için bir kod örneği:





from wordpress_xmlrpc import Client, WordPressPost
from wordpress_xmlrpc.methods.posts import NewPost
from wordpress_xmlrpc.methods.users import GetUserInfo

# WordPress bağlantısı
wp_url = "https://sizinsiteniz.com/xmlrpc.php"
wp_username = "kullanici_adiniz"
wp_password = "sifreniz"

wp = Client(wp_url, wp_username, wp_password)

def blog_yazisini_yayinla(baslik, icerik, etiketler=None, kategoriler=None):
    post = WordPressPost()
    post.title = baslik
    post.content = icerik
    post.post_status = 'publish'  # Hemen yayınla
    
    if etiketler:
        post.terms_names = {'post_tag': etiketler}
    if kategoriler:
        post.terms_names = {'category': kategoriler}
    
    # Yazıyı yayınla ve post ID'sini al
    post_id = wp.call(NewPost(post))
    return post_id

# Kullanım örneği
with open("final_blog_post.txt", "r", encoding="utf-8") as f:
    blog_icerigi = f.read()

# Başlığı ve içeriği ayırma (başlık ilk satır olarak varsayılıyor)
baslik = blog_icerigi.split('\n')[0]
icerik = '\n'.join(blog_icerigi.split('\n')[1:])

post_id = blog_yazisini_yayinla(
    baslik=baslik,
    icerik=icerik,
    etiketler=["yapay zeka", "iş dünyası", "dijital dönüşüm"],
    kategoriler=["Teknoloji", "İş Dünyası"]
)

print(f"Blog yazısı başarıyla yayınlandı! Post ID: {post_id}")

Sonuç

CrewAI, yapay zeka ajanlarının işbirliği yaparak karmaşık görevleri çözmesini sağlayan güçlü bir araçtır. Bu yazıda, CrewAI kullanarak otomatik blog yazıları oluşturan bir sistem nasıl kurulabileceğini adım adım anlattık.

Bu sistem sayesinde:

  • Araştırma süreçlerini otomatikleştirebilirsiniz
  • Kaliteli ve SEO uyumlu içerikler üretebilirsiniz
  • Düzenleme ve yayınlama süreçlerini hızlandırabilirsiniz

Kodları kendi projelerinize uyarlayarak, içerik üretim süreçlerinizi otomatikleştirebilir ve verimlilik artışı sağlayabilirsiniz.

CrewAI’ın sunduğu esneklik sayesinde, farklı LLM modelleri kullanabilir, çeşitli araçlar ekleyebilir ve görevleri özelleştirebilirsiniz. Bu da sistemin ihtiyaçlarınıza göre kolayca uyarlanabilmesini sağlar.

Daha fazla bilgi için CrewAI GitHub deposunu inceleyebilirsiniz.

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir