sk75's picture
Update README.md
c143f79 verified
|
Raw
History Blame Contribute Delete
6.36 kB
---
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
```