Ana içeriğe geç

Flowise AI: Demo Projeli Bir Kılavuz

Flowise, düşük kodlu ve iş akışı tabanlı bir araç kullanarak bir CSV veri kümesine dayalı soruları yanıtlayan bir yapay zeka aracısı nasıl oluşturulur, öğrenin.
· 12 dk. oku

Yapay Zeka ile Keşfedin

Bu yazıda, bir CSV veri kümesine dayalı soruları yanıtlayabilen bir yapay zeka aracısını Flowise kullanarak adım adım nasıl oluşturacağınızı açıklayacağım.

Flowise, karmaşık kodlarla uğraşmadan yapay zeka aracısı geliştirmek isteyenler için kullanışlı bir araçtır. Düşük kod yaklaşımı sayesinde teknik ayrıntılar yerine asıl göreve odaklanmamıza olanak tanır.

Son zamanlarda, yapay zeka aracısı oluşturmak için tasarlanan araçlarda bir artış görüyorum. Bu araçlar daha erişilebilir ve kullanıcı dostu hale geldi; kapsamlı teknik beceriler gerektirmeden akıllı sistemler oluşturmayı mümkün kılıyor. Bu araçlar hakkında daha fazlasını keşfetmek isterseniz, şu eğitimlere de göz atın:

Flowise Nedir?

Flowise, sürükle-bırak arayüzüyle yapay zeka aracıları oluşturmamıza yardımcı olmak için tasarlanmış bir araçtır. Çeşitli işlevleri temsil eden farklı blokları birbirine bağlayarak özelleştirilmiş bir iş akışı oluşturmamıza olanak tanır. Her bir blok belirli bir eylemi gerçekleştirecek şekilde yapılandırılabilir.

Örneğin, büyük dil modeline mesaj göndermek için kullanılan LLM blokları vardır. Ayrıca, özel JavaScript fonksiyonları çalıştırmamıza imkân tanıyan ve daha da özelleştirilmiş işlemler yapabilen fonksiyon blokları da bulunur.

Bu blokları birbirine bağladığımızda, bilgi bir bloktan diğerine akar; veriler adım adım işlenir ve dönüştürülür. Bu modüler yaklaşım, iş akışını tasarlamaya ve gerekli eylemleri yapılandırmaya odaklanmamıza imkân tanıdığı için, derin programlama bilgisi olmadan da yapay zeka aracısı oluşturmayı kolaylaştırır.

Flowise ile Veri Analisti Bir Yapay Zeka Aracısı Oluşturma

Flowise kullanarak bir veri analisti yapay zeka aracısı oluşturma sürecini adım adım inceleyelim. Bu rehber, Flowise’a kaydolmayı, özel bir iş akışı kurmayı ve veri kümelerini analiz edebilen etkileşimli bir aracı oluşturmak için çeşitli blokları kullanmayı kapsar.

Adım 1: Flowise üzerinde bir hesap oluşturun

Öncelikle Flowise kayıt sayfasını ziyaret ederek bir hesap oluşturun. Gerekli bilgileri doldurun ve hesabınızı doğrulayıp etkinleştirmek için e-posta ile gönderilen talimatları izleyin.

Adım 2: Veritabanı kurulumu

Flowise hesabımız hazır olduğuna göre, kullanacağımız veritabanını kurma zamanı. Analiz etmek istediğimiz verileri saklamak için bir veritabanına ihtiyacımız var.

Verilerimizi yönetmek için popüler ve kullanıcı dostu bir SQL veritabanı sağlayıcısı olan SingleStore’u kullanacağız. Şu adımları izleyelim:

  1. Önce SingleStore web sitesine gidin.
  2. SingleStore üzerinde yeni bir hesap oluşturun. 
  3. Aktif bir SingleStore hesabınızla, bir sonraki adım çalışacağımız veri kümesini yüklemektir. Bu örnekte, öğrencilerin sosyal medya alışkanlıklarına odaklanan ve Kaggle üzerinde bulunan bir veri kümesini kullanıyoruz. Kaggle’dan veri kümesi dosyasını indirdiğinizden ve SingleStore’a yüklediğinizden emin olun.

