LangChain på Azure Databricks för LLM-utveckling
Viktigt!
Det här är experimentella funktioner och API-definitionerna kan ändras.
Den här artikeln beskriver LangChain-integreringar som underlättar utveckling och distribution av stora språkmodeller (LLM) på Azure Databricks.
Med dessa LangChain-integreringar kan du:
- Läs in data sömlöst från en PySpark DataFrame med PySpark DataFrame-inläsaren.
- Fråga dina data interaktivt med naturligt språk med Spark DataFrame Agent eller Databricks SQL Agent.
- Omslut din Azure Databricks-serverade modell som en stor språkmodell (LLM) i LangChain.
Vad är LangChain?
LangChain är ett programvaruramverk som är utformat för att skapa program som använder stora språkmodeller (LLM). LangChains styrka ligger i dess breda utbud av integreringar och funktioner. Den innehåller API-omslutning, undersystem för webbskrapa, kodanalysverktyg, verktyg för dokumentsammanfattning med mera. Det stöder också stora språkmodeller från OpenAI, Anthropic, HuggingFace osv. ut ur lådan tillsammans med olika datakällor och typer.
LangChain är tillgängligt som en experimentell MLflow-smak som gör att LangChain-kunder kan utnyttja de robusta verktygen och experimentspårningsfunktionerna i MLflow direkt från Azure Databricks-miljön. Se MLflow-dokumentationen för LangChain-smak.
Krav
- Databricks Runtime 13.3 ML och senare.
- Databricks rekommenderar pip-installation av den senaste versionen av LangChain för att säkerställa att du har de senaste uppdateringarna.
%pip install --upgrade langchain
Läsa in data med PySpark DataFrame-inläsaren
PySpark DataFrame-inläsaren i LangChain förenklar inläsningen av data från en PySpark DataFrame med en enda metod.
from langchain.document_loaders import PySparkDataFrameLoader
loader = PySparkDataFrameLoader(spark, wikipedia_dataframe, page_content_column="text")
documents = loader.load()
Följande notebook-fil visar ett exempel där PySpark DataFrame-inläsaren används för att skapa en hämtningsbaserad chattrobot som loggas med MLflow, vilket i sin tur gör att modellen kan tolkas som en allmän Python-funktion för slutsatsdragning med mlflow.pyfunc.load_model()
.
PySpark DataFrame-inläsare och MLFlow i Langchain Notebook
Spark DataFrame-agent
Spark DataFrame-agenten i LangChain tillåter interaktion med en Spark DataFrame, optimerad för frågesvar. LangChains Dokumentation om Spark DataFrame Agent innehåller ett detaljerat exempel på hur du skapar och använder Spark DataFrame-agenten med en 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)
...
Följande notebook-fil visar hur du skapar och använder Spark DataFrame-agenten för att få insikter om dina data.
Använda LangChain för att interagera med en Spark DataFrame-notebook-fil
Databricks SQL Agent
Databricks SQL Agent är en variant av sql database-standardagenten som LangChain tillhandahåller och anses vara en kraftfullare variant av Spark DataFrame-agenten.
Med Databricks SQL Agent kan alla Azure Databricks-användare interagera med ett angivet schema i Unity Catalog och generera insikter om sina data.
Viktigt!
Databricks SQL Agent kan bara köra frågor mot tabeller och skapar inte tabeller.
I följande exempel skapas databasinstansen SQLDatabase.from_databricks(catalog="...", schema="...")
i kommandot och agenten och nödvändiga verktyg skapas av SQLDatabaseToolkit(db=db, llm=llm)
respektive 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?")
Kommentar
OpenAI-modeller kräver en betald prenumeration om den kostnadsfria prenumerationen når en prisgräns.
Följande notebook-fil visar hur du skapar och använder Databricks SQL Agent för att hjälpa dig att bättre förstå data i databasen.
Använda LangChain för att interagera med en SQL-databasanteckningsbok
Omsluta Azure Databricks-hanterade modeller som LLM:er
Om du har en LLM som du har skapat i Azure Databricks kan du använda den direkt i LangChain i stället för OpenAI, HuggingFace eller någon annan LLM-provider.
Den här integreringen stöder två slutpunktstyper:
- Modell som betjänar slutpunkter som rekommenderas för produktion och utveckling.
- Proxyapp för klusterdrivrutiner rekommenderas för interaktiv utveckling.
Omsluta en modell som betjänar slutpunkten
Du kan omsluta Azure Databricks-slutpunkter som LLM:er i LangChain. Om du vill omsluta en modell som betjänar slutpunkten som en LLM i LangChain behöver du:
- En registrerad LLM distribuerad till en Azure Databricks-modell som betjänar slutpunkten.
- KAN FRÅGA behörighet till slutpunkten.
Ofta kräver eller rekommenderar modeller viktiga parametrar som temperature
eller max_tokens
. I följande exempel visas hur du anger dessa parametrar med en distribuerad modell med namnet falcon-7b-instruct
. Ytterligare information finns i dokumentationen Omsluta en serverdelsslutpunkts-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?")
Omsluta ett proxyprogram för klusterdrivrutiner
Om du vill omsluta ett proxyprogram för klusterdrivrutiner som en LLM i LangChain behöver du:
- En LLM som lästs in på ett interaktivt Azure Databricks-kluster i läget "enskild användare" eller "ingen isolering delad".
- En lokal HTTP-server som körs på drivrutinsnoden för att hantera modellen på "/" med HTTP POST med JSON-indata/utdata.
- En app använder ett portnummer mellan [3000, 8 000] och lyssnar på drivrutins-IP-adressen eller helt enkelt 0.0.0.0 i stället för
localhost
bara. - BEHÖRIGHETEN KAN KOPPLA TILL till klustret.
Ett exempel finns i LangChain-dokumentationen för att omsluta en proxyapp för klusterdrivrutiner.
Feedback
https://aka.ms/ContentUserFeedback.
Kommer snart: Under hela 2024 kommer vi att fasa ut GitHub-problem som feedbackmekanism för innehåll och ersätta det med ett nytt feedbacksystem. Mer information finns i:Skicka och visa feedback för