SQL QnA

Yapılandırılmış verilerin nasıl sorgulanacağını öğrenin

Web Scrape QnA ve Multiple Documents QnA gibi önceki örneklerin aksine, yapılandırılmış verilerin sorgulanması bir vektör veritabanı gerektirmez. Üst düzeyde, bu aşağıdaki adımlarla gerçekleştirilebilir:

  1. LLM'nin Sağlanması:

    • SQL veritabanı şemasına genel bakış

    • Örnek Satır Verileri

  2. Birkaç sorgu ile bir SQL sorgusu döndürür

  3. Bir If Else düğümü kullanarak SQL sorgusunu doğrulayın

  4. SQL sorgusunu çalıştırmak ve yanıtı almak için özel bir işlev oluşturun

  5. Yürütülen SQL yanıtından doğal bir yanıt döndürür

Bu örnekte, SingleStore'da depolanan bir SQL veritabanı ile etkileşime girebilen bir QnA sohbet robotu oluşturacağız

TL; DR

Chatflow şablonunu bulabilirsiniz:

JSON LİNKİ DOSYASI EKLENECEK

1. SQL Database Schema + Example Rows

SingleStore'a bağlanmak, veritabanı şemasını ve ilk 3 satırı almak için bir Custom JS Function node'u kullanın.

Research paperın, aşağıdaki örnek formatta bir istem oluşturulması önerilir:

Tam JavaScript kodu

HOST, USER, PASSWORD'ün nasıl alınacağı hakkında daha fazla bilgiyi bu kılavuzda bulabilirsiniz. Bitirdiğinizde Execute'a tıklayın:

Şimdi doğru formatın oluşturulduğunu görebiliriz. Bir sonraki adım bunu Prompt Template'e getirmektir.

2. Birkaç atış prompt'u ile bir SQL sorgusu döndürün

Yeni bir Chat Modeli + Prompt Şablonu + LLMChain oluşturun

Prompt Template (İstem Şablonu) içinde aşağıdaki prompt'u belirtin:

{şema}ve {soru} değişkenlerini kullandığımız için, bunların değerlerini Format Prompt Values bölümünde belirtin:

LLM'nin daha iyi öğrenmesini sağlamak için ipucuna daha fazla örnek verebilirsiniz (yani few-shot prompting). Ya da dialect-specific prompt'ları referans alabilirsiniz

3. If Else düğümünü kullanarak SQL sorgusunu doğrulayın

Bazen SQL sorgusu geçersizdir ve geçersiz bir SQL sorgusunu yürütmek için kaynakları boşa harcamak istemeyiz. Örneğin, bir kullanıcı SQL veritabanıyla ilgisi olmayan genel bir soru soruyorsa. Farklı bir yola yönlendirmek için bir If Else düğümü kullanabiliriz.

Örneğin, SELECT ve WHERE'in LLM tarafından verilen SQL sorgusuna dahil edilip edilmediğini görmek için temel bir kontrol gerçekleştirebiliriz.

Else Function'da, temel olarak LLM'ye kullanıcı sorgusuna cevap veremediğini söyleyen bir Prompt Template + LLMChain'e yönlendireceğiz:

4. SQL sorgusunu çalıştırmak ve yanıtı almak için özel işlev

Eğer geçerli bir SQL sorgusu ise, sorguyu çalıştırmamız gerekir. If Else düğümünden gelen True çıktısını bir Custom JS Function düğümüne bağlayın:

Tam Javascript kodu

5. Yürütülen SQL yanıtından doğal bir yanıt döndürün

Yeni bir Chat Model + Prompt Template + LLMChain oluşturun

Prompt Template'e aşağıdaki prompt'u yazın:

Format Prompt Values bölümünde değişkenleri belirtin:

Voila! SQL sohbet botunuz artık test için hazır!

Query

Öncelikle veri tabanı ile ilgili bir şey soralım.

Günlüklere baktığımızda, ilk LLMChain'in bize bir SQL sorgusu verebildiğini görebiliriz:

Girdi:

Çıktı

SQL sorgusu yürütüldükten sonra sonuç 2. LLMChain'e aktarılır:

Girdi

Çıktı

Şimdi, SQL veritabanıyla ilgisi olmayan bir şey sorarsak, Else yolu izlenir.

İlk LLMChain için aşağıdaki gibi bir SQL sorgusu oluşturulur:

Ancak, hem SELECT hem de WHERE içermediği için If Else kontrolünde başarısız olur, bu nedenle şöyle diyen bir istem içeren Else rotasına girilir:

Ve son çıktı şudur:

Sonuç

Bu örnekte, veritabanınızla etkileşime girebilen ve veritabanıyla ilgisi olmayan soruları da ele alabilen bir SQL sohbet robotunu başarıyla oluşturduk. Daha fazla iyileştirme, konuşma geçmişi sağlamak için bellek eklemeyi içerir.

Sohbet akışını aşağıda bulabilirsiniz:

JSON DOSYASI LİNK

Last updated