Spaces:
Running on Zero
A newer version of the Gradio SDK is available: 6.22.0
title: Tool Calling Saat Dilimi Farki
emoji: 🕐
colorFrom: indigo
colorTo: purple
sdk: gradio
sdk_version: 6.19.0
app_file: app.py
pinned: false
🕐 Tool Calling Demo — Saat Dilimi Farkı
Bir LLM'in kullanıcı sorusuna göre doğru fonksiyonları otomatik çağırdığı (Tool / Function Calling), ücretsiz ve anahtarsız timeapi.io API'sinden gerçek veri çeken ve çağrılan araçları arayüzde açıkça gösteren bir Gradio uygulaması.
Ne yapıyor?
Model iki araca erişebilir:
| Araç | Görevi |
|---|---|
get_current_time(timezone) |
Belirtilen IANA zaman diliminde (örn. Europe/Istanbul) o anki yerel saati ve UTC farkını döndürür. |
time_difference(timezone1, timezone2) |
İki zaman dilimi arasındaki saat farkını hesaplar. |
Kullanıcı şehir adı yazsa bile (ör. "New York", "Tokyo") model bunu doğru IANA zaman dilimi kimliğine çevirir, gerekli araçları sırayla çağırır ve API'den gelen veriyle nihai yanıtı üretir. Tüm araç çağrı adımları sağdaki "Tool Trace" panelinde gösterilir.
Sağlamlık: timeapi.io'ya ulaşılamazsa uygulama, Python'un yerleşik
zoneinfo(IANA veritabanı) kütüphanesine otomatik düşer; böylece demo her koşulda çalışmaya devam eder.
Örnek çalışma akışı
Kullanıcı: "New York ile Tokyo arasında kaç saat fark var, şu an oralarda saat kaç?"
[Turn 1] Araç Çağrıları:
-> get_current_time(timezone='America/New_York')
<- {'timezone': 'America/New_York', 'local_time': '2026-07-30 08:30:00', 'utc_offset_hours': -4.0}
-> get_current_time(timezone='Asia/Tokyo')
<- {'timezone': 'Asia/Tokyo', 'local_time': '2026-07-30 21:30:00', 'utc_offset_hours': 9.0}
[Turn 2] Araç Çağrıları:
-> time_difference(timezone1='America/New_York', timezone2='Asia/Tokyo')
<- {'difference_hours': 13.0, 'note': "Asia/Tokyo, America/New_York'dan 13.0 saat ileridedir."}
[Turn 3] Nihai Yanıt:
Tokyo, New York'tan 13 saat ileride. Şu an New York'ta 08:30, Tokyo'da 21:30.
Kurulum ve Yayınlama (Hugging Face Spaces)
- Yeni bir Space oluşturun → SDK olarak Gradio seçin.
- Bu depodaki
app.py,requirements.txtveREADME.mddosyalarını yükleyin (README'nin en üstündeki YAML bloğu Space'in ayarlarını belirler). - Settings → Variables and secrets bölümünden şunları ekleyin:
HF_TOKEN(Secret, zorunlu) — huggingface.co/settings/tokens adresinden alacağınız, "Make calls to Inference Providers" izinli bir token.MODEL_ID(Variable, opsiyonel) — Varsayılan:openai/gpt-oss-120b. Daha hızlı/ucuz alternatif:openai/gpt-oss-20b. Diğer seçenekler:Qwen/Qwen2.5-72B-Instruct,meta-llama/Llama-3.3-70B-Instruct.HF_PROVIDER(Variable, opsiyonel) — Varsayılanauto(uygun ilk sağlayıcıyı otomatik seçer). İstersenizhf-inference,together,novitavb.
- Space otomatik derlenip yayına alınır.
Seçtiğiniz modelin tool calling desteklediğinden ve serverless Inference üzerinde sunulduğundan emin olun. Kontrol için:
hf models ls --warm.
Yerel çalıştırma
pip install -r requirements.txt
export HF_TOKEN="hf_xxx" # kendi token'ınız
python app.py # http://127.0.0.1:7860
Mimari
Kullanıcı sorusu
│
▼
┌──────────────┐ tools=[get_current_time, time_difference]
│ LLM │ ─────────────────────────────────────────► tool_calls?
└──────────────┘ │
▲ │ evet
│ tool sonuçları (JSON) ▼
│ ┌──────────────────────────┐
└──────────────────────────────────────────│ timeapi.io (yedek: zoneinfo) │
└──────────────────────────┘
│ hayır → nihai yanıt
▼
Arayüz: sohbet + araç çağrı adımları (trace)
run_agent() fonksiyonu, model araç çağırmayı bırakana kadar (en fazla
MAX_TURNS tur) döngü kurar; her turda çağrıları yürütür, sonuçları modele
geri besler ve tüm adımları kaydeder.
Dosyalar
app.py— Gradio arayüzü, araç tanımları (JSON şeması), araç uygulamaları ve agent döngüsü.requirements.txt— Bağımlılıklar.README.md— Bu dosya (+ HF Spaces yapılandırması).
Veri kaynağı
timeapi.io — ücretsiz, API anahtarı gerektirmeyen zaman/saat dilimi servisi.