LangChain в Azure Databricks для разработки LLM
Внимание
Это экспериментальные функции, а определения API могут измениться.
В этой статье описываются интеграции LangChain, которые упрощают разработку и развертывание больших языковых моделей (LLM) в Azure Databricks.
С помощью этих интеграции LangChain вы можете:
- Просто загружайте данные из кадра данных PySpark с загрузчиком dataFrame PySpark.
- Интерактивный запрос данных с помощью естественного языка с агентом DataFrame Spark или агентом SQL Databricks.
- Оставьте модель Azure Databricks в качестве крупной языковой модели (LLM) в LangChain.
Что такое LangChain?
LangChain — это программная платформа, предназначенная для создания приложений, использующих большие языковые модели (LLM). Сила LangChain лежит в широком спектре интеграции и возможностей. Она включает в себя оболочки API, подсистемы веб-очистки, средства анализа кода, средства сводки документов и многое другое. Она также поддерживает большие языковые модели из OpenAI, Anthropic, HuggingFace и т. д. из поля вместе с различными источниками и типами данных.
LangChain доступен в качестве экспериментального вкуса MLflow, который позволяет клиентам LangChain использовать надежные средства и возможности отслеживания экспериментов MLflow непосредственно из среды Azure Databricks. См. документацию по MLflow по вкусу LangChain.
Требования
- Databricks Runtime 13.3 ML и более поздних версий.
- Databricks рекомендует установить последнюю версию LangChain, чтобы обеспечить наличие последних обновлений.
%pip install --upgrade langchain
Загрузка данных с помощью загрузчика DataFrame PySpark
Загрузчик DataFrame PySpark в LangChain упрощает загрузку данных из кадра данных PySpark с одним методом.
from langchain.document_loaders import PySparkDataFrameLoader
loader = PySparkDataFrameLoader(spark, wikipedia_dataframe, page_content_column="text")
documents = loader.load()
В следующей записной книжке показан пример, в котором загрузчик DataFrame PySpark используется для создания чат-бота на основе извлечения, зарегистрированного с помощью MLflow, что, в свою очередь, позволяет модели интерпретироваться как универсальная функция Python для вывода с mlflow.pyfunc.load_model()
.
Загрузчик PySpark DataFrame и MLFlow в записной книжке Langchain
Агент DataFrame Spark
Агент DataFrame Spark в LangChain позволяет взаимодействовать с кадром данных Spark, оптимизированным для ответа на вопросы. Документация по агенту DataFrame Spark в LangChain содержит подробный пример создания и использования агента DataFrame Spark с кадром данных.
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)
...
В следующей записной книжке показано, как создать и использовать агент DataFrame Spark для получения аналитических сведений о данных.
Использование LangChain для взаимодействия с записной книжкой Spark DataFrame
Агент SQL Databricks
Агент SQL Databricks является вариантом стандартного агента База данных SQL, который предоставляет LangChain и считается более мощным вариантом агента Spark DataFrame.
С помощью агента SQL Databricks любой пользователь Azure Databricks может взаимодействовать с указанной схемой в каталоге Unity и создавать аналитические сведения о своих данных.
Внимание
Агент SQL Databricks может запрашивать только таблицы и не создавать таблицы.
В следующем примере экземпляр базы данных создается в команде SQLDatabase.from_databricks(catalog="...", schema="...")
, а агент и необходимые средства создаются SQLDatabaseToolkit(db=db, llm=llm)
соответственно 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?")
Примечание.
Для моделей OpenAI требуется платная подписка, если бесплатная подписка попадает в ограничение скорости.
В следующей записной книжке показано, как создать и использовать агент SQL Databricks, чтобы лучше понять данные в базе данных.
Использование LangChain для взаимодействия с записной книжкой базы данных SQL
Оболочка Azure Databricks служила моделями в качестве LLM
Если у вас есть LLM, созданный в Azure Databricks, его можно использовать непосредственно в LangChain вместо OpenAI, HuggingFace или любого другого поставщика LLM.
Эта интеграция поддерживает два типа конечных точек:
- Рекомендуемые конечные точки обслуживания моделей для рабочей среды и разработки .
- Прокси-приложение драйвера кластера рекомендуется для интерактивной разработки.
Оболочка конечной точки обслуживания модели
Конечные точки Azure Databricks можно упаковать как LLM в LangChain. Чтобы упаковать конечную точку обслуживания модели в качестве LLM в LangChain, вам потребуется:
- Зарегистрированный LLM, развернутый в конечной точке обслуживания модели Azure Databricks.
- РАЗРЕШЕНИЕ CAN QUERY на конечную точку.
Часто модели требуют или рекомендуют важные параметры, например temperature
или max_tokens
. В следующем примере показано, как ввести эти параметры с развернутой моделью с именем falcon-7b-instruct
. Дополнительные сведения см. в документации по оболочке конечной точки обслуживания 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?")
Оболочка прокси-приложения драйвера кластера
Чтобы упаковать прокси-приложение драйвера кластера в качестве LLM в LangChain, вам потребуется:
- LLM, загруженный в интерактивный кластер Azure Databricks в режиме "один пользователь" или "без общей изоляции".
- Локальный HTTP-сервер, работающий на узле драйвера для обслуживания модели по адресу "/" с использованием HTTP POST с входными и выходными данными JSON.
- Приложение использует номер порта между [3000, 8000] и прослушивает IP-адрес драйвера или просто 0.0.0.0.0, а не
localhost
только. - Разрешение CAN ATTACH TO к кластеру.
Пример см. в документации по LangChain по оболочке прокси-приложения драйвера кластера.
Обратная связь
https://aka.ms/ContentUserFeedback.
Ожидается в ближайшее время: в течение 2024 года мы постепенно откажемся от GitHub Issues как механизма обратной связи для контента и заменим его новой системой обратной связи. Дополнительные сведения см. в разделеОтправить и просмотреть отзыв по