Bu kodları çok daha önce paylaşacaktım. Ancak bazı teknik sorunlar yüzünden halledemedim. Kusura bakmayın.
Aşağıdaki kodları çalıştırdığımda şöyle bir çıktı aldım.
PDF Belgesinden Çıkarılan Sorular
1. Alice’in yaşadığı rüyanın atmosferini en iyi tanımlayan kelime hangisidir?
a) Can sıkıcı b) Masmavi c) Hayalperest d) Gerçekçi
Doğru Cevap: c) Hayalperest
2. Alice’in kız kardeşi, Alice’in rüya anlatımı sırasında ne yapıyor?
a) Uyuyor b) Kitap okuyor c) Görsel olarak rüyanın içinde yer alıyor d) Anlatıma ilgi gösteriyor ve hayal güçlerini kullanarak rüyayı canlandırıyor.
Doğru Cevap: d) Anlatıma ilgi gösteriyor ve hayal güçlerini kullanarak rüyayı canlandırıyor.
3. Alice’in rüya anlatımı, kız kardeşleri arasındaki ilişkiyi nasıl etkiler?
a) Ayrılık b) Küskünlük c) Bağlantı d) Rekabet
Doğru Cevap: c) Bağlantı
4. Yazarın Alice’in rüyasını anlatırken kullandığı dil, okuyucunun nasıl bir hisse kapılması amaçlanıyor?
a) Üzüntü b) Korku c) Hayranlık d) Öfke
Doğru Cevap: c) Hayranlık
5. Çocukluk ve yetişkinlik arasındaki geçişi temsil eden en etkili unsurlar hangileridir?
a) Rüya ve uyanma b) Masal ve gerçeklik c) Hayal ve gerçek d) Hepsi
Doğru Cevap: d) Hepsi
6. Alice’in büyümesiyle ilgili yazarın düşünceleri nedir?
a) Alice çocukluk hayalleri için özleyecek. b) Alice büyüdükçe rüyasını unutur. c) Alice büyüdüğünde hayallerini paylaşmaya devam edecek. d) Alice büyüyerek daha gerçekçi bir hayat yaşayacaktır.
Doğru Cevap: c) Alice büyüdüğünde hayallerini paylaşmaya devam edecek.
7. PDF belgesinde geçen ‘fleeting nature of childhood innocence’ ifadesinin Türkçe karşılığı nedir?
a) Çocukluğun anıtsal doğası b) Çocukluğun geçici doğası c) Çocukluğun zorunlu doğası d) Çocukluğun gizemli doğası
Doğru Cevap: b) Çocukluğun geçici doğası
8. Metinde vurgulanan iki ana zıt kavram hangileridir?
a) Rüya ve gerçeklik, çocukluk ve yetişkinlik b) Güzellik ve çirkinlik, mutluluk ve üzüntü c) Şöhret ve anonimlik, zenginlik ve fakirlik d) Aşk ve nefret
Doğru Cevap: a) Rüya ve gerçeklik, çocukluk ve yetişkinlik
9. Metinde kullanılan ‘whimsical world’ ifadesinin anlamı nedir?
a) Üzgün ve kasvetli dünya b) Hayal ürünü ve tuhaf dünya c) Gerçekçi ve somut dünya d) Zorlu ve mücadele dolu dünya
Doğru Cevap: b) Hayal ürünü ve tuhaf dünya
10. Metnin ana fikri nedir?
a) Rüyaların gerçeklikle nasıl bir ilişkisi vardır? b) Çocukluk hayalleri yetişkinliğe geçişe hazırlar mı? c) Hikayelerin insanların hayatlarına nasıl etki ettiği d) Rüya ve gerçeklik arasındaki farkı göstermek
Doğru Cevap: c) Hikayelerin insanların hayatlarına nasıl etki ettiği
# Kaynak:https://medium.com/@foadmk/optimizing-everyday-tasks-with-crewai-fc655ca08944
# summarizer.py
# from dotenv import load_dotenv
from crewai import Agent, Task, Crew, Process
# from langchain_openai import ChatOpenAI
from langchain_community.tools import tool
import requests
from PyPDF2 import PdfReader
import re, time, datetime
from langchain_community.llms import Ollama
llm = Ollama(model = "gemma2:latest")
# llm = Ollama(model = "mistral:latest")
# llm = Ollama(model='mixtral') # bellek yetmediği için oldukça yavaş
# Tool to fetch and preprocess PDF content
@tool
def fetch_pdf_content(url: str) -> str:
"""
Fetches and preprocesses content from a PDF given its URL.
Returns the text of the PDF.
"""
response = requests.get(url)
with open('temp.pdf', 'wb') as f:
f.write(response.content)
with open('temp.pdf', 'rb') as f:
pdf = PdfReader(f)
text = '\n'.join(page.extract_text() for page in pdf.pages if page.extract_text())
# Optional preprocessing of text
processed_text = re.sub(r'\s+', ' ', text).strip()
return processed_text
# Tool to fetch and preprocess PDF content
@tool
def get_pdf_content(addr: str) -> str:
"""
Reads and preprocesses content from a PDF given its URL.
Returns the text of the PDF.
"""
with open(addr, 'rb') as f:
pdf = PdfReader(f)
text = '\n'.join(page.extract_text() for page in pdf.pages if page.extract_text())
# Optional preprocessing of text
processed_text = re.sub(r'\s+', ' ', text).strip()
return processed_text
# Agents
# PDF Reader Agent
pdf_reader = Agent(
role='PDF Content Extractor',
goal='Bir Türkçe PDF dosyasından metin çıkar ve ön işlemden geçir. İşlenmiş metni Türkçe olarak döndür. Her aşamada Türkçe kullan',
backstory='''Türkçeye tam anlamıyla hakimsin. PDF formatlı belgelerin işlenmesi ve yorumlanması konusunda uzmansın.
Metinleri anlamlı ve kullanışlı bir şekilde çıkarır ve gereksiz karakterleri ve boşlukları temizlersin.
Ayrıca, metinleri daha anlamlı ve kısa sorulara dönüştürmek için ön işlem yaparsın.''',
verbose=True,
tools=[get_pdf_content],
allow_delegation=False,
llm=llm
)
question_generator = Agent(
role='Question Generator',
goal='''PDF belgesini yorumla ve anlamlı Türkçe sorular çıkar.
Soruların doğru yanıtlarının PDF belgesinde bulunmasını sağla.
Soruların çeşitliliğini ve zorluğunu artır.
Her aşamada Türkçe kullan''',
backstory='''Bilgilendirici ve zihin açıcı sorular oluşturmada uzmansın.
Türkçe dilinde soru oluşturma konusunda deneyimli ve yaratıcısın.
Sorularının anlamlı ve yararlı olmasına özen gösterirsin.
Sorularının doğru yanıtlarının PDF belgesinde bulunmasını sağlar ve soruların çeşitliliğini ve zorluğunu artırmak için çabalarsın.''',
verbose=True,
allow_delegation=False,
llm=llm
)
# Tasks
def pdf_reading_task(addr):
return Task(
description=f"{addr} adresindeki Türkçe PDF metnini oku ve ön işlemden geçir. İşlenmiş Türkçe metni döndür. Her aşamada Türkçe kullan.",
agent=pdf_reader,
expected_output="Verilen Türkçe pdf'ten çıkarılan Türkçe metin."
)
question_generation_task = Task(
description='''Çıkarılan PDF belge içeriğinden Türkçe sorular oluştur.
Soruları bir PDF belgesi halinde yayınlanacak hale getir.
Her aşamada Türkçe kullan. İngilizceye çevirme.''',
agent=question_generator,
expected_output='''Çıkarılan PDF belge içeriğinden en az 20 Türkçe soru.
Her sorunun doğru yanıtının PDF belgesinde bulunmasını sağla.
Soruların çeşitliliğini ve zorluğunu artır.
Soruları bir PDF belgesi halinde yayınlanacak hale getir.'''
)
# USER INPUTS
addr = "data/alice.pdf"
# Instantiate and run the crew
crew = Crew(
agents=[pdf_reader, question_generator],
tasks=[pdf_reading_task(addr), question_generation_task],
verbose=2
)
# Execute the crew
result = crew.kickoff()
# Combine results
final_article = f"""
{question_generation_task.output.exported_output}
"""
print("--------------------------")
# print(final_article)
print(result)
now = now = datetime.datetime.now()
now = now.strftime("%Y%m%d_%H%M%S")
t2 = time.time()
with open(f"qg03_türkçe03-{now}.txt","w") as f:
print(final_article, file=f)
Not: Crewai’ın davranışı bazen değişebilmektedir. Örneğin 2 ay önce sorunsuz Türkçe yanıtlar veren kodlar, son denediğimde ısrarla İngilizce’de ısrar etti. Tekrar Türkçe yanıt alabilmek için tüm açıklamalar ve komutları elden geçirdim ve ayrıntıları arttırdım. Sonunda yukarıdaki kodları elde ettim.
Ancak bu kodların da her zaman aynı şekilde yanıt üreteceğinin bir garantisi yok.
Crewai hakkında yapılan bazı yorumlarda, aynı sonuçların iyi düzenlenmiş bir prompt kullanılarak, doğrudan alınabileceği ileri sürülüyor.
Kişisel görüşüme göre crewai artık eski belirleyiciliğini kaybetti.
Zaten büyük firmalar da kendi swarm yapılarını oluşturup piyasaya sürmeye başladılar.