--- title: Tool Calling Academic Assistant emoji: 🔬 colorFrom: blue colorTo: indigo sdk: gradio app_file: app.py pinned: false --- # 🔬 Tool-Calling & MCP Destekli Akademik Araştırma Asistanı Bu proje, kullanıcının akademik makale araması yapabildiği (ArXiv & Semantic Scholar API), bulduğu makaleleri kişisel SQLite veritabanındaki kütüphanesine kaydedebildiği, okuma durumunu güncelleyebildiği ve not ekleyebildiği **uçtan uca çalışan bir Tool-Calling & MCP (Model Context Protocol) sistemidir**. --- ## 📌 Proje Senaryosu ve Mimarisi Ödev kapsamında **Akademik Araştırma ve Makale Yönetim Asistanı** senaryosu seçilmiştir. Sistem, dil modelinin (LLM) dış dünyaya (ArXiv API, Semantic Scholar API ve yerel SQLite Veritabanı) güvenli ve halüsinasyonsuz bir şekilde erişmesini sağlar. ```mermaid graph TD User([Kullanıcı / Chat UI / Cursor / Claude Desktop]) <--> LLM[LLM Engine / Ollama / Groq / OpenAI] LLM <--> Dispatcher[Tool Call & MCP Dispatcher] subgraph Dış Kaynaklar & Veritabanı (Tool Layer) Dispatcher -->|1. search_arxiv_papers| ArXiv[ArXiv REST API] Dispatcher -->|2. search_openalex| OpenAlex[OpenAlex API] Dispatcher -->|3. save_paper_to_library| SQLite[(SQLite DB: academic_library.db)] Dispatcher -->|4. get_saved_library| SQLite Dispatcher -->|5. update_paper_status_or_note| SQLite Dispatcher -->|6. delete_paper| SQLite Dispatcher -->|7. clear_library| SQLite end ``` ### ⚡ Öne Çıkan Özellikler: 1. **Halüsinasyon Engelleme**: Sistem promptu ve tool mimarisi sayesinde model veritabanında veya API'de bulunmayan uydurma bir makale/bilgi üretemez. Tüm yanıtlar gerçek tool çıktılarına dayanır. 2. **Çift Mimarili Bağlantı (Tool-Calling + MCP Protocol)**: - **Gradio Web UI**: Hugging Face Space üzerinde canlı çalışan görsel arayüz ve canlı Tool Execution Log ekranı. - **MCP Server (`mcp_server.py`)**: Anthropic / Linux Foundation standartlarındaki Model Context Protocol sunucusu. Claude Desktop, Cursor veya VS Code üzerinden doğrudan sunucuya bağlanabilir. 3. **Sıfır Lokal Model Ağırlığı (Cloud LLM Esnekliği)**: - Bilgisayarınıza gigabaytlarca model ağırlığı indirmek zorunda kalmadan ücretsiz **Groq**, **OpenRouter** veya **Remote Ollama** cloud endpoint'leri ile çalışabilir. --- ## 🛠️ Tanımlı Fonksiyonlar (Tools) | Fonksiyon Adı | Açıklama | İşlem Türü | | :--- | :--- | :--- | | `search_arxiv_papers` | ArXiv üzerinden makale başlığı, yazar, özet ve PDF linklerini getirir. | API Read | | `search_openalex` | OpenAlex platformundan atıf sayıları (citations) ile makale getirir. | API Read | | `save_paper_to_library` | Seçilen makaleyi yerel SQLite veritabanına kaydeder. | DB Write | | `get_saved_library` | Veritabanında kayıtlı makaleleri ve okuma durumunu listeler. | DB Read | | `update_paper_status_or_note` | Kayıtlı makalelerin durumunu (`unread`, `reading`, `completed`) veya notunu günceller. | DB Write | | `delete_paper` | Veritabanından belirtilen ID'ye sahip makaleyi siler. | DB Write | | `clear_library` | Veritabanındaki tüm kayıtlı makaleleri siler. | DB Write | --- ## 🚀 Projeyi Yerelde Çalıştırma Adımları ### 1. Depoyu Klonlayın ve Bağımlılıkları Yükleyin ```bash git clone https://github.com/KULLANICI_ADI/proje.git cd proje pip install -r requirements.txt ``` ### 2. Uygulamayı Başlatın (Web Arayüzü) ```bash python app.py ``` Uygulama yerelde `http://localhost:7860` adresinde çalışmaya başlayacaktır. ### 3. (İsteğe Bağlı) MCP Sunucusu Olarak Çalıştırma Claude Desktop veya Cursor gibi MCP istemcilerine bağlamak için: ```bash python mcp_server.py ``` --- ### 💬 Kullanıcı Girdisi: > *"Quantum computing alanındaki en son ArXiv makalelerini ara ve ilk çıkan makaleyi kütüphaneme kaydet."* --- ### ⚙️ Arka Plan Tool-Call Log Çıktısı (JSON Trace): ```json [ { "timestamp": "2026-08-01 11:26:44", "type": "TOOL_CALL_TRIGGERED", "name": "search_arxiv_papers", "input": { "query": "quantum computing", "max_results": 2 }, "output": { "status": "success", "count": 2, "papers": [ { "paper_id": "arxiv_2403.02240v5", "title": "Quantum Computing: Vision and Challenges", "authors": "Sukhpal Singh Gill, Oktay Cetinkaya, Stefano Marrone", "published_year": "2024", "url": "https://arxiv.org/abs/2403.02240v5", "source": "ArXiv" } ] } }, { "timestamp": "2026-08-01 11:26:45", "type": "TOOL_CALL_TRIGGERED", "name": "save_paper_to_library", "input": { "paper_id": "arxiv_2403.02240v5", "title": "Quantum Computing: Vision and Challenges", "authors": "Sukhpal Singh Gill, Oktay Cetinkaya, Stefano Marrone", "url": "https://arxiv.org/abs/2403.02240v5", "published_year": "2024", "tags": "Quantum" }, "output": { "status": "success", "message": "'Quantum Computing: Vision and Challenges' başarıyla kütüphaneye kaydedildi.", "paper_id": "arxiv_2403.02240v5" } } ] ``` ### 🤖 Modelin Nihai Yanıtı: > *"Quantum computing alanında ArXiv üzerinde arama yapıldı ve **'Quantum Computing: Vision and Challenges'** başlıklı makale bulundu. Makale başarıyla kişisel veritabanı kütüphanenize kaydedildi! (Makale ID: `arxiv_2403.02240v5`)"* --- Proje default haliyle Groq API'sine bağlı olduğu için istekleri gerçekleştirmesi uzun sürebilir veya çoklu makalelerde token yetmeyebilir. Bu nedenle her istekten sonra 5-10 saniye arası beklenmelidir. ## 📁 Proje Dosya Yapısı ``` proje/ ├── app.py # Gradio Web Arayüzü & Log İzleyici UI ├── mcp_server.py # Anthropic Model Context Protocol (MCP) Server ├── agent.py # LLM Tool-Calling Yönlendiricisi & Prompt Yönetimi ├── tools.py # ArXiv API, Semantic Scholar API ve Tool Şemaları ├── database.py # SQLite Veritabanı CRUD İşlemleri ├── config.py # API Ayarları ve Yapılandırma ├── requirements.txt # Gerekli Python Kütüphaneleri └── README.md # Proje Dokümantasyonu ```