SingleStore'a dosya yükleme

  1. Veri kümesi yüklendikten sonra, SingleStore bundan otomatik olarak bir veritabanı tablosu oluşturacaktır. Bu tablo, veri analizimizin temelini oluşturacak ve Flowise yapay zeka aracımızın etkileşim kurması için verileri hazır hale getirecektir.

Adım 3: Chatflows bölümüne gidin

Oturum açtıktan sonra gösterge panosuna gidin ve "Chatflows" bölümünü bulun. Yeni bir iş akışı oluşturmaya başlamak için "Add New" seçeneğine tıklayın.

Flowise'da yeni bir chatflow oluşturma

Adım 4: Tablo bilgisini yüklemek için özel bir fonksiyon oluşturun

Bu adımda, tablonun açıklaması ve sütun adları gibi bilgileri almak için özel bir fonksiyon yazacağız. Bu veriler, aracımızın sorgulayacağı veri kümesinin yapısını anlaması açısından kritik öneme sahiptir.

  1. Özel bir fonksiyon bloğu oluşturun.

Özel bir fonksiyon bloğu ekleme

  1. Aşağıdaki kodu fonksiyon bloğu düzenleyicisine yapıştırın:
const mysql = require('mysql2/promise');

const tableName = $tableName;
const tableDescription = $tableDescription;
const connectionUrl = "<PASTE_YOUR_CONNECTION_STRING_HERE>" 

async function main() {
  try {
    const pool = mysql.createPool(connectionUrl);
    const q = 
    DESCRIBE ${tableName};
    ;
    const [rows] = await pool.query(q);
    const fields = rows.map((row) => ${row.Field} of type ${row.Type}).join("\n");
    const tableInformation = Table name: ${tableName}\nTable description:\n${tableDescription.trim()}\nColumns:\n${fields.trim()};
    return tableInformation;
  } catch(error) {
    return String(error);
  }  
}

return main();

Fonksiyonun başında connectionUrl değerini ayarlamamız gerekiyor. Bu bilgi SingleStore’da Deployments sekmesinde bulunur.

Veritabanı bağlantı bilgisini alma

Bağlantı dizesi şu şekilde görünür:

françois-19ecc:<françois-19ecc Password>@svc-3482219c-a389-4079-b18b-d50662524e8a-shared-dml.aws-virginia-6.svc.SingleStore.com:3333/db_franois_88ec0

İlk kısım, benim örneğimde françois-19ecc, kullanıcı adıdır. Hemen ardından şifre için bir yer tutucu olan <françois-19ecc Password> gelir ve bunu gerçek şifreyle değiştirmemiz gerekir.

Bu fonksiyon SingleStore veritabanına bağlanır ve tabloya ait sütun bilgilerini alır. İki girdisi vardır:

  • tableName: Tablonun adı
  • tableDescription: Tablonun açıklaması.

Bunlar, özel kod düğümündeki “Input Variables” düğmesine tıklanarak yapılandırılmalıdır. Değişkenlere, adlarının başına $ eklenerek kod içinde erişilebilir.

Değişkenlere erişim.

Benim durumumda, tablo SingleStore üzerinde oluşturulduğunda dataset olarak adlandırıldı. Siz CSV dosyasını yüklerken belirlediğiniz adı kullanmalısınız.

SingleStore'da tablo adını kontrol etme.

Adım 5: Bir prompt şablonu düğümü oluşturun

Bu düğüm, aracımıza yol gösterecek soruları oluşturduğumuz yerdir. Bu düğümü özel fonksiyonunuza bağlayın.

  1. Bir prompt şablonu düğümü oluşturun.

Flowise'da bir prompt şablonu düğümü oluşturma

  1. Şu promptu ekleyin:
Based on the SQL table information and the user's questions, return a SQL query that answers that question.
TABLE INFORMATION: {tableInformation}
QUESTION: {question}

Flowise'da özel fonksiyonu prompt şablonuna bağlama

