LangChain in Azure Databricks voor LLM-ontwikkeling

Belangrijk

Dit zijn experimentele functies en de API-definities kunnen veranderen.

In dit artikel worden de LangChain-integraties beschreven die de ontwikkeling en implementatie van LLM's (Large Language Models) in Azure Databricks vergemakkelijken.

Met deze LangChain-integraties kunt u het volgende doen:

  • Laad naadloos gegevens uit een PySpark DataFrame met het PySpark DataFrame-laadprogramma.
  • Voer interactief query's uit op uw gegevens met behulp van natuurlijke taal met de Spark DataFrame Agent of Databricks SQL Agent.
  • Wrap your Azure Databricks serveer model as a large language model (LLM) in LangChain.

Wat is LangChain?

LangChain is een softwareframework dat is ontworpen om toepassingen te maken die gebruikmaken van grote taalmodellen (LLM's). De kracht van LangChain ligt in zijn breed scala aan integraties en mogelijkheden. Het bevat API-wrappers, web scraping subsystemen, hulpprogramma's voor codeanalyse, hulpprogramma's voor documentsamenvatting en meer. Het ondersteunt ook grote taalmodellen van OpenAI, Antropisch, HuggingFace, enzovoort, samen met verschillende gegevensbronnen en -typen.

LangChain is beschikbaar als experimentele MLflow-smaak waarmee LangChain-klanten rechtstreeks vanuit de Azure Databricks-omgeving gebruikmaken van de robuuste hulpprogramma's en mogelijkheden voor het bijhouden van experimenten van MLflow. Raadpleeg de documentatie over LangChain flavor MLflow.

Vereisten

  • Databricks Runtime 13.3 ML en hoger.
  • Databricks raadt pip aan om de nieuwste versie van LangChain te installeren om ervoor te zorgen dat u over de meest recente updates beschikt.
    • %pip install --upgrade langchain

Gegevens laden met het PySpark DataFrame-laadprogramma

Het PySpark DataFrame-laadprogramma in LangChain vereenvoudigt het laden van gegevens uit een PySpark DataFrame met één methode.

from langchain.document_loaders import PySparkDataFrameLoader

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

In het volgende notebook ziet u een voorbeeld waarin het PySpark DataFrame-laadprogramma wordt gebruikt om een chatbot te maken die is geregistreerd met MLflow, waardoor het model op zijn beurt kan worden geïnterpreteerd als een algemene Python-functie voor deductie met mlflow.pyfunc.load_model().

PySpark DataFrame-laadprogramma en MLFlow in Langchain-notebook

Notebook downloaden

Spark DataFrame Agent

De Spark DataFrame-agent in LangChain maakt interactie mogelijk met een Spark DataFrame, geoptimaliseerd voor het beantwoorden van vragen. De documentatie van De Spark DataFrame-agent van LangChain biedt een gedetailleerd voorbeeld van het maken en gebruiken van de Spark DataFrame-agent met een DataFrame.

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)
...

In het volgende notebook ziet u hoe u de Spark DataFrame-agent maakt en gebruikt om inzicht te krijgen in uw gegevens.

LangChain gebruiken om te communiceren met een Spark DataFrame-notebook

Notebook downloaden

Databricks SQL Agent

Databricks SQL Agent is een variant van de standaard SQL Database Agent die LangChain biedt en wordt beschouwd als een krachtigere variant van de Spark DataFrame Agent.

Met de Databricks SQL Agent kunnen alle Azure Databricks-gebruikers communiceren met een opgegeven schema in Unity Catalog en inzichten genereren over hun gegevens.

Belangrijk

De Databricks SQL Agent kan alleen query's uitvoeren op tabellen en maakt geen tabellen.

In het volgende voorbeeld wordt het database-exemplaar gemaakt binnen de SQLDatabase.from_databricks(catalog="...", schema="...") opdracht en worden de agent en de vereiste hulpprogramma's gemaakt door SQLDatabaseToolkit(db=db, llm=llm) respectievelijk create_sql_agent(llm=llm, toolkit=toolkit, **kwargs).

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?")

Notitie

OpenAI-modellen vereisen een betaald abonnement als het gratis abonnement een frequentielimiet bereikt.

In het volgende notebook ziet u hoe u de Databricks SQL Agent maakt en gebruikt om meer inzicht te krijgen in de gegevens in uw database.

LangChain gebruiken om te communiceren met een SQL-databasenotebook

Notebook downloaden

Azure Databricks-modellen verpakken als LLM's

Als u een LLM hebt die u hebt gemaakt in Azure Databricks, kunt u deze rechtstreeks in LangChain gebruiken in de plaats van OpenAI, HuggingFace of een andere LLM-provider.

Deze integratie ondersteunt twee eindpunttypen:

  • Model voor eindpunten die worden aanbevolen voor productie en ontwikkeling.
  • Proxy-app voor clusterstuurprogramma's, aanbevolen voor interactieve ontwikkeling.

Een eindpunt verpakken voor het leveren van een model

U kunt Azure Databricks-eindpunten verpakken als LLM's in LangChain. Als u een model voor eindpunt wilt verpakken als een LLM in LangChain, hebt u het volgende nodig:

  • Een geregistreerde LLM die is geïmplementeerd in een Azure Databricks-model dat het eindpunt bedient.
  • KAN EEN QUERY uitvoeren op de machtiging voor het eindpunt.

Vaak vereisen of aanbevelen modellen belangrijke parameters, zoals temperature of max_tokens. In het volgende voorbeeld ziet u hoe u deze parameters invoert met een geïmplementeerd model met de naam falcon-7b-instruct. Meer informatie vindt u in de documentatie over wrapping a serving endpoint 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?")

Een proxytoepassing voor het clusterstuurprogramma verpakken

Als u een proxytoepassing voor het clusterstuurprogramma wilt verpakken als een LLM in LangChain, hebt u het volgende nodig:

  • Een LLM die is geladen in een interactief Azure Databricks-cluster in de modus 'één gebruiker' of 'geen isolatie gedeeld'.
  • Een lokale HTTP-server die wordt uitgevoerd op het stuurprogrammaknooppunt om het model te bedienen op '/' met behulp van HTTP POST met JSON-invoer/-uitvoer.
  • Een app gebruikt een poortnummer tussen [3000, 8000] en luistert naar het IP-adres van het stuurprogramma of gewoon 0.0.0.0 in plaats van localhost alleen.
  • De CAN ATTACH TO-machtiging voor het cluster.

Zie de Documentatie van LangChain voor het verpakken van een proxy-app voor clusterstuurprogramma's voor een voorbeeld.