import json import logging import threading import gradio as gr import uvicorn from fastapi import FastAPI, Response from inference import NewsInference from train import NewsTrainer UI_PATH = "/" app = FastAPI() inference = NewsInference() logging.basicConfig(level=logging.INFO) @app.get("/api/predict") def predict(url: str): """ Haber makalelerine yönelik tahminler yapmak için kullanılan bir endpointdir. Parametreler: url (str): Haber makalesinin URL'i. Dönen Değerler: dict: Tarih, başlık, açıklama ve içerik gibi haber makalesine ilişkin tahmin edilen bilgiler. """ response = inference.predict(url) return response @app.get("/api/train") async def train(name: str): """ Haber modelini asenkron olarak eğitmek için kullanılan bir endpointdir. Parametreler: name (str): Eğitim işleminin adı. Dönen Değerler: Response: Eğitim işleminin başladığını belirten bir mesaj içeren HTTP yanıtı. """ _train_data_path = "./data/dataset" _model_output_path = "./models" trainer = NewsTrainer() thread = threading.Thread(target=trainer.run, args=(name, _train_data_path, _model_output_path)) thread.daemon = True thread.start() output = {"message": "Eğitim Başladı..."} result = json.dumps(output, sort_keys=False, indent=4) return Response(content=result, status_code=200, media_type="application/json") def clear(): """ Gradio arayüzündeki giriş ve çıkış alanlarını temizlemek için kullanılan bir fonksiyon. Dönen Değerler: tuple: Giriş ve çıkış alanları için boş değerler. """ return None, None, None, None, None, None, None, None, None @app.get("/run/predict") def gradio_predict(url: str): """ Gradio arayüzü üzerinden tahmin yapmak için kullanılan bir endpointdir. Parametreler: url (str): Haber makalesinin URL'i. Dönen Değerler: list: Tarih değeri, tarih skoru, başlık değeri, başlık skoru, açıklama değeri, açıklama skoru, içerik değeri ve içerik skoru gibi tahmin edilen bilgiler. """ data = predict(url) date_value = data["date"]["value"] if data["date"] is not None else None date_score = data["date"]["score"] if data["date"] is not None else None title_value = data["title"]["value"] if data["title"] is not None else None title_score = data["title"]["score"] if data["title"] is not None else None description_value = data["description"]["value"] if data["description"] is not None else None description_score = data["description"]["score"] if data["description"] is not None else None content_value = data["content"]["value"] if data["content"] is not None else None content_score = data["content"]["score"] if data["content"] is not None else None result = [date_value, date_score, title_value, title_score, description_value, description_score, content_value, content_score] return result with gr.Blocks() as demo: gr.Markdown( """ # Haber sitelerinin başlık, açıklama (spot), tarih ve içerik bilgilerinin Yapay Zeka modeli kullanılarak çıkarılması. Bu çalışmada, belirli haber sitelerinden otomatik olarak başlık, açıklama (spot), tarih ve içerik bilgilerini çıkarabilen bir yapay zeka modeli geliştirilmeye odaklanılmıştır. Bu geliştirme sürecinde, modelin haber sitelerinin içeriklerini anlaması ve ilgili bilgileri doğru bir şekilde tanıması ve çıkarabilmesi için derinlemesine eğitimler gerçekleştirilmiştir. Bu kapsamlı çalışma, haber sitelerinin veri içeriklerinin otomatik çıkarılması ve analizi konusunda önemli bir adımı temsil etmektedir. """ ) with gr.Row(): with gr.Column(): input = gr.Textbox(label="Link") with gr.Row(): with gr.Column(): translate_btn = gr.Button(value="Çalıştır", variant="primary") clear_btn = gr.Button(value="Temizle") with gr.Row(): examples = gr.Examples(examples=[ "https://www.aksam.com.tr/dunya/abdde-anketler-2024-secimlerinde-cumhuriyetcileri-onde-gosteriyor/haber-1369989", "https://www.cumhuriyet.com.tr/bilim-teknoloji/bill-gates-uyardi-amazon-ve-google-gibi-sirketleri-yapay-zeka-bitirecek-2084726", "https://www.ensonhaber.com/teknoloji/nasa-uranusun-kuzey-kutbundaki-siklonu-ilk-kez-goruntuledi", "https://www.haber7.com/teknoloji/haber/3327933-olumcul-bakteriler-tarihe-karisabilir-yapay-zeka-ile-antibiyotik-gelistirdiler", "https://haberglobal.com.tr/teknoloji/heyecan-yaratan-bulus-dunya-buyuklugunde-otegezegen-kesfedildi-251592"], inputs=[input]) with gr.Column() as output: with gr.Box(): date_value = gr.Textbox(label="Tarih") date_score = gr.Textbox(label="Skor") with gr.Box(): title_value = gr.Textbox(label="Başlık") title_score = gr.Textbox(label="Skor") with gr.Box(): description_value = gr.Textbox(label="Açıklama") description_score = gr.Textbox(label="Skor") with gr.Box(): content_value = gr.Textbox(label="İçerik") content_score = gr.Textbox(label="Skor") translate_btn.click(gradio_predict, inputs=input, outputs=[date_value, date_score, title_value, title_score, description_value, description_score, content_value, content_score]) clear_btn.click(fn=clear, inputs=None, outputs=[input, date_value, date_score, title_value, title_score, description_value, description_score, content_value, content_score]) app = gr.mount_gradio_app(app, demo, "/", gradio_api_url="http://localhost:7860/") def start(): """ Sunucuyu başlatmak ve Gradio uygulamasını çalıştırmak için kullanılan bir fonksiyondur. Bu fonksiyon belirtilen host ve portta sunucuyu başlatır ve Gradio uygulamasını çalıştırır. """ uvicorn.run(app, host="0.0.0.0", port=7860, log_level="info", workers=1)