Prompt iki yer tutucuya sahiptir: {tableInformation} ve {question}. question kullanıcı tarafından gönderilen prompttur, tableInformation ise önceki adımda tanımladığımız fonksiyonun çıktısıdır.

Bu yer tutucuların değerleri, prompt şablonu düğümündeki “Format Prompt Values” düğmesine tıklanarak yapılandırılmalıdır.

Flowise'da prompt değişkenlerini yapılandırma

Adım 6: Bir LLM chain bloğuna bağlayın

Şimdi, prompt şablonu düğümünü bir LLM chain bloğuna bağlayacağız; bu blok promptu yorumlayarak ondan bir SQL sorgusu üretecek. İzlememiz gereken adımlar şunlardır:

  1. Bir LLM chain bloğu ekleyin.
  2. OpenAI kullanacak şekilde yapılandırılmış bir model bloğu ekleyin ve bunu LLM chain bloğunun “Language Model” girişine bağlayın.
  3. OpenAI modelini yapılandırmak için bir OpenAI API anahtarı ayarlamanız gerekir. Eğer yoksa, buradan oluşturabilirsiniz.
  4. Prompt şablonu bloğunu “Prompt” girişine bağlayın.

Flowise'da LLM Chain düğümünü yapılandırma

Adım 7: Bir set variable bloğu kullanın

Oluşturulan SQL sorgusunu daha sonra kullanmak üzere saklamak için bir set variable bloğu oluşturun ve bunu LLM chain bloğunun çıktısına bağlayın.

Flowise'da set variable bloğu ile değerleri saklama

Adım 8: SQL sorgusunu çalıştırın

SQL sorgusunu veritabanında çalıştırmak için yeni bir özel kod bloğuna gönderin.

  1. Başka bir özel kod bloğu oluşturun.
  2. Şu kodu girin:
const mysql = require('mysql2/promise');

const connectionUrl = "<PASTE_THE_SAME_URL_USED_BEFORE>";

function formatQuery() {
  // This function is used to clean the query provided by ChatGPT 
  // by removing markdown quotes
  const q = $query;
  let lines = q.trim().split(/\r\n|\r|\n/);
  if(lines[0].startsWith("")) {
    lines = lines.slice(1, lines.length - 1);
  }
  return lines.join("\n").trim()
}

