Spaces:
Running on Zero
A newer version of the Gradio SDK is available: 6.22.0
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.
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:
- 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.
- Ç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.
- 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
git clone https://github.com/KULLANICI_ADI/proje.git
cd proje
pip install -r requirements.txt
2. Uygulamayı Başlatın (Web Arayüzü)
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:
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):
[
{
"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