CoolFace
Apppublic

cihatyldz/lojistik-tool-calling

sourceHugging Facemitupdated 2mo agoView on Hugging Face
0likes
App README

🚛 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

AraçVeri KaynağıAPI AnahtarıLojistik Kullanımı
get_weatherOpen-Meteo❌Sevkiyat koşulları, soğuk zincir, rota güvenliği
get_route_distanceOSRM❌Karayolu mesafe & süre, nakliye maliyeti
get_exchange_rateFrankfurter❌Navlun fiyatlandırma, ithalat/ihracat maliyeti
convert_unitYerel hesaplama—Sıcaklık (C/F/K), mesafe (km/mil/nm), ağırlık (kg/ton/lb)

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."

text
[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

  1. 1.Yeni bir Space oluşturun (SDK: Gradio)
  2. 2.app.py, requirements.txt ve README.md dosyalarını yükleyin
  3. 3.Settings → Variables and secrets bölümünden OPENAI_API_KEY secret'ını ekleyin
  4. 4.Space otomatik olarak derlenip yayına alınır

Yerel çalıştırma

bash
git clone <repo-url>
cd lojistik-tool-calling
pip install -r requirements.txt

export OPENAI_API_KEY="sk-..."
python app.py

Arayü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, description ve tipli parameters
  • —Paralel çağrı: Model tek turda birden fazla aracı çağırabilir (örn. iki şehrin hava durumu)
  • —Zincirleme çağrı: MAX_TOOL_TURNS = 5 ile 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