RAG chatbot s pomocí UI aplikace LangFlow

Jednoduchá aplikace RAG pro možnost nahrání pdf dokumentu a nastavení v rámci platformy LangFlow, bez kódování. Open source model Ollama na lokálním zařízení, nebo klasický openai model.

Zaujal mě tento návod a tak jsem neváhal a hned ho vyzkoušel u sebe na pc.

Zde je hezké schéma ohledně nastavení RAG:

Zdroj: https://medium.com/@han.heloir

Langflow je nástroj navržený pro Langchain aplikace a umožňuje nastavit aplikace bez nutnosti cokoliv programovat. Funguje v rámci uživatelského rozhraní.

Ollama je opensource model, který podporuje možnost použití nejnovější OS modelů, jako např. Llama 2 nebo Mistral.

Pokud vás zajímá více teorie ohledně jednotlivých komponent, doporučuju si přečíst dokumentaci jednotlivých komponent, ze kterých jsem vycházel. V původním návodu realizovali poradce pro zdravou výživu. Já si ve svém návodu vytvořím poradce ohledně permakultury.

Nyní pojďme rovnou k praktickému návodu:

Návod Langflow

Nejprve si nainstalujeme model Ollama do pc.

A následně spustíme v terminálu příkazy:

ollama serve
ollama pull llama2
ollama pull nomic-embed-text
ollama run llama2

Vytvoříme si složku na disku a dále pokračujeme příkazy níže (dle operačního systému). Tím nainstalujeme Langflow.

conda create -n langflow python= 3.11
conda activate langflow 
pip install langflow

Spustíme LangFlow: „langflow run

V prohlížeči dáme lokální adresu: http://127.0.0.1:7860/

Návod RAG + Ollama

Vytvoříme první projekt a v levém menu si přetáhneme následující komponenty:

  • PDF Loader pro načtení pdf dokumentu .
  • Text Splitter  – rozdělí text na menší části (chunks).
  • Model embeddings (Převod textu do vektorů).
  • Vektorová databáze (databáze pro vektory).
  • LLM ChatOllama (jazykový model).
  • Paměť konverzace – paměť pro plynulou konverzaci.
  • Retrieval Chain – propojuje jednotlivé komponenty.

Propojíme jednotlivé komponenty a nastavíme dle potřeby.

Vpravo dole dáme blesk a počkáme na načtení.

Poté můžeme (pod bleskem) kliknout na ikonku chatu a vyzkoušet funkčnost nastaveného chatbota.

Po položení několika otázek mohu konstatovat, že funguje správně.

RAG + OpenAI nastavení

Nyní si zkusíme nastavit klasický OpenAi model.

Změníme Embedding model na OpenAI a model na chat OpenAI (GPT-4 Turbo), vektorouvou databázi na Chroma. Zbytek necháme stejně. Nastavíme API klíč OpenAI.

Vyzkoušíme konverzaci.

Funguje. Model odpovídá na otázky ohledně informací z pdf správně.

Export kodu

Následně můžeme nastavení vyexportovat jako json soubor, nebo zkopírovat kód a vložit do své aplikace. Můžeme zkopírovat python i html widget s rozhraním aplikace.

import requests
from typing import Optional

BASE_API_URL = "http://127.0.0.1:7860/api/v1/process"
FLOW_ID = "6d5136ab-4dd1-4768-8e7c-530fba784763"
# You can tweak the flow by adding a tweaks dictionary
# e.g {"OpenAI-XXXXX": {"model_name": "gpt-4"}}
TWEAKS = {
  "PyPDFLoader-xwCbT": {},
  "RecursiveCharacterTextSplitter-B8hSX": {},
  "OpenAIEmbeddings-dnlZh": {},
  "Chroma-I5XEu": {},
  "ConversationBufferMemory-kvQAI": {},
  "ConversationalRetrievalChain-DdPhP": {},
  "ChatOpenAI-Ey74W": {}
}

def run_flow(inputs: dict, flow_id: str, tweaks: Optional[dict] = None) -> dict:
    """
    Run a flow with a given message and optional tweaks.

    :param message: The message to send to the flow
    :param flow_id: The ID of the flow to run
    :param tweaks: Optional tweaks to customize the flow
    :return: The JSON response from the flow
    """
    api_url = f"{BASE_API_URL}/{flow_id}"

    payload = {"inputs": inputs}
    headers = None
    if tweaks:
        payload["tweaks"] = tweaks
    if api_key:
        headers = {"x-api-key": api_key}
    response = requests.post(api_url, json=payload, headers=headers)
    return response.json()

# Setup any tweaks you want to apply to the flow
inputs = {"question":""}

print(run_flow(inputs, flow_id=FLOW_ID, tweaks=TWEAKS))

Zajímavé jsou i další příklady použití LangFlow.

Celkově hodnotím aplikaci i uživatelské prostředí jako velmi srozumitelné a dobře použitelné i pro někoho, kdo neumí programovat. Já už jsem naštěstí trochu dále a aplikaci si dokážu připravit i bez tohoto rozhraní, ale docela se mi líbí ta vizuální složka, kde si můžete pospojovat jednotlivé komponenty a ihned otestovat, bez nutnosti zdlouhavého kódování. Je vidět, že i LLM rychle spějí k no code/low code platformám.

Obsah článku

Líbí se Vám obsah?

Odebírejte Newsletter, ať vám nic neunikne.

Odebírejte novinky ze světa AI

Chcete-li se přihlásit k odběru tohoto blogu a dostávat upozornění na nové příspěvky e-mailem, zadejte svou e-mailovou adresu.

Sledujte mě na sítích.

Odběr novinek AI

Odebírejte novinky ze světa AI

Chcete-li se přihlásit k odběru tohoto blogu a dostávat upozornění na nové příspěvky e-mailem, zadejte svou e-mailovou adresu.

Napsat komentář

Vaše e-mailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *

Podobné články

školení chatGPT

Praktické Školení chatGPT

Nabízím praktické školení chatGPT pro firmy i jednotlivce. Díky tomuto kurzu se dozvíte, jak chat GPT používat při každodenní práci i na pomoc v osobním

Číst více »