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.

Školení

Jednodenní školení AI. Cena od 15 000 Kč za tým 6–12 lidí. Rezervujte

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.

NABÍZÍM..

AI školení

Jednodenní školení AI. Cena od 15 000 Kč za tým 6–12 lidí. Rezervujte

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.

Podobné články

školení kurz claude Anthropic

Školení Claude Anthropic

Školení Claude pro firmy i jednotlivce. Díky tomuto kurzu se dozvíte, jak Claude používat při každodenní práci i na pomoc v osobním životě. Naučím vás

Číst více »