Kurs
Dify az ya da hiç kod gerektirmeden yapay zeka uygulamaları oluşturmanıza yardımcı olan kullanıcı dostu bir platformdur. Farklı işlevlere sahip blokları sürükleyip bırakarak çalışır. Bilgi bloklar arasında akarak işlenir, birleştirilir ve yanıtlar üretilir.
Bu yazıda, bir yapay zeka seyahat asistanı oluşturma adımlarını anlatarak Dify'nin temel kavramlarını açıklayacağım.
Okurlarımızı yapay zekâdaki en son gelişmelerden haberdar etmek için, haftanın önemli haberlerini özetleyen ücretsiz Cuma bültenimiz The Median’ı gönderiyoruz. Sadece birkaç dakikada güncel kalmak için abone olun:
Dify Nedir?
Dify, kapsamlı kodlama becerileri gerektirmeden yapay zeka uygulamaları geliştirmeyi kolaylaştırmak için tasarlanmış bir platformdur. Kullanıcıların farklı bileşenleri sürükleyip bırakarak uygulamalar oluşturabileceği kullanıcı dostu, düşük kodlu bir ortam sunar.
Dify’yi, bir araya getirilerek işlevsel yazılımlar oluşturulabilen hazır bloklarla dolu dijital bir araç kutusu olarak hayal edin. Bu yaklaşım, sınırlı programlama bilgisine sahip kişilerin de fikirlerini hayata geçirebilmesini sağlayarak teknolojiyi daha erişilebilir kılar.
Her blok türünün girdileri vardır ve blok türüne bağlı olarak bunları farklı çıktılara dönüştürür. Bilgi bloktan bloğa aktarılır ve dönüştürülür; böylece nihai sonuç üretilir.
Dify ile Başlarken
Dify’yi kullanmanın iki yolu vardır:
- Yerel kurulum.
- Bulut sürümünü kullanma.
Bu öğreticide bulut sürümünü kullanıyoruz. Dify’nin bulut sürümü ücretsiz bir plan sunar; dolayısıyla ücretli abonelik olmadan da bu öğreticiyi takip edebilirsiniz.
Yerel kurulumla ilgileniyorsanız, en kolay yol şudur:
- Dify’yi resmi depodan indirin veya klonlayın.
- Depodaki README’nin Hızlı Başlangıç bölümünde açıklandığı gibi Docker kullanarak Dify’yi çalıştırın.
Dify ile Bir Chatflow Oluşturma
Dify birden fazla uygulama türü sunar. Biz, kullanıcıların bir aracıyla sohbet arayüzü üzerinden etkileşime geçtiği bir yapay zeka akışı olan Chatflow uygulaması oluşturmaya odaklanacağız.
Yeni bir Chatflow uygulaması oluşturmak için önce "Create from blank"e tıklayın ve "Chatflow" seçeneğini belirleyin.

Akışı oluşturmak için bir ad belirleyip ardından “Create” düğmesine basıyoruz:

Bu işlem aşağıdaki varsayılan akışı oluşturacaktır:

Bu akışta üç blok bulunur:
- Başlangıç bloğu akışı başlatmaktan sorumludur. Bir Chatflow durumunda akış, kullanıcının bir mesaj göndermesiyle başlar.
- LLM düğümü, girdi olarak kullanıcı mesajını alır ve bu örnekte
gpt-4olan bir LLM’e gönderir. - Son düğüm, sohbette bir mesaj görüntülemek için kullanılır. Bu örnekte LLM düğümüne bağlıdır, yani LLM düğümünün çıktısı sohbete gönderilir.
Bu üç düğüm birlikte, ChatGPT benzeri bir yapay zeka sohbeti oluşturur. Uygulamayı çalıştırmadan önce OpenAI eklentisini kurup yapılandırmamız gerekir.
OpenAI eklentisini kurma ve yapılandırma
OpenAI eklentisini kurmak için şunları yapın:
- Sağ üst köşedeki "Plugins" düğmesine tıklayın.

- “Install from Marketplace” öğesine tıklayın.

- Arama kutusuna "openai" yazın ve OpenAI eklentisine tıklayın.

