调试 Databricks 服务端点身份验证错误

问题描述 投票:0回答:1

我从 UC 注册模型创建了一个服务端点。当我使用正确的授权令牌查询它时。我得到以下信息。

{
    "error_code": "BAD_REQUEST",
    "message": "1 tasks failed. Errors: {0: 'error: MlflowException(\"Reading databricks credential configuration failed with MLflow tracking URI \\'databricks\\', Please ensure that you installed \\'databricks-sdk\\' library, set correct tracking URI and set up databricks authentication configuration correctly. The available tracking URI can be either \\'databricks\\' (using \\'DEFAULT\\' authentication profile) or \\'databricks://{profile}\\'. To set up databricks authentication configuration, you can set environmental variables DATABRICKS_HOST + DATABRICKS_TOKEN, or set environmental variables DATABRICKS_HOST + DATABRICKS_CLIENT_ID + DATABRICKS_CLIENT_SECRET, or you can edit \\'~/.databrickscfg\\' file to set host + token or host + client_id + client_secret for specific profile section, or you can log in by command \\'databricks auth login\\' which configures an authentication profile in \\'~/.databrickscfg\\' with auth_type of \\'databricks-cli\\'.\\\\nFor details of these authentication types, please refer to document \\'https://docs.databricks.com/en/dev-tools/auth/index.html#unified-auth\\'.\") Traceback (most recent call last):\\n  File \"/opt/conda/envs/mlflow-env/lib/python3.11/site-packages/mlflow/langchain/api_request_parallel_processor.py\", line 201, in call_api\\n    response = self.single_call_api(callback_handlers)\\n               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\\n  File \"/opt/conda/envs/mlflow-env/lib/python3.11/site-packages/mlflow/langchain/api_request_parallel_processor.py\", line 180, in single_call_api\\n    response = self._predict_single_input(self.request_json, callback_handlers, **kwargs)\\n               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\\n  File \"/opt/conda/envs/mlflow-env/lib/python3.11/site-packages/mlflow/langchain/api_request_parallel_processor.py\", line 116, in _predict_single_input\\n    return self.lc_model.invoke(single_input, config=config, **kwargs)\\n           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\\n  File \"/opt/conda/envs/mlflow-env/lib/python3.11/site-packages/langchain/chains/base.py\", line 162, in invoke\\n    raise e\\n  File \"/opt/conda/envs/mlflow-env/lib/python3.11/site-packages/langchain/chains/base.py\", line 156, in invoke\\n    self._call(inputs, run_manager=run_manager)\\n  File \"/opt/conda/envs/mlflow-env/lib/python3.11/site-packages/langchain/chains/retrieval_qa/base.py\", line 144, in _call\\n    answer = self.combine_documents_chain.run(\\n             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\\n  File \"/opt/conda/envs/mlflow-env/lib/python3.11/site-packages/langchain_core/_api/deprecation.py\", line 145, in warning_emitting_wrapper\\n    return wrapped(*args, **kwargs)\\n           ^^^^^^^^^^^^^^^^^^^^^^^^\\n  File \"/opt/conda/envs/mlflow-env/lib/python3.11/site-packages/langchain/chains/base.py\", line 543, in run\\n    return self(kwargs, callbacks=callbacks, tags=tags, metadata=metadata)[\\n           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\\n  File \"/opt/conda/envs/mlflow-env/lib/python3.11/site-packages/langchain_core/_api/deprecation.py\", line 145, in warning_emitting_wrapper\\n    return wrapped(*args, **kwargs)\\n           ^^^^^^^^^^^^^^^^^^^^^^^^\\n  File \"/opt/conda/envs/mlflow-env/lib/python3.11/site-packages/langchain/chains/base.py\", line 363, in __call__\\n    return self.invoke(\\n           ^^^^^^^^^^^^\\n  File \"/opt/conda/envs/mlflow-env/lib/python3.11/site-packages/langchain/chains/base.py\", line 162, in invoke\\n    raise e\\n  File \"/opt/conda/envs/mlflow-env/lib/python3.11/site-packages/langchain/chains/base.py\", line 156, in invoke\\n    self._call(inputs, run_manager=run_manager)\\n  File \"/opt/conda/envs/mlflow-env/lib/python3.11/site-packages/langchain/chains/combine_documents/base.py\", line 136, in _call\\n    output, extra_return_dict = self.combine_docs(\\n                                ^^^^^^^^^^^^^^^^^^\\n  File \"/opt/conda/envs/mlflow-env/lib/python3.11/site-packages/langchain/chains/combine_documents/stuff.py\", line 244, in combine_docs\\n    return self.llm_chain.predict(callbacks=callbacks, **inputs), {}\\n           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\\n  File \"/opt/conda/envs/mlflow-env/lib/python3.11/site-packages/langchain/chains/llm.py\", line 293, in predict\\n    return self(kwargs, callbacks=callbacks)[self.output_key]\\n           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\\n  File \"/opt/conda/envs/mlflow-env/lib/python3.11/site-packages/langchain_core/_api/deprecation.py\", line 145, in warning_emitting_wrapper\\n    return wrapped(*args, **kwargs)\\n           ^^^^^^^^^^^^^^^^^^^^^^^^\\n  File \"/opt/conda/envs/mlflow-env/lib/python3.11/site-packages/langchain/chains/base.py\", line 363, in __call__\\n    return self.invoke(\\n           ^^^^^^^^^^^^\\n  File \"/opt/conda/envs/mlflow-env/lib/python3.11/site-packages/langchain/chains/base.py\", line 162, in invoke\\n    raise e\\n  File \"/opt/conda/envs/mlflow-env/lib/python3.11/site-packages/langchain/chains/base.py\", line 156, in invoke\\n    self._call(inputs, run_manager=run_manager)\\n  File \"/opt/conda/envs/mlflow-env/lib/python3.11/site-packages/langchain/chains/llm.py\", line 103, in _call\\n    response = self.generate([inputs], run_manager=run_manager)\\n               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\\n  File \"/opt/conda/envs/mlflow-env/lib/python3.11/site-packages/langchain/chains/llm.py\", line 115, in generate\\n    return self.llm.generate_prompt(\\n           ^^^^^^^^^^^^^^^^^^^^^^^^^\\n  File \"/opt/conda/envs/mlflow-env/lib/python3.11/site-packages/langchain_core/language_models/chat_models.py\", line 544, in generate_prompt\\n    return self.generate(prompt_messages, stop=stop, callbacks=callbacks, **kwargs)\\n           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\\n  File \"/opt/conda/envs/mlflow-env/lib/python3.11/site-packages/langchain_core/language_models/chat_models.py\", line 408, in generate\\n    raise e\\n  File \"/opt/conda/envs/mlflow-env/lib/python3.11/site-packages/langchain_core/language_models/chat_models.py\", line 398, in generate\\n    self._generate_with_cache(\\n  File \"/opt/conda/envs/mlflow-env/lib/python3.11/site-packages/langchain_core/language_models/chat_models.py\", line 577, in _generate_with_cache\\n    return self._generate(\\n           ^^^^^^^^^^^^^^^\\n  File \"/opt/conda/envs/mlflow-env/lib/python3.11/site-packages/langchain_community/chat_models/mlflow.py\", line 122, in _generate\\n    resp = self._client.predict(endpoint=self.endpoint, inputs=data)\\n           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\\n  File \"/opt/conda/envs/mlflow-env/lib/python3.11/site-packages/mlflow/deployments/databricks/__init__.py\", line 238, in predict\\n    return self._call_endpoint(\\n           ^^^^^^^^^^^^^^^^^^^^\\n  File \"/opt/conda/envs/mlflow-env/lib/python3.11/site-packages/mlflow/deployments/databricks/__init__.py\", line 138, in _call_endpoint\\n    host_creds=get_databricks_host_creds(self.target_uri),\\n               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\\n  File \"/opt/conda/envs/mlflow-env/lib/python3.11/site-packages/mlflow/utils/databricks_utils.py\", line 653, in get_databricks_host_creds\\n    config = _get_databricks_creds_config(server_uri)\\n             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\\n  File \"/opt/conda/envs/mlflow-env/lib/python3.11/site-packages/mlflow/utils/databricks_utils.py\", line 942, in _get_databricks_creds_config\\n    _fail_malformed_databricks_auth(tracking_uri)\\n  File \"/opt/conda/envs/mlflow-env/lib/python3.11/site-packages/mlflow/utils/databricks_utils.py\", line 512, in _fail_malformed_databricks_auth\\n    raise MlflowException(\\nmlflow.exceptions.MlflowException: Reading databricks credential configuration failed with MLflow tracking URI \\'databricks\\', Please ensure that you installed \\'databricks-sdk\\' library, set correct tracking URI and set up databricks authentication configuration correctly. The available tracking URI can be either \\'databricks\\' (using \\'DEFAULT\\' authentication profile) or \\'databricks://{profile}\\'. To set up databricks authentication configuration, you can set environmental variables DATABRICKS_HOST + DATABRICKS_TOKEN, or set environmental variables DATABRICKS_HOST + DATABRICKS_CLIENT_ID + DATABRICKS_CLIENT_SECRET, or you can edit \\'~/.databrickscfg\\' file to set host + token or host + client_id + client_secret for specific profile section, or you can log in by command \\'databricks auth login\\' which configures an authentication profile in \\'~/.databrickscfg\\' with auth_type of \\'databricks-cli\\'.\\nFor details of these authentication types, please refer to document \\'https://docs.databricks.com/en/dev-tools/auth/index.html#unified-auth\\'.\\n\\n request payload:

我认为调用端点时不需要设置 DATABRICKS 环境变量。根据阅读错误,看来注册表 uc 不正确?

我使用以下registry_uc代码创建了模型。

from mlflow.models import infer_signature
import mlflow
import langchain

mlflow.set_registry_uri("databricks-uc")
model_name = full_table_name
answer = chain.run(question)

with mlflow.start_run(run_name="chatbot_run") as run:
    signature = infer_signature(question, answer)
    model_info = mlflow.langchain.log_model(
        chain,
        loader_fn=get_retriever,
        artifact_path="chain",
        registered_model_name=model_name,
        pip_requirements=[
            "mlflow==" + mlflow.__version__,
            "langchain==" + langchain.__version__,
            "databricks-vectorsearch",
        ],
        input_example=question,
        signature=signature
    )

我只是觉得也许

loader_fn=get_retriever
应该是
loader_fn=get_retriever()

我重新创建了服务端点,但出现了相同的身份验证错误。

databricks mlflow
1个回答
0
投票

enter image description here 需要添加环境变量才能访问。

© www.soinside.com 2019 - 2024. All rights reserved.