LangChain w usłudze Azure Databricks na potrzeby programowania w usłudze LLM
Ważne
Są to funkcje eksperymentalne, a definicje interfejsu API mogą ulec zmianie.
W tym artykule opisano integracje langchain, które ułatwiają opracowywanie i wdrażanie dużych modeli językowych (LLMs) w usłudze Azure Databricks.
Dzięki tym integracyjnym aplikacjom LangChain można wykonywać następujące czynności:
- Bezproblemowe ładowanie danych z ramki danych PySpark za pomocą modułu ładującego PySpark DataFrame.
- Interakcyjne wykonywanie zapytań o dane przy użyciu języka naturalnego za pomocą agenta ramki danych platformy Spark lub agenta SQL usługi Databricks.
- Opakowywanie usługi Azure Databricks służyło jako model dużego modelu językowego (LLM) w usłudze LangChain.
Co to jest LangChain?
LangChain to struktura oprogramowania przeznaczona do tworzenia aplikacji korzystających z dużych modeli językowych (LLMs). Siła LangChaina leży w szerokiej gamie integracji i możliwości. Obejmuje to otoki interfejsów API, podsystemy złomowania sieci Web, narzędzia do analizy kodu, narzędzia do podsumowania dokumentów i nie tylko. Obsługuje również duże modele językowe z programów OpenAI, Anthropic, HuggingFace itp. z różnych źródeł danych i typów.
LangChain jest dostępny jako eksperymentalny smak MLflow, który umożliwia klientom LangChain wykorzystanie niezawodnych narzędzi i możliwości śledzenia eksperymentów MLflow bezpośrednio ze środowiska usługi Azure Databricks. Zapoznaj się z dokumentacją biblioteki MLflow o smaku LangChain.
Wymagania
- Databricks Runtime 13.3 ML i nowsze.
- Usługa Databricks zaleca zainstalowanie najnowszej wersji pakietu LangChain w celu zapewnienia najnowszych aktualizacji.
%pip install --upgrade langchain
Ładowanie danych za pomocą modułu ładującego ramki danych PySpark
Moduł ładujący ramki danych PySpark w elemencie LangChain upraszcza ładowanie danych z ramki danych PySpark przy użyciu jednej metody.
from langchain.document_loaders import PySparkDataFrameLoader
loader = PySparkDataFrameLoader(spark, wikipedia_dataframe, page_content_column="text")
documents = loader.load()
W poniższym notesie przedstawiono przykład, w którym moduł ładujący ramki danych PySpark jest używany do tworzenia czatbota opartego na pobieraniu, który jest rejestrowany za pomocą biblioteki MLflow, co z kolei umożliwia interpretowanie modelu jako ogólnej funkcji języka Python na potrzeby wnioskowania za pomocą polecenia mlflow.pyfunc.load_model()
.
Moduł ładujący ramek danych PySpark i mlFlow w notesie Langchain
Agent ramki danych platformy Spark
Agent ramki danych platformy Spark w języku LangChain umożliwia interakcję z ramką danych platformy Spark zoptymalizowaną pod kątem odpowiadania na pytania. Dokumentacja agenta ramki danych Platformy Spark języka LangChain zawiera szczegółowy przykład tworzenia i używania agenta ramki danych Spark z ramką danych.
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)
...
W poniższym notesie pokazano, jak utworzyć i użyć agenta ramki danych Platformy Spark, aby uzyskać szczegółowe informacje na temat danych.
Korzystanie z biblioteki LangChain do interakcji z notesem ramki danych platformy Spark
Databricks SQL Agent
Agent SQL usługi Databricks jest wariantem standardowego agenta usługi SQL Database, który udostępnia język LangChain i jest uważany za bardziej zaawansowany wariant agenta ramki danych Platformy Spark.
Za pomocą agenta SQL usługi Databricks wszyscy użytkownicy usługi Azure Databricks mogą korzystać z określonego schematu w wykazie aparatu Unity i generować szczegółowe informacje dotyczące ich danych.
Ważne
Agent SQL usługi Databricks może wysyłać zapytania tylko do tabel i nie tworzy tabel.
W poniższym przykładzie wystąpienie bazy danych jest tworzone w SQLDatabase.from_databricks(catalog="...", schema="...")
poleceniu , a agent i wymagane narzędzia są tworzone odpowiednio przez SQLDatabaseToolkit(db=db, llm=llm)
elementy i 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?")
Uwaga
Modele OpenAI wymagają płatnej subskrypcji, jeśli bezpłatna subskrypcja osiągnie limit szybkości.
Poniższy notes przedstawia sposób tworzenia i używania agenta SQL usługi Databricks w celu lepszego zrozumienia danych w bazie danych.
Korzystanie z biblioteki LangChain do interakcji z notesem bazy danych SQL
Zawijanie usługi Azure Databricks służyło modelom jako LLMs
Jeśli masz utworzoną usługę LLM w usłudze Azure Databricks, możesz jej użyć bezpośrednio w usłudze LangChain zamiast biblioteki OpenAI, HuggingFace lub innego dostawcy LLM.
Ta integracja obsługuje dwa typy punktów końcowych:
- Model obsługujący punkty końcowe zalecane w środowisku produkcyjnym i programistycznym.
- Aplikacja serwera proxy sterowników klastra zalecana do programowania interakcyjnego.
Zawijanie punktu końcowego obsługującego model
Punkty końcowe usługi Azure Databricks można opakowować jako moduły LLM w usłudze LangChain. Aby opakowować model obsługujący punkt końcowy jako moduł LLM w usłudze LangChain, potrzebne są następujące elementy:
- Zarejestrowana usługa LLM wdrożona w modelu usługi Azure Databricks obsługującym punkt końcowy.
- UPRAWNIENIE CAN QUERY do punktu końcowego.
Często modele wymagają ważnych parametrów, takich jak temperature
lub max_tokens
. W poniższym przykładzie pokazano, jak wprowadzić te parametry przy użyciu wdrożonego modelu o nazwie falcon-7b-instruct
. Dodatkowe szczegóły można znaleźć w dokumentacji opakowującego punkt końcowy LangChain obsługującego.
from langchain.llms import Databricks
llm = Databricks(endpoint_name="falcon-7b-instruct", model_kwargs={"temperature": 0.1, "max_tokens": 100})
llm("How are you?")
Zawijanie aplikacji serwera proxy sterownika klastra
Aby opakować aplikację serwera proxy sterownika klastra jako moduł LLM w usłudze LangChain, potrzebne są następujące elementy:
- Moduł LLM załadowany do interaktywnego klastra usługi Azure Databricks w trybie "pojedynczego użytkownika" lub "braku izolacji udostępnionej".
- Lokalny serwer HTTP uruchomiony w węźle sterownika do obsługi modelu pod adresem "/" przy użyciu protokołu HTTP POST z danymi wejściowymi/wyjściowymi JSON.
- Aplikacja używa numeru portu z zakresu [3000, 8000] i nasłuchuje adresu IP sterownika lub po prostu 0.0.0.0, a nie
localhost
tylko. - Uprawnienie CAN ATTACH TO do klastra.
Aby zapoznać się z przykładem, zobacz dokumentację langchain dotyczącą opakowującego aplikację serwera proxy sterownika klastra.
Opinia
https://aka.ms/ContentUserFeedback.
Dostępne już wkrótce: W 2024 r. będziemy stopniowo wycofywać zgłoszenia z serwisu GitHub jako mechanizm przesyłania opinii na temat zawartości i zastępować go nowym systemem opinii. Aby uzyskać więcej informacji, sprawdź:Prześlij i wyświetl opinię dla