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_HOST
和 DATABRICKS_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
)
安裝
LangChain Databricks 整合位於 langchain-community
套件中。此外,執行此筆記本中的程式碼需要 mlflow >= 2.9
。
%pip install -qU langchain-community mlflow>=2.9.0
封裝模型服務端點
先決條件:
- LLM 已註冊並部署到 Databricks 服務端點。
- 您需要擁有端點的 「可查詢」權限。
預期的 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?")
'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_fn
和 transform_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.'