跳到主要內容
Open In ColabOpen on GitHub

Databricks

Databricks Lakehouse Platform 在單一平台上整合資料、分析和 AI。

此筆記本提供 Databricks LLM 模型入門的快速概觀。如需所有功能和組態的詳細文件,請參閱 API 參考

概觀

Databricks LLM 類別封裝了一個完成端點,該端點託管為以下兩種端點類型之一

  • Databricks Model Serving,建議用於生產和開發
  • 叢集驅動程式代理應用程式,建議用於互動式開發。

此範例筆記本展示如何封裝您的 LLM 端點,並在您的 LangChain 應用程式中將其用作 LLM。

限制

Databricks LLM 類別是舊版實作,在功能相容性方面有一些限制。

  • 僅支援同步調用。不支援串流或非同步 API。
  • 不支援 batch API。

若要使用這些功能,請改用新的 ChatDatabricks 類別。ChatDatabricks 支援 ChatModel 的所有 API,包括串流、非同步、批次等。

設定

若要存取 Databricks 模型,您需要建立一個 Databricks 帳戶、設定憑證(僅當您在 Databricks 工作區外部時),並安裝必要的套件。

憑證(僅當您在 Databricks 外部時)

如果您在 Databricks 內部執行 LangChain 應用程式,則可以跳過此步驟。

否則,您需要手動將 Databricks 工作區主機名稱和個人存取權杖分別設定為 DATABRICKS_HOSTDATABRICKS_TOKEN 環境變數。請參閱 驗證文件,以了解如何取得存取權杖。

import getpass
import os

os.environ["DATABRICKS_HOST"] = "https://your-workspace.cloud.databricks.com"
if "DATABRICKS_TOKEN" not in os.environ:
os.environ["DATABRICKS_TOKEN"] = getpass.getpass(
"Enter your Databricks access token: "
)

或者,您可以在初始化 Databricks 類別時傳遞這些參數。

from langchain_community.llms import Databricks

databricks = Databricks(
host="https://your-workspace.cloud.databricks.com",
# We strongly recommend NOT to hardcode your access token in your code, instead use secret management tools
# or environment variables to store your access token securely. The following example uses Databricks Secrets
# to retrieve the access token that is available within the Databricks notebook.
token=dbutils.secrets.get(scope="YOUR_SECRET_SCOPE", key="databricks-token"), # noqa: F821
)
API 參考:Databricks

安裝

LangChain Databricks 整合位於 langchain-community 套件中。此外,執行此筆記本中的程式碼需要 mlflow >= 2.9

%pip install -qU langchain-community mlflow>=2.9.0

封裝模型服務端點

先決條件:

預期的 MLflow 模型簽章為

  • 輸入:[{"name": "prompt", "type": "string"}, {"name": "stop", "type": "list[string]"}]
  • 輸出:[{"type": "string"}]

調用

from langchain_community.llms import Databricks

llm = Databricks(endpoint_name="YOUR_ENDPOINT_NAME")
llm.invoke("How are you?")
API 參考:Databricks
'I am happy to hear that you are in good health and as always, you are appreciated.'
llm.invoke("How are you?", stop=["."])
'Good'

轉換輸入和輸出

有時您可能想要封裝具有不相容模型簽章的服務端點,或者您想要插入額外的組態。您可以使用 transform_input_fntransform_output_fn 引數來定義額外的預處理/後處理。

# Use `transform_input_fn` and `transform_output_fn` if the serving endpoint
# expects a different input schema and does not return a JSON string,
# respectively, or you want to apply a prompt template on top.


def transform_input(**request):
full_prompt = f"""{request["prompt"]}
Be Concise.
"""
request["prompt"] = full_prompt
return request


def transform_output(response):
return response.upper()


llm = Databricks(
endpoint_name="YOUR_ENDPOINT_NAME",
transform_input_fn=transform_input,
transform_output_fn=transform_output,
)

llm.invoke("How are you?")
'I AM DOING GREAT THANK YOU.'

此頁面是否對您有幫助?