- OpenAI eklentisini seçin ve “Install” düğmesine tıklayın.
Sonrasında, OpenAI API anahtarını ayarlamamız gerekiyor. Henüz yoksa buradan oluşturun. OpenAI API’sini kullanmanın ücretsiz olmadığını ve API anahtarına bir ödeme yöntemi bağlamanız gerektiğini unutmayın.
Anahtarı aldıktan sonra şu şekilde yapılandırabiliriz:
- LLM düğümünü seçin.

- Model adının yanındaki yapılandırma simgesine tıklayın.

- Üstteki model açılır menüsüne tıklayın.

- Listenin altındaki "Model Provider Settings"e tıklayın.

- API anahtarı bölümünde "Setup"a tıklayın.

- API anahtarını yapıştırın ve “Save”’e tıklayın.

Uygulamayı çalıştırma
Artık önizleme düğmesine tıklayarak uygulamayı çalıştırabiliriz:

Şu an için yalnızca bir yapay zeka sohbet botu olduğundan çok ilgi çekici değil. Unutmayın, kullanıcı bir mesaj göndermeden hiçbir şey yapmayacaktır.

Değişkenler oluşturma
Dify, tüm blokların erişebileceği değişkenlere değer atayarak uygulamanın durumunu saklamayı mümkün kılar.
Bir değişken oluşturmak için değişken düğmesine tıklayın:

Kullanıcının adını saklayacak bir değişken oluşturalım:

Bu yapılandırma, metin (string) saklayan name adlı bir değişken oluşturdu. Varsayılan değeri boş bıraktık; bu yüzden başlangıçta değişken boş bir dize olacaktır.
Bunu doldurmanın birkaç yolu var; en yaygın yöntem, bir AI bloğunu kullanarak konuşmadan otomatik olarak çıkarmaktır. Bunu birazdan öğreneceğiz. Önce, uygulamanın akışını kontrol etmek için bir değişkenin değerini nasıl kontrol edeceğimizi öğrenelim.
IF/ELSE blokları
Bir değişkenin değerini kontrol etmek için bir IF/ELSE bloğu kullanabiliriz. Bu blok, değişkenin değerine bağlı olarak farklı eylemler yürütmek için kullanılır.
Yeni bir blok eklemek için alttaki "+" düğmesine tıklayın:

Ardından eklemek istediğiniz bloğu seçin. Bu durumda "IF/ELSE"yi seçiyoruz:

Sonra, daha önce oluşturduğumuz name değişkenini seçerek bloğu yapılandırmak için bloğa tıklıyoruz.
Bunu test etmek için iki Answer bloğu ekliyoruz. Bu bloklar, sohbette bir mesaj görüntülemek için kullanılır. Bunlardan birini koşul doğruyken çalışan IF çıkışına, diğerini koşul yanlışken çalışan ELSE çıkışına bağlıyoruz.

IF çıkışı için "Üzgünüm, adınızı bilmiyorum." dizesini; ELSE için ise "Merhaba, {name}!" ifadesini ayarladım. Süslü parantezleri kullanarak bir değişkeni bir dizeye enjekte edebiliriz. Bu, istemler oluştururken de işimize yarayacaktır.
Bu Chatflow’u "Preview" düğmesine tıklayarak deneyebiliriz. Bir Chatflow’un kullanıcı mesajıyla tetiklendiğini unutmayın; bu yüzden önce "Hi" gibi bir mesaj göndermemiz gerekir. İsim ayarlı olup olmamasına göre sonuçlar şöyledir (ikinci örnek için arayüzde değişkeni elle ayarladım):

Değişken atayıcı ve parametre çıkarıcı blokları
Parametre Çıkarıcı bloğunu kullanarak değişkenlerin değerlerini tanımlamak ve çıkarmak için yapay zekâdan yararlanabiliriz. Bu blok, konuşmadan bilgi çıkarmak için bir LLM kullanır.

Önce IF dalına bağlı bir Parametre Çıkarıcı bloğu ekliyoruz. Blok yapılandırması şöyle:

INPUT VARIABLEolarak, kullanıcı mesajına karşılık gelensys.queryayarlanır. Bu, Parametre Çıkarıcı bloğunun değeri kullanıcı mesajından çıkarmaya çalışacağı anlamına gelir.EXTRACTION PARAMETERSbölümünde, çıkarmaya çalıştığımız bilgiyi tanımlarız. Ne yazık ki burada doğrudan bir değişken belirtemiyoruz; bu yüzden “+” düğmesine tıklayarak bu bilgiyi yeniden tanımlamamız gerekiyor.

