# -*- coding: utf-8 -*-
import pandas as pd
from groq import Groq
import time
# Groq API key (ücretsiz) - console.groq.com adresinden alın
GROQ_API_KEY = "BURAYA_API_KEY_YAPISTIRIN"
excel_file = r'C:\DOSYA YOLU\ozet.xlsx'
output_file = r'C:\DOSYA YOLU \ozet_sonuc.xlsx'
client = Groq(api_key=GROQ_API_KEY)
def groq_ozetle(text):
try:
chat = client.chat.completions.create(
messages=[{
"role": "user",
"content": f"""Bu Türkçe metni özetle:
KURALLAR:
- Maksimum 100 kelime
- Tam cümleler, nokta ile bitir
- Önemli tarihleri ve isimleri koru
- Yarım cümle ASLA yazma
Metin: {text}
Özet:"""
}],
model="llama-3.3-70b-versatile",
temperature=0.3,
max_tokens=300
)
ozet = chat.choices[0].message.content.strip()
if not ozet.endswith(('.', '!', '?')):
son = ozet.rfind('.')
ozet = ozet[:son+1] if son > 20 else ozet + '.'
return ozet
except Exception as e:
return text[:150] + "..."
df = pd.read_excel(excel_file)
for col in df.columns:
ozet_col = f"{col}_OZET"
df[ozet_col] = ""
for i, row in df.iterrows():
text = str(row[col])
if len(text.split()) >= 10:
print(f"Satir {i+1}...", end=" ")
df.at[i, ozet_col] = groq_ozetle(text)
df.to_excel(output_file, index=False)
print("OK")
time.sleep(0.5)
print(f"Bitti: {output_file}") Python'da yazıyı özetleme ya da özgünleştirme.
7
●216
- 14-11-2025, 22:14:56Bir tane excel dosyası var ve her satırında içerik var. Bu içerikler çok uzun ve ben bunları ya özetlemek ya da özgünleştirmek istiyorum.Python bilgim yok denilecek kadar. Aşağıdaki kodu çalıştırdım (Kod yapay zekaya yazdırıldı). Kod 20 satır istenileni yaptı diğerlerinde ya olduğu gibi bıraktı ya da eksik yaptı. Hatanın nerede olduğunu ya da kodun tamamını yazıp verebilecek var mı?
- 14-11-2025, 22:17:55Yapay zeka çıktısı bir deneyin isterseniz.
# -*- coding: utf-8 -*- import pandas as pd from groq import Groq import time import sys # 🔑 Ayarlarınızı Buraya Girin # Groq API key (ücretsiz) - console.groq.com adresinden alın GROQ_API_KEY = "BURAYA_API_KEY_YAPISTIRIN" # Giriş ve Çıkış Dosya Yolları excel_file = r'C:\DOSYA YOLU\ozet.xlsx' output_file = r'C:\DOSYA YOLU\ozet_sonuc.xlsx' # API İstemcisini Başlat try: client = Groq(api_key=GROQ_API_KEY) except Exception as e: print(f"HATA: Groq istemcisi başlatılamadı. API anahtarını kontrol edin. Hata: {e}") sys.exit(1) # Kullanılacak Sütun Adını Belirle (Excel dosyanızdaki ilk sütunun adı) # Eğer özetlenecek içerik "Icerik" adlı sütundaysa, bunu değiştirin. TARGET_COLUMN = "ICERIK" # Lütfen excel'inizdeki asıl sütun adını yazınız OUTPUT_COLUMN = f"{TARGET_COLUMN}_OZET" def groq_isle(text, is_ozet=True): """Metni özetler veya özgünleştirir (paraphrase). API hız limitini aşmamak için yeniden deneme içerir.""" # Kullanıcı isteğine göre prompt oluşturma if is_ozet: baslik = "Bu Türkçe metni özetle:" kurallar = """KURALLAR: - Maksimum 100 kelime (kesinlikle bu sınırı aşma) - Tam cümleler, nokta ile bitir - Önemli tarihleri ve isimleri koru - Yarım cümle ASLA yazma - Başlık kullanma.""" sonuc_etiketi = "Özet:" else: # Özgünleştirme (Paraphrase) baslik = "Bu Türkçe metni, içeriğini bozmadan tamamen özgünleştir (paraphrase et):" kurallar = """KURALLAR: - Metnin anlamını KESİNLİKLE koru - Yeni metin, orijinal metinle kelime bazında aynı olmamalı - Başlık kullanma.""" sonuc_etiketi = "Özgünleştirilmiş Metin:" prompt = f"""{baslik} {kurallar} Metin: {text} {sonuc_etiketi}""" max_retries = 3 for attempt in range(max_retries): try: chat = client.chat.completions.create( messages=[{"role": "user", "content": prompt}], # Daha yüksek bir model seçimi (daha iyi sonuçlar için) model="llama-3.3-70b-versatile", temperature=0.7 if not is_ozet else 0.3, # Özgünleştirmede daha yüksek yaratıcılık max_tokens=2000 # Çıktı için daha yüksek bir limit ) islemlenmis_metin = chat.choices[0].message.content.strip() # Sonuç kelime veya cümle olmaması durumunda basit bir kontrol if len(islemlenmis_metin.split()) < 5: raise ValueError("API'den anlamlı bir sonuç gelmedi.") # Özetleme yapılıyorsa cümle sonu kontrolü if is_ozet and not islemlenmis_metin.endswith(('.', '!', '?')): # Son noktayı bul ve sonrasını kes (tam cümle garantisi için) son = islemlenmis_metin.rfind('.') if son > len(islemlenmis_metin) * 0.75: # Metnin sonuna yakınsa islemlenmis_metin = islemlenmis_metin[:son+1] else: islemlenmis_metin += '.' # Nokta ekle return islemlenmis_metin except Exception as e: hata_mesaji = str(e) print(f"\nAPI HATA ({attempt + 1}. deneme): {hata_mesaji[:100]}...") # Hız limiti hatası için ekstra bekleme (Çoğu Groq/OpenAI limit hatası için geçerli) if "Rate limit" in hata_mesaji or "429" in hata_mesaji: wait_time = 10 # 10 saniye bekle print(f"Hız limiti hatası! {wait_time} saniye bekleniyor...") time.sleep(wait_time) elif attempt < max_retries - 1: wait_time = 5 # Diğer hatalar için 5 saniye bekle print(f"Hata oluştu, {wait_time} saniye sonra tekrar deneniyor...") time.sleep(wait_time) else: # Maksimum deneme sayısına ulaşıldı print("Maksimum deneme sayısına ulaşıldı. Orjinal metin kaydediliyor.") return f"HATA: {text[:100]}..." # Hata durumunda metnin bir kısmını kaydet return text[:150] + "..." # Tüm denemeler başarısız olursa # --- Ana İşlem --- def islem_baslat(is_ozetleme): try: df = pd.read_excel(excel_file) except FileNotFoundError: print(f"HATA: Dosya bulunamadı: {excel_file}") sys.exit(1) if TARGET_COLUMN not in df.columns: print(f"HATA: '{TARGET_COLUMN}' adlı sütun dosyada bulunamadı. Lütfen sütun adını kontrol edin.") # Kullanıcının Excel'deki ilk sütunun adını bulmasına yardımcı olmak için: print(f"Dosyanızdaki ilk 5 sütun: {df.columns.tolist()[:5]}") sys.exit(1) print(f"\n🚀 {excel_file} dosyası yüklendi. İşlem Sütunu: **{TARGET_COLUMN}**") print(f"Çıktı Sütunu: **{OUTPUT_COLUMN}**") print(f"Mod: **{'ÖZETLEME' if is_ozetleme else 'ÖZGÜNLEŞTİRME'}**\n") # Çıktı sütunu yoksa oluştur if OUTPUT_COLUMN not in df.columns: df[OUTPUT_COLUMN] = "" # İşlemi yap for i, row in df.iterrows(): text = str(row[TARGET_COLUMN]) # Daha önce özetlenmiş veya çok kısa metinleri atla if df.at[i, OUTPUT_COLUMN] != "" and not str(df.at[i, OUTPUT_COLUMN]).startswith("HATA"): print(f"✅ Satır {i+1}: Daha önce işlenmiş. Atlanıyor.") continue # 10 kelimeden az olanları atla if len(text.split()) < 10: df.at[i, OUTPUT_COLUMN] = "Çok kısa metin." continue print(f"⏳ Satır {i+1} ({len(text.split())} kelime) işleniyor...", end=" ") # API işlemini çağır df.at[i, OUTPUT_COLUMN] = groq_isle(text, is_ozet=is_ozetleme) # Her satırdan sonra dosyayı kaydet (İşlemin yarım kalmaması için) try: df.to_excel(output_file, index=False) except Exception as e: print(f"\nKAYIT HATA: Dosya kaydedilemedi. Excel'in kapalı olduğundan emin olun. Hata: {e}") print("✅ Tamamlandı. Bekleniyor...") # API hız limitlerine takılmamak için her çağrıdan sonra 1 saniye bekle time.sleep(1) print(f"\n🎉 İşlem Tamamlandı. Sonuç dosyası: **{output_file}**") # ➡️ Özetleme veya Özgünleştirme Seçimi # is_ozetleme = True: ÖZETLEME YAPAR # is_ozetleme = False: ÖZGÜNLEŞTİRME (PARAPHRASE) YAPAR islem_baslat(is_ozetleme=True) # Özgünleştirme yapmak isterseniz yukarıdaki satırı yorum satırı yapın ve aşağıdaki satırı aktif edin. # islem_baslat(is_ozetleme=False) - 14-11-2025, 22:24:00
- 14-11-2025, 22:51:44Bunu dener misiniz?geceyolcusu2002 adlı üyeden alıntı: mesajı görüntüle
# -*- coding: utf-8 -*- import pandas as pd from groq import Groq import time import sys # ------------------------------------------------------------------- # 🔑 AYARLARINIZI BURAYA GİRİN # ------------------------------------------------------------------- # Groq API key (ücretsiz) - console.groq.com adresinden alın GROQ_API_KEY = "BURAYA_API_KEY_YAPISTIRIN" # Giriş ve Çıkış Dosya Yolları excel_file = r'C:\DOSYA YOLU\ozet.xlsx' output_file = r'C:\DOSYA YOLU\ozet_sonuc.xlsx' # ❗️ ÇOK ÖNEMLİ: Excel dosyanızda özetlenecek metinlerin bulunduğu sütunun # tam adını buraya yazın (Örn: "Icerik", "Makale", "Haber Metni" vb.) TARGET_COLUMN = "ICERIK" # Hangi işlemi yapmak istediğinizi seçin: # True = ÖZETLEME yap # False = ÖZGÜNLEŞTİRME (Yeniden Yazma) yap ISLEM_MODU_OZETLEME = True # ------------------------------------------------------------------- # API İŞLEM FONKSİYONU (Yeniden Deneme Mekanizmalı) # ------------------------------------------------------------------- try: client = Groq(api_key=GROQ_API_KEY) except Exception as e: print(f"HATA: Groq istemcisi başlatılamadı. API anahtarını kontrol edin. Hata: {e}") sys.exit(1) OUTPUT_COLUMN = f"{TARGET_COLUMN}_SONUC" def groq_isle(text, is_ozet=True): """Metni özetler veya özgünleştirir. API hız limitini aşmamak için yeniden deneme içerir.""" if is_ozet: baslik = "Bu Türkçe metni özetle:" kurallar = """KURALLAR: - Maksimum 100 kelime (kesinlikle bu sınırı aşma) - Tam cümleler, nokta ile bitir - Önemli tarihleri ve isimleri koru - Yarım cümle ASLA yazma - Başlık kullanma.""" sonuc_etiketi = "Özet:" else: # Özgünleştirme baslik = "Bu Türkçe metni, içeriğini bozmadan tamamen özgünleştir (paraphrase et):" kurallar = """KURALLAR: - Metnin anlamını KESİNLİKLE koru - Yeni metin, orijinal metinle kelime bazında aynı olmamalı - Başlık kullanma.""" sonuc_etiketi = "Özgünleştirilmiş Metin:" prompt = f"""{baslik} {kurallar} Metin: {text} {sonuc_etiketi}""" max_retries = 3 # Bir hata durumunda en fazla 3 kez yeniden dene for attempt in range(max_retries): try: chat = client.chat.completions.create( messages=[{"role": "user", "content": prompt}], model="llama-3.3-70b-versatile", temperature=0.3 if is_ozet else 0.7, max_tokens=2000 ) islemlenmis_metin = chat.choices[0].message.content.strip() if len(islemlenmis_metin.split()) < 5: raise ValueError("API'den anlamlı bir sonuç gelmedi (çok kısa).") return islemlenmis_metin except Exception as e: hata_mesaji = str(e) print(f"\n[API HATA] ({attempt + 1}. deneme): {hata_mesaji[:100]}...") # Hız limiti hatası (Rate limit) if "Rate limit" in hata_mesaji or "429" in hata_mesaji: wait_time = 10 print(f"Hiz limiti hatasi! {wait_time} saniye bekleniyor...") time.sleep(wait_time) elif attempt < max_retries - 1: wait_time = 5 # Diğer hatalar için 5 saniye bekle print(f"Hata olustu, {wait_time} saniye sonra tekrar deneniyor...") time.sleep(wait_time) else: print("Maksimum deneme sayisina ulasildi. Orjinal metin kaydediliyor.") return f"HATA: {text[:100]}..." return f"HATA: Tum denemeler basarisiz oldu. {text[:100]}..." # ------------------------------------------------------------------- # ANA İŞLEM (Excel Okuma ve Yazma) # ------------------------------------------------------------------- def islem_baslat(): try: df = pd.read_excel(excel_file) except FileNotFoundError: print(f"HATA: Dosya bulunamadi: {excel_file}") sys.exit(1) if TARGET_COLUMN not in df.columns: print(f"HATA: '{TARGET_COLUMN}' adlı sütun dosyada bulunamadı.") print(f"Lütfen kodun en başındaki 'TARGET_COLUMN' değişkenini düzeltin.") print(f"Dosyanızdaki mevcut sütun adları: {df.columns.tolist()}") sys.exit(1) print(f"\n[BASLADI] {excel_file} dosyasi yüklendi.") print(f"Islem Sütunu: **{TARGET_COLUMN}**") print(f"Cikti Sütunu: **{OUTPUT_COLUMN}**") print(f"Mod: **{'OZETLEME' if ISLEM_MODU_OZETLEME else 'OZGUNLESTIRME'}**\n") if OUTPUT_COLUMN not in df.columns: df[OUTPUT_COLUMN] = "" for i, row in df.iterrows(): text = str(row[TARGET_COLUMN]) # Daha önce işlenmişse (veya hata değilse) atla if pd.isna(df.at[i, OUTPUT_COLUMN]) or df.at[i, OUTPUT_COLUMN] == "": pass # Boşsa devam et elif not str(df.at[i, OUTPUT_COLUMN]).startswith("HATA"): print(f"[ATLANDI] Satir {i+1}: Daha önce işlenmiş.") continue if len(text.split()) < 10: print(f"[ATLANDI] Satir {i+1}: Metin çok kısa (10 kelimeden az).") df.at[i, OUTPUT_COLUMN] = "Cok kisa metin." continue print(f"[ISLENIYOR] Satir {i+1} ({len(text.split())} kelime)...", end=" ") df.at[i, OUTPUT_COLUMN] = groq_isle(text, is_ozet=ISLEM_MODU_OZETLEME) print("Tamamlandi.") # Her 5 satırda bir dosyayı kaydet (Sürekli kaydetmek yavaşlatır) if (i + 1) % 5 == 0: try: df.to_excel(output_file, index=False) print(f"--- Ara Kayit Yapildi (Satir {i+1}) ---") except Exception as e: print(f"\n[KAYIT HATA] Dosya kaydedilemedi. Excel'in kapalı olduğundan emin olun. Hata: {e}") # API hız limitine takılmamak için 1 saniye bekle time.sleep(1) # Döngü bittikten sonra son kez kaydet try: df.to_excel(output_file, index=False) except Exception as e: print(f"\n[KAYIT HATA] Son dosya kaydedilemedi. Excel'in kapalı olduğundan emin olun. Hata: {e}") print(f"\n[BITTI] Islem Tamamlandi. Sonuç dosyasi: **{output_file}**") # Kodu Çalıştır islem_baslat() - 16-11-2025, 11:50:03Merhaba bilgisayarım şuan kurulum yapıyor kodu atamicam ama wp üzerinden konuyla ilgili şekilde yazarsanız ücretsiz yardımcı olurum kurulum bitince daha yapmıştım özetleme işlemlerini ama CUDA veya güçlü bir işlemci gerek internetsiz olmasını isterseniz aksi halde google geminide günlük 250 istek sınırı var
Wp 5516768147 - 18-11-2025, 23:09:16hocam kusura bakmayın birkaç gündür şehir dışında olduğum için dönüş yapamadım. Aslında kurulumu yaptıysanız ve sizin için de uygunsa kodları buradan paylaşsanız da belki başkaları da faydalanabilir.MehmetSekeroglu adlı üyeden alıntı: mesajı görüntüle
- 09-12-2025, 16:30:24https://github.com/MehmetYukselSeker...enlikTurkeyBot kusura bakmayın bayadır foruma girmedim bu repoda kullanımı kurulumu ve kodu mevcutgeceyolcusu2002 adlı üyeden alıntı: mesajı görüntüle
