我从 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()
我重新创建了服务端点,但出现了相同的身份验证错误。