const q = formatQuery();
try {
  const pool = mysql.createPool(connectionUrl);
  const [rows] = await pool.query(q);
  return rows;
} catch(error) {
  return Query: ${q}\nError:${String(error)}`
}

connectionUrl değerini ayarlamayı unutmayın. Daha önce kullandığımızın aynısıdır.

Bu fonksiyonun tek bir girdisi vardır: çalıştırmak istediğimiz sorgu. Koda $query kullanılarak erişilir.  

Özel bir fonksiyon düğümünde değişkenlere erişme

Adım 9: Başka bir prompt şablonu oluşturun

Bu şablon, sorgu sonuçlarına dayanarak yapay zeka aracısının kullanıcıya sunacağı yanıtı biçimlendirmek için kullanılır.

  1. Yeni bir prompt şablonu oluşturun.
  2. Şu promptu kullanın:
Based on the question and the query result, provide an answer to the user's question. Always show the query to the user.
QUERY: {query}
QUERY RESULT: {queryResult}
QUESTION: {question}

Bu prompt üç yer tutucuya sahiptir:

  • query: LLM tarafından üretilen SQL sorgusu; değişken düğümü bağlanarak elde edilir.
  • queryResult: Önceki özel fonksiyon düğümü tarafından hesaplanan sorgu sonucu.
  • question: Başlangıçtaki kullanıcı promptu.

Flowise'da SQL sorgusunu üretmek için ikinci prompt şablonuna bağlantılar

Adım 10: Son LLM chain bloğu

Son olarak, bu prompt şablonunu yeni bir LLM chain bloğuna bağlayın; bu blok promptu kullanarak yanıtı oluşturacaktır. Daha önce kullanılan aynı OpenAI model bloğuna bağlayabilirsiniz.

İşte nihai aracı akışı:

Flowise'daki nihai akış

Bu adımlar tamamlandığında aracımız hazırdır. Soruları alabilir, ilgili verileri getirmek için SQL sorguları üretebilir ve net, öz yanıtlar sunabilir.

Veri Analisti Aracısıyla Sohbet Etme

Aracı artık kullanıma hazır. Onunla sohbet etmek için sağ üst köşedeki mor sohbet düğmesine tıklayın:

Yapay zeka aracısıyla sohbet

Anketin kaç yanıt aldığını sorarak test edelim:

Flowise kullanarak bir yapay zeka aracısı örneği

Dikkat ederseniz, son promptun tasarım şekli nedeniyle aracı yanıtında sorguyu da gösteriyor. Veriler hakkında bazı istatistikler soralım:

Flowise kullanarak bir yapay zeka aracısı örneği

Bir başka örnek daha:

Flowise kullanarak bir yapay zeka aracısı örneği

Flowise Hakkındaki Düşüncelerim

Birçok yapay zeka aracısı geliştirme aracını denedikten sonra, Flowise ile yaşadığım deneyim bir ölçüde hayal kırıklığı yarattı. Sıkça karşılaştığım sorunlardan biri, bazı değişken yapılandırmalarını yanlışlıkla silmem ve bunun sonucunda aracının nedenini açıkça anlayamadığım biçimde tutarsız davranmasıydı. Bu durum, sorun gidermeyi çoğu zaman zahmetli hale getirdi.

Ayrıca, Flowise’ın aracı akışları için net bir başlangıç noktası olmaması, aracının nasıl çalıştığını takip etmeyi ve anlamayı zorlaştırıyor. Bu, özellikle yapay zeka sistemleri geliştirmeye yeni başlayanlar için göz korkutucu olabilir. Ek olarak, Flowise ara sonuçları kolayca görüntüleme veya düğümleri tek başına test etme konusunda yetersiz kalıyor. Bu da sorunları tespit etmeyi veya iş akışını etkin bir şekilde iyileştirmeyi zorlaştırıyor.

Düğümlerin yapılandırmalarını bir bakışta görmekte de zorlandım. Örneğin, kullandığımız özel kod düğümleri girdi değişkenleri tanımlıyordu, ancak bunun böyle olduğu görünür durumda değil. Bunu görmek için düğümün o bölümüne tıklamamız gerekiyor. Bu da akışı yalnızca bakarak anlamayı güçleştiriyor.

Sonuç

Flowise, yapay zeka aracıları oluşturmak için umut verici bir düşük kod arayüzü sunsa da, benzer araçlara kıyasla kullanımı zorlaştıran birkaç kullanılabilirlik sorunu barındırıyor; özellikle daha akıcı ve sezgisel bir deneyim arayanlar için. Bu zorluklara rağmen, Flowise’ın konsepti potansiyel taşıyor ve bazı iyileştirmelerle yapay zeka çözümleri geliştirmek için harika bir araca dönüşebilir.

François Aubry

Yazar

François Aubry

CheapGPT’te full-stack mühendisi ve kurucuyum. Öğretmek her zaman tutkum oldu. Öğrencilik yıllarımdan itibaren diğer öğrencilere ders verme ve yardımcı olma fırsatlarını hevesle aradım. Bu tutku beni doktora yapmaya yönlendirdi; bu süreçte akademik çalışmalarımı desteklemek için araştırma görevlisi olarak da görev aldım. O yıllarda, geleneksel sınıf ortamında bağlar kurmaktan ve öğrenmeyi kolaylaştırmaktan büyük bir tatmin duydum. Ancak çevrim içi öğrenme platformlarının ortaya çıkmasıyla birlikte dijital eğitimin dönüştürücü potansiyelini fark ettim. Nitekim üniversitemizde bu tür bir platformun geliştirilmesinde aktif rol aldım. Geleneksel öğretim ilkelerini yenilikçi dijital yöntemlerle bütünleştirmeye derinden bağlıyım. Tutkum, yalnızca ilgi çekici ve bilgilendirici olmakla kalmayan, aynı zamanda bu dijital çağdaki öğrenenler için erişilebilir kurslar tasarlamaktır.

Konular

İlgili