LangChain v Azure Databricks pro vývoj LLM

Důležité

Jedná se o experimentální funkce a definice rozhraní API se můžou změnit.

Tento článek popisuje integrace jazyka LangChain, které usnadňují vývoj a nasazení rozsáhlých jazykových modelů (LLM) v Azure Databricks.

S těmito integracemi jazyka LangChain můžete:

  • Bezproblémově načtěte data z datového rámce PySpark pomocí zavaděče datového rámce PySpark.
  • Interaktivně dotazujte data pomocí přirozeného jazyka pomocí agenta Spark DataFrame nebo agenta SQL Databricks.
  • Zabalení modelu Azure Databricks obsluhované jako rozsáhlého jazykového modelu (LLM) v LangChain

Co je LangChain?

LangChain je softwarová architektura navržená tak, aby pomáhala vytvářet aplikace, které využívají velké jazykové modely (LLM). Síla jazyka LangChain spočívá v široké škále integrací a schopností. Zahrnuje obálky rozhraní API, subsystémy pro výstřižky webu, nástroje pro analýzu kódu, nástroje pro shrnutí dokumentů a další. Podporuje také velké jazykové modely od OpenAI, Anthropic, HuggingFace atd. společně s různými zdroji a typy dat.

LangChain je k dispozici jako experimentální varianta MLflow, která zákazníkům LangChain umožňuje využívat robustní nástroje a možnosti sledování experimentů MLflow přímo z prostředí Azure Databricks. Viz dokumentace k jazyku LangChain flavor MLflow.

Požadavky

  • Databricks Runtime 13.3 ML a vyšší
  • Databricks doporučuje pip nainstalovat nejnovější verzi LangChain, abyste měli jistotu, že máte nejnovější aktualizace.
    • %pip install --upgrade langchain

Načtení dat pomocí zavaděče datového rámce PySpark

Zavaděč datových rámců PySpark v LangChain zjednodušuje načítání dat z datového rámce PySpark jednou metodou.

from langchain.document_loaders import PySparkDataFrameLoader

loader = PySparkDataFrameLoader(spark, wikipedia_dataframe, page_content_column="text")
documents = loader.load()

Následující poznámkový blok ukazuje příklad, ve kterém se zavaděč datového rámce PySpark používá k vytvoření chatovacího robota založeného na načítání, který je protokolovaný pomocí MLflow, který pak umožňuje model interpretovat jako obecnou funkci Pythonu pro odvozování pomocí mlflow.pyfunc.load_model().

Zavaděč datových rámců PySpark a MLFlow v poznámkovém bloku Langchain

Získat poznámkový blok

Agent datového rámce Sparku

Agent datového rámce Sparku v LangChain umožňuje interakci s datovým rámcem Sparku optimalizovaným pro zodpovězení otázek. Dokumentace k agentovi sparkových datových rámců jazyka LangChain obsahuje podrobný příklad vytvoření a použití agenta sparkového datového rámce s datovým rámcem.

from langchain.agents import create_spark_dataframe_agent

df = spark.read.csv("/databricks-datasets/COVID/coronavirusdataset/Region.csv", header=True, inferSchema=True)
display(df)

agent = create_spark_dataframe_agent(llm=OpenAI(temperature=0), df=df, verbose=True)
...

Následující poznámkový blok ukazuje, jak vytvořit a použít agenta datového rámce Spark, který vám pomůže získat přehled o datech.

Použití jazyka LangChain k interakci s poznámkovým blokem datového rámce Sparku

Získat poznámkový blok

Databricks SQL Agent

Agent SQL Databricks je variantou standardního agenta sql Database, který LangChain poskytuje a považuje se za výkonnější variantu agenta Spark DataFrame Agent.

S agentem SQL Databricks můžou všichni uživatelé Azure Databricks pracovat se zadaným schématem v katalogu Unity a generovat přehledy o svých datech.

Důležité

Agent SQL Databricks může dotazovat pouze tabulky a nevytvoří tabulky.

V následujícím příkladu se instance databáze vytvoří v SQLDatabase.from_databricks(catalog="...", schema="...") rámci příkazu a agent a požadované nástroje jsou vytvořeny SQLDatabaseToolkit(db=db, llm=llm) a create_sql_agent(llm=llm, toolkit=toolkit, **kwargs)v uvedeném pořadí.

from langchain.agents import create_sql_agent
from langchain.agents.agent_toolkits import SQLDatabaseToolkit
from langchain.sql_database import SQLDatabase
from langchain import OpenAI

db = SQLDatabase.from_databricks(catalog="samples", schema="nyctaxi")
llm = OpenAI(model_name="gpt-3.5-turbo-instruct", temperature=.7)
toolkit = SQLDatabaseToolkit(db=db, llm=llm)
agent = create_sql_agent(llm=llm, toolkit=toolkit, verbose=True)

agent.run("What is the longest trip distance and how long did it take?")

Poznámka:

Modely OpenAI vyžadují placené předplatné, pokud bezplatné předplatné dosáhne limitu sazby.

Následující poznámkový blok ukazuje, jak vytvořit a použít agenta SQL Databricks, který vám pomůže lépe porozumět datům v databázi.

Použití jazyka LangChain k interakci s poznámkovým blokem databáze SQL

Získat poznámkový blok

Zabalení modelů obsluhované službou Azure Databricks jako LLM

Pokud máte LLM, který jste vytvořili v Azure Databricks, můžete ho použít přímo v jazyce LangChain na místě OpenAI, HuggingFace nebo jakéhokoli jiného poskytovatele LLM.

Tato integrace podporuje dva typy koncových bodů:

Zabalení koncového bodu obsluhy modelu

Koncové body Azure Databricks můžete zabalit jako LLM v jazyce LangChain. K zabalení modelu obsluhujícího koncový bod jako LLM v jazyce LangChain potřebujete:

  • Zaregistrovaný LLM nasazený do koncového bodu obsluhy modelu Azure Databricks.
  • CAN QUERY oprávnění ke koncovému bodu.

Modely často vyžadují nebo doporučují důležité parametry, například temperature nebo max_tokens. Následující příklad ukazuje, jak zadat tyto parametry s nasazeným modelem s názvem falcon-7b-instruct. Další podrobnosti najdete v dokumentaci k zabalení obslužného koncového bodu LangChain.

from langchain.llms import Databricks

llm = Databricks(endpoint_name="falcon-7b-instruct", model_kwargs={"temperature": 0.1, "max_tokens": 100})
llm("How are you?")

Zabalení proxy aplikace ovladače clusteru

K zabalení proxy aplikace ovladače clusteru jako LLM v LangChain potřebujete:

  • LLM načtený do interaktivního clusteru Azure Databricks v režimu "jeden uživatel" nebo "bez sdílené izolace".
  • Místní server HTTP spuštěný na uzlu ovladače pro obsluhu modelu v /pomocí HTTP POST se vstupem a výstupem JSON.
  • Aplikace používá číslo portu mezi [3000, 8000] a naslouchá IP adrese ovladače nebo jednoduše 0.0.0.0.0 místo localhost pouze.
  • Oprávnění MŮŽE PŘIPOJIT KE clusteru.

Příklad najdete v dokumentaci LangChain k zabalení aplikace proxy ovladačů clusteru.