INSTRUCTIONalanı, LLM’e ne yapılacağını anlatan istemdir.- Ardından, Parametre Çıkarıcı tarafından (varsa) çıkarılan değeri
namedeğişkenine atamak için bir Değişken Atayıcı bloğu ekliyoruz.

Çıkarılan name değerinin name değişkenine atandığından emin olun.

Bu adımdan sonra, kullanıcı adını vermemiş olabilir; bu yüzden name değişkeni hâlâ tanımsız kalabilir. Bu nedenle kontrol etmek için bir IF/ELSE bloğu daha ekliyoruz. İsim ayarlıysa kullanıcıyı selamlıyoruz. Değilse adını soruyoruz.

İşte örnek bir etkileşim:

Bu akış, Dify iş akışlarının temelini gösterir. Kullanıcının mesajı ne olursa olsun, isim tanımlı değilse mesajdan ismi çıkarmaya çalışır. Başarısız olursa ister. Aksi halde kullanıcıyı adıyla selamlar.
Bu aşamada bir LLM bloğu yok; dolayısıyla aracının başka bir şey yapması mümkün değil.
Kod bloğu
Kod blokları, özel Python kodu yürütmek için kullanılabilir. Önceki akışı, kullanıcının adını değil konumunu çıkarmak üzere değiştirelim. Ardından bir hava durumu API’sine istek göndermek ve hava tahminini kullanıcıya iletmek için bir Kod bloğu kullanacağız.
locationadlı yeni bir değişken oluşturun.- IF/ELSE bloklarını
nameyerinelocationı kontrol edecek şekilde değiştirin. - Parametre Çıkarıcı bloğunu ismi değil konumu çıkaracak şekilde değiştirin.
- Değişken Atayıcı bloğunu, çıkarılan değeri
locationdeğişkenine atayacak şekilde değiştirin. - Answer bloklarını sırasıyla konumu sormak ve konumu görüntülemek için değiştirin.
Bu adımlardan sonra akış şu şekilde görünmelidir:

İşte örnek bir etkileşim:

Sonraki adım, konum alındıktan sonra bir Kod bloğu eklemektir. Bu blok, OpenWeather API’sine istek göndererek o konuma ait hava tahminini ister.
Bu API, çok fazla istek yapılmadığı sürece ücretsizdir.
İkinci Answer bloğunu bir Kod bloğuyla değiştirin.

location değerini alan tek bir parametre alacak şekilde yapılandırın.

Python kodu için, OpenWeather API’sinden hava durumunu almak üzere requests paketini şu şekilde kullanabiliriz:
import requests
API_KEY = "PASTE_YOUR_API_KEY_HERE"
def main(location: str) -> str:
base_url = "http://api.openweathermap.org/data/2.5/weather"
params = {
"q": location,
"appid": API_KEY,
"units": "metric",
}
response = requests.get(base_url, params=params)
data = response.json()
if response.status_code == 200:
weather_desc = data["weather"][0]["description"]
temp = data["main"]["temp"]
return {
"result": f"Current weather in {location}: {weather_desc}, Temperature: {temp}°C"
}
else:
return {
"result": "Could not retrieve weather data",
}
Son olarak, çıktıyı kullanıcıya göstermek için Kod düğümünün çıktısını bir Answer düğümüne bağlıyoruz.

Artık bize hava durumunu söyleyebilen bir Chatflow’umuz var:

Proje: Bir Seyahat Planlayıcı Yapay Zekâ Aracısı Oluşturma
Artık bir yapay zeka seyahat asistanı oluşturmak için gereken tüm araçlara sahibiz. Olanaklar sınırsız; ancak bu öğreticiyi gereksiz karmaşık hâle getirmemek için basit tutacağız.
Aracı, seyahatin tek bir gününü planlamaya odaklanacak. Önce kullanıcının konumunu ve yapmayı sevdiği etkinlik türlerini toplayacak. Bunu yapmak için iki değişken kullanıyoruz:
location: Kullanıcının seyahat ettiği konumu saklar.activities: Kullanıcının yapmak istediği etkinlikleri saklayan bir metin dizisi.

Her iki değişkeni de çıkarmak için bir akışı şöyle oluşturabiliriz:

Bu örnekte, location ve activities listesini birlikte çıkarmak için bir değişken çıkarma bloğuyla başlıyoruz.

Ardından, bu parametrelerin her birinin çıkarılıp çıkarılmadığını kontrol etmek ve çıkarıldıysa değişkenleri güncellemek için IF/ELSE bloklarını kullanıyoruz. Önceki örneklerimizden farklı olarak bu, kullanıcının değerleri güncellemesine olanak tanır.
Değer çıkarma ve değişken atama işleminin sonunda, eksik değer olup olmadığını kontrol etmek için başka bir IF/ELSE bloğu ekliyoruz. Bir şey eksikse kullanıcıdan açıkça istemekteyiz.

Hem location hem de activities tanımlıysa, daha önce oluşturduğumuz Kod bloğunu kullanarak verilen konumdaki hava durumunu alırız. Son olarak, hava durumu, konum ve etkinlikleri bir LLM bloğuna vererek kullanıcının gününü planlarız.

LLM bloğu, modele ne yapacağını söyleyen bir sistem istemiyle yapılandırılır. Konum, etkinlikler ve hava durumu bu isteme enjekte edilir. İşte akışın son bölümü:

İşte aracıyla örnek bir etkileşim:

Yanıtta, Kod düğümü sayesinde aracının kullanıcıya hava durumunu sağlayabildiğini ve etkinlikleri planlarken bunu dikkate aldığını görüyoruz.
Akışın kurulma biçimi sayesinde, kullanıcı ilk mesajda bilgileri doğrudan verirse, aracı doğrudan gün için bir plan sunacaktır.

Özel bir karşılama tanımlama
Aracının kullanıcıyı bir mesajla selamlayarak başladığını fark etmiş olabilirsiniz:

Bunu etkinleştirmek için Conversation Opener özelliğini aktif hâle getirmemiz gerekir.


Dify Araçları
Bu öğreticide Dify’nin temel yapı taşlarını öğrendik. Ele almadığımız bir yön ise araçlardı.
Dify’de araçlar, yapay zeka aracılarınızın bir dil modelinin sınırlamalarının ötesinde dış dünya ile etkileşime girmesine olanak tanıyan güçlü uzantılardır. Bir LLM, eğitim verileri ve istem bağlamına dayanarak akıl yürütebilir ve yanıt üretebilir; ancak canlı verilere veya haricî hizmetlere gerçek zamanlı erişimi yoktur.
Araçlar, aracınızın API çağrıları yapmasını, veritabanlarını sorgulamasını, hesaplamalar gerçekleştirmesini, belgeleri getirmesini ve daha fazlasını mümkün kılarak, temelde yapay zekânız ile dış bilgi kaynakları arasında köprü görevi görür.

Dify’de araçları, araç türünü (HTTP istekleri, kod yorumlayıcıları veya üçüncü taraf eklentiler gibi), girdi/çıktı şemasını ve tüm kimlik doğrulama gereksinimlerini belirterek platformun görsel arayüzü üzerinden yapılandırabilirsiniz. Kurulum tamamlandığında bu araçlar, Tool blokları aracılığıyla aracı akışınızda kullanılabilir; bu sayede araca veri iletip veriyi ondan alabilir ve sonuçları LLM düğümlerine veya diğer mantık bloklarına besleyebilirsiniz.

Bu, aracılarınızı yalnızca daha akıllı değil, aynı zamanda eylem odaklı hâle getirir; gerçek dünya hizmetleriyle etkileşime girerek güncel ve bağlamsal olarak ilgili yanıtlar sağlayabilirler.
Bizim örneğimizde hava durumu API’sine istek göndermek için bir kod bloğu kullandık. Alternatif olarak bir araç oluşturup bu aracı LLM’e sunabilirdik.
Sonuç
Bu öğreticide, Dify ile çalışmaya başlamak için ihtiyaç duyacağınız temel bloklardan bazılarını inceledik. Ancak Dify’de keşfedilecek daha pek çok özellik ve yetenek bulunmaktadır.
Pekiştirmek için iyi bir egzersiz, oluşturduğumuz seyahat aracısını geliştirmek olacaktır. Örneğin, yerel etkinlikleri çevrimiçi bulmak için internet araması yetenekleri ekleyerek aracının işlevselliğini zenginleştirebilir ve daha dinamik öneriler sunmasını sağlayabilirsiniz.
Dify gibi yapay zekâ aracı oluşturucularla ilgileniyorsanız, daha fazla öğrenmek için diğer öğreticilerimize göz atmanızı öneririm:

