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
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
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
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ů:
- Model obsluhující koncové body doporučené pro produkční a vývoj
- Aplikace proxy ovladačů clusteru doporučená pro interaktivní vývoj
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.
Váš názor
https://aka.ms/ContentUserFeedback.
Připravujeme: V průběhu roku 2024 budeme postupně vyřazovat problémy z GitHub coby mechanismus zpětné vazby pro obsah a nahrazovat ho novým systémem zpětné vazby. Další informace naleznete v tématu:Odeslat a zobrazit názory pro