Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Dynamic Workflow Management in Chatbots with La...

Kardel Ruveyda
September 29, 2024
120

Dynamic Workflow Management in Chatbots with LangGraph-DevMultiGroup

Cumartesi günü @devmultigroup 'un düzenlediği AI Conference Shaping Tomorrow etkinliğinde Dynamic Workflow Management in Chatbots with LangGraph konusu ile konuşmacı olarak yer aldım.

Kardel Ruveyda

September 29, 2024
Tweet

Transcript

  1. BEN KİMİM? 2023- YILDIZ TECHNICAL UNIVERSİTY Mathematical Engineering (Licentiate Degree)

    YILDIZ TECHNICAL UNIVERSİTY Computer Engineering/IT (Master's Degree (Non-Thesis)) 2013-2018 2019-2020 YILDIZ TECHNICAL UNIVERSİTY Mathematical Engineering (Master's Degree (Thesis)) 2021-.. DOĞUŞ TEKNOLOJİ Software Support Asistant Specialist Software Asistant Specialist Software Specialist 2018-2021 KARİYER.NET Software Specialist Senior Software Specialist Expert Software Engineer Mavi (2016) Overtech (2017) INTERNSHIPS Junior Frontend Developer 2018 ICONEC WAVE
  2. Basit Bir Graph Yapısı Graphs, düğümler (nodes) ve bu düğümleri

    birbirine bağlayan kenarlardan (edges) oluşan matematiksel yapılardır. En basit haliyle, bir graph iki düğüm ve bu düğümleri birbirine bağlayan bir kenardan oluşur. Bu yapı, dil modelleri ve doğal dil işleme (NLP) uygulamalarında oldukça faydalıdır
  3. Düğümlerin İşlevi Düğümleri, fonksiyonların çalıştırılabileceği yerler olarak düşünebiliriz. Her düğümde

    bir fonksiyon çalıştırılır ve bu fonksiyonun dönüş değeri bir sonraki düğüme iletilir. Bu şekilde, karmaşık işlemler basit adımlara bölünerek graph üzerinde ilerler.
  4. Graph Tanımı Bir graph genellikle G harfi ile gösterilir ve

    iki temel bileşenden oluşur: Vertex (Node/Düğüm): Graph içerisindeki varlıkları temsil eden elemanlardır. 1. Edges (Kenarlar): Düğümler arasındaki ilişkileri gösteren bağlantılardır. 2.
  5. LangGraph Nedir? LangChain'in yeniliği olan LangGraph, LangChain üzerine inşa edilmiştir

    ve kullanıcılarına daha gelişmiş ajan çalışma zamanları sunmak için tasarlanmıştır. LangGraph, Dil Modelleri (LLM’ler) ile çok aktörlü, durumsal uygulamalar oluşturmak için geliştirilmiş bir kütüphanedir. Ajan ve çok ajanlı iş akışlarını oluşturmak için kullanılan bu kütüphane, LangChain üzerine inşa edilmiştir
  6. LangGraph kullanmak için LangChain kullanmam gerekir mi? Aradaki fark nedir?

    LangGraph, karmaşık ajan sistemleri için bir orkestrasyon çerçevesidir ve LangChain ajanlarına göre daha düşük seviyeli ve kontrol edilebilirdir. Öte yandan LangChain, modeller ve diğer bileşenlerle etkileşim için standart bir arayüz sağlar, bu da doğrudan zincirler ve geri alma akışları için kullanışlıdır.
  7. LangGraph açık kaynak mı? Ücretsiz mi? Evet. LangGraph, MIT lisanslı

    açık kaynaklı bir kütüphanedir ve kullanımı ücretsizdir.
  8. LLM Çağrısı ile Graph Oluşturma content='Merhaba! Size nasıl yardımcı olabilirim?'

    response_metadata={'finish_reason': 'stop'} id='run-8936a285- 717a-4e60-aaa5-af71baeda9a6-0'
  9. LLM Çağrısı ile Graph Oluşturma Output from node 'agent': ---

    Merhaba! Size nasıl yardımcı olabilirim? --- Output from node 'node_2': --- Agent söylüyor:Merhaba! Size nasıl yardımcı olabilirim? --- Final Output: Agent söylüyor:Merhaba! Size nasıl yardımcı olabilirim?
  10. Peki bunu gerçekten bir hava durumu API’sine bağlar ve sonuçları

    oradan almak istersek ne yaparız? In İstanbul, the current weather is as follows: Detailed status: broken clouds Wind speed: 3.09 m/s, direction: 70° Humidity: 54% Temperature: - Current: 28.68°C - High: 31.09°C - Low: 28.68°C - Feels like: 29.72°C Rain: {} Heat index: None Cloud cover: 75%
  11. Peki bunu gerçekten bir hava durumu API’sine bağlar ve sonuçları

    oradan almak istersek ne yaparız? In İstanbul, the current weather is as follows: Detailed status: scattered clouds Wind speed: 3.6 m/s, direction: 80° Humidity: 37% Temperature: - Current: 31.59°C - High: 31.68°C - Low: 24.48°C - Feels like: 31.24°C Rain: {} Heat index: None Cloud cover: 40%
  12. Peki bunu gerçekten bir hava durumu API’sine bağlar ve sonuçları

    oradan almak istersek ne yaparız? Output from node 'agent': --- İstanbul --- Output from node 'tool': --- In İstanbul, the current weather is as follows: Detailed status: scattered clouds Wind speed: 3.6 m/s, direction: 80° Humidity: 37% Temperature: - Current: 31.59°C - High: 31.68°C - Low: 24.48°C - Feels like: 31.24°C Rain: {} Heat index: None Cloud cover: 40% --- Final Output: In İstanbul, the current weather is as follows: Detailed status: scattered clouds Wind speed: 3.6 m/s, direction: 80° Humidity: 37% Temperature: - Current: 31.59°C - High: 31.68°C - Low: 24.48°C - Feels like: 31.24°C Rain: {} Heat index: None Cloud cover: 40%
  13. Peki ben daha az ve öz bir cevap istersem? Girdi:

    state (AgentState) sözlüğü. 1. İlk İşlem: messages anahtarını kullanarak state sözlüğündeki mesajları alır. 2. Kullanıcı Girdisi: Son kullanıcı girdisini (son mesajı) alır (user_input = messages[-1]). 3. Tam Sorgu Oluşturma: Kullanıcı girdisine dayalı olarak, şehir ismini bulmak için tam bir sorgu oluşturur (complete_query). 4. Dil Modeli Çağrısı: Bu sorguyu dil modeline gönderir (llm.invoke(complete_query)) ve yanıtı alır. 5. Yanıtı Ekleme: Alınan yanıtı messages dizisine ekler (state['messages'].append(response.cont ent)). 6. Dönüş: Güncellenmiş state sözlüğünü döner. 7.
  14. Peki ben daha az ve öz bir cevap istersem? Girdi:

    state (AgentState) sözlüğü. 1. İlk İşlem: messages anahtarını kullanarak state sözlüğündeki mesajları alır. 2. Agent Yanıtı: Son agent yanıtını alır (agent_response = messages[-1]). 3. Hava Durumu API Çağrısı: OpenWeatherMapAPIWrapper sınıfından bir örnek oluşturur ve şehir adına göre hava durumu verilerini alır (weather_data = weather.run(agent_response)). 4. Yanıtı Ekleme: Alınan hava durumu verilerini messages dizisine ekler (state['messages'].append(weather_da ta)). 5. Dönüş: Güncellenmiş state sözlüğünü döner. 6.
  15. Peki ben daha az ve öz bir cevap istersem? Girdi:

    state (AgentState) sözlüğü. 1. İlk İşlem: messages anahtarını kullanarak state sözlüğündeki mesajları alır. 2. Kullanıcı Girdisi: İlk kullanıcı girdisini alır (user_input = messages[0]). 3. Mevcut Bilgi: En son alınan bilgiyi alır (available_info = messages[-1]). 4. Tam Sorgu Oluşturma: Kullanıcı girdisi ve mevcut bilgilere dayanarak, kısa ve öz bir yanıt oluşturmak için tam bir sorgu oluşturur (agent2_query). 5. Dil Modeli Çağrısı: Bu sorguyu dil modeline gönderir (llm.invoke(agent2_query)) ve yanıtı alır. 6. Dönüş: Dil modelinden alınan yanıtı döner (return response.content). 7.
  16. Peki ben daha az ve öz bir cevap istersem? İstanbul'da

    hava şu anda açık gökyüzüyle birlikte 27.68°C sıcaklıkta ve 10.8 m/s hızında esen 10°'lik bir rüzgarla devam ediyor. Nem oranı ise %65.