cihatyldz/lojistik-tool-calling
🚛 LojistikAI — Tool Calling Demo
Lojistik ve tedarik zinciri sorularını canlı dış veri kaynaklarına (Public API) bağlanarak yanıtlayan tool calling (function calling) sistemi.
Model, kullanıcının sorusuna göre uygun aracı otomatik seçer, gerekirse birden fazla aracı sırayla veya paralel çağırır ve hangi araçları hangi parametrelerle çağırdığını arayüzde adım adım gösterir.
🔧 Araçlar
Dört API de tamamen ücretsiz ve anahtarsızdır.
💬 Örnek Çalışma Akışı
Kullanıcı: "İstanbul mu daha sıcak Rotterdam mı? Değerleri Fahrenheit olarak da yaz."
[Turn 1] Araç Çağrıları:
-> get_weather(city='İstanbul')
<- {"sehir": "İstanbul", "sicaklik_c": 27.4, "durum": "az bulutlu", "yagis_mm": 0}
-> get_weather(city='Rotterdam')
<- {"sehir": "Rotterdam", "sicaklik_c": 18.1, "durum": "yağmurlu", "yagis_mm": 1.2}
[Turn 2] Araç Çağrıları:
-> convert_unit(value=27.4, from_unit='C', to_unit='F')
<- {"deger": 81.32, "birim": "F", "kaynak": "27.4 C"}
-> convert_unit(value=18.1, from_unit='C', to_unit='F')
<- {"deger": 64.58, "birim": "F", "kaynak": "18.1 C"}
[Turn 3] Nihai Yanıt:
İstanbul 27.4°C (81.3°F) ile Rotterdam'dan (18.1°C / 64.6°F) daha sıcak.
Rotterdam'da yağış var — liman elleçlemesinde gecikme riski göz önünde bulundurulmalı.Bu akış arayüzün sağ panelinde canlı olarak görüntülenir.
🏗️ Mimari
Kullanıcı sorusu
│
▼
┌─────────────────────────────────────┐
│ gpt-4o-mini + TOOLS (JSON şeması) │
└──────────────┬──────────────────────┘
│ tool_calls var mı?
┌──────┴───────┐
Evet Hayır
│ │
▼ ▼
Fonksiyonu Nihai yanıt
çalıştır (döngü biter)
│
▼
Public API çağrısı
│
▼
Sonucu mesaj geçmişine
tool rolüyle ekle
│
└──► döngüye geri dön (max 5 tur)Çok turlu döngü sayesinde bir aracın çıktısı başka bir araca girdi olabilir (örn. hava durumundan gelen °C değeri convert_unit'e beslenir).
🚀 Kurulum
Hugging Face Spaces
- Yeni bir Space oluşturun (SDK: Gradio)
app.py,requirements.txtveREADME.mddosyalarını yükleyin- Settings → Variables and secrets bölümünden
OPENAI_API_KEYsecret'ını ekleyin - Space otomatik olarak derlenip yayına alınır
Yerel çalıştırma
git clone <repo-url>
cd lojistik-tool-calling
pip install -r requirements.txt
export OPENAI_API_KEY="sk-..."
python app.pyArayüz http://localhost:7860 adresinde açılır.
📁 Dosyalar
├── app.py # Gradio arayüzü + araç fonksiyonları + tool calling döngüsü
├── requirements.txt # gradio, openai, requests
└── README.md # Bu dosya (HF Spaces frontmatter dahil)⚙️ Teknik Detaylar
- Model:
gpt-4o-mini(native function calling desteği) - Tool tanımı: OpenAI JSON Schema formatı — her araç için
name,descriptionve tipliparameters - Paralel çağrı: Model tek turda birden fazla aracı çağırabilir (örn. iki şehrin hava durumu)
- Zincirleme çağrı:
MAX_TOOL_TURNS = 5ile sınırlı çok turlu döngü - Hata yönetimi: API hataları araç sonucunda
{"hata": "..."}olarak döner, model bunu kullanıcıya açıklar - Zaman aşımı: Her API çağrısı için 15 saniye
🔗 İlgili Çalışmalar
👤 Yazar
Cihat Yıldız — Kıdemli Veri Bilimcisi, Lojistik Sektörü HuggingFace
📄 Lisans
MIT
