Skip to content

Instantly share code, notes, and snippets.

@mebaysan
Last active December 4, 2022 09:04
Show Gist options
  • Save mebaysan/069919fdc89876c2cb0eba09464cc06a to your computer and use it in GitHub Desktop.
Save mebaysan/069919fdc89876c2cb0eba09464cc06a to your computer and use it in GitHub Desktop.
Rasa Giriş
"""
ÖRNEK BİR CUSTOM ACTION
"""
from typing import Any, Text, Dict, List
from rasa_sdk import Action, Tracker
from rasa_sdk.executor import CollectingDispatcher
import requests
BASE_URL = "http://worldtimeapi.org/api/timezone/"
class ActionShowTimeZone(Action):
"""
every class has just 2 methods: name & run
"""
def name(self) -> Text:
"""Returns the name of action
Returns:
Text: the text we will register in `domain.py`
"""
return "action_find_timezone"
def run(self, dispatcher: CollectingDispatcher,
tracker: Tracker,
domain: Dict[Text, Any]) -> List[Dict[Text, Any]]:
# we can get values from slots by `tracker` object
target_timezone = tracker.get_slot('target_timezone')
try:
res = requests.get(BASE_URL+target_timezone)
res = res.json()
if res['utc_offset']:
output = f"Time zone is {res['utc_offset']}"
else:
output = "Please type in this structure: Area/Region"
except:
output = 'Ops! There are too many requests on the time zone API. Please try a few moments later...'
dispatcher.utter_message(text=output)
return []

Rasa: Giriş

Rasa ile Chatbot Yapımına Giriş videoma bakabilirsiniz.

Temel Komutlar

pip install rasa → Rasa’yı Python ortamına yükler

rasa init → Rasa projesi oluşturur

rasa shell → Modeli çalıştırır ve Rasa ile etkileşime geçmemizi sağlar

rasa train → Yaptığımız değişikleri modele uygular ve Rasa’yı yeniden eğitir

rasa run actions → Custom action’ları çalıştırmak için kullanılacak serveri ayağa kaldırır

Temel Rasa Kavramları

  • Intent → Kullanıcıdan alınan inputların karşılık geldiği kavramlardır. Kullanıcıdan X geldiğinde Y demek istediğini anla gibi düşünebiliriz.
  • Response / Action → Intent’lere verilecek cevaplar. Rasa içerinde action olarak tanımlanırlar.
  • Story → Rasa’nın hazırlıklı olması için önden hazırladığımız diyaloglardır. Diyalog akışları olarak düşünebiliriz.
  • Rule → Genelleştirilmiş diyalog akışları (kural) olarak düşünebiliriz. Mesela her zaman selamlamak vs.
  • Entity → Intent’ler içerisinden veri almak istersek Entity’leri kullanırız. nlu.yml ve domain.yml içerisinde tanımlamalıyız.
  • Slot → Entity’leri uygulama çalışırken depolamak için kullanırız. Bu sayede Entity değerlerini uygulama içerisinde Store’dan çekip kullanabiliriz. domain.yml dosyasında slotları tanımlamalıyız.

Hangi Dosya Ne İşe Yarar

  • nlu.ymlIntent’leri belirlemek için kullanırız
  • domain.yml → Belirlediğimiz her Intent’i bu dosyada modele tanıtmak (kaydetmek) zorundayız
  • stories.yml → Diyalog akışlarını bu dosya içerisinde tanımlarız
  • rules.yml → Kuralları tanımlarız
  • action.py → Custom action yazmak istersek bu dosyayı kullanırız. Her custom action Action sınıfından türetilmiş olmalıdır. Mutlaka 2 metodu olmalıdır: name ve run.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment