共用方式為


建立 AI 代理程式

重要

這項功能處於公開預覽狀態

本文說明如何使用馬賽克 AI 代理程式架構建立工具呼叫 AI 代理程式

瞭解如何提供代理程式工具,並開始與他們聊天,以測試代理程式並建立代理程式的原型。 完成代理程式的原型設計之後,請匯出 Python 程式代碼,以定義代理程式來反覆運算並部署您的 AI 代理程式。

需求

建立 AI 代理程式工具

第一個步驟是建立工具,以提供給您的代理程式。 代理程式會使用工具來執行語言產生以外的動作,例如擷取結構化或非結構化數據、執行程式碼或與遠端服務交談(例如傳送電子郵件或 Slack 訊息)。

針對本指南,您可以使用內建的 Unity Catalog 函式,system.ai.python_exec,讓您的代理程式能夠執行任意 Python 程式代碼。

若要深入瞭解如何建立自己的代理程式工具,請參閱 建立 AI 代理程式工具

AI 遊樂場中的原型工具呼叫代理程式

現在您已擁有工具,請使用 AI 遊樂場,將工具提供給代理程式,並與其互動以驗證和測試行為。 AI 遊樂場提供沙箱以建立工具呼叫代理程式的原型。

注意

Unity Catalog,以及 無伺服器計算Mosaic AI 代理架構,以及 按使用次數付費的基礎模型外部模型 必須在目前的工作區中可用,以便在 AI 遊樂場中對代理進行原型設計。

建立工具呼叫端點的原型。

  1. 從遊樂場中,選取已啟用 工具 標籤的模型。

    選取呼叫工具的 LLM

  2. 選取 工具,然後在下拉式清單中指定您的 Unity Catalog 功能名稱:

    選取工具

  3. 聊天以測試 LLM、工具和系統提示的目前組合,並嘗試各種變化。

    建立 LLM 原型

匯出與部署 AI 遊樂場代理程式

在 AI 遊樂場中建立 AI 代理程式的原型和精簡之後,您可以將它匯出至 Python 筆記本,以進行進一步的開發,或將其直接部署為模型服務端點

  1. 點擊 匯出,以生成有助於您開發和部署 AI 代理的 Python 筆記本。

    匯出代理程式程式碼之後,您會看到儲存至工作區的三個檔案:

    • agent 筆記本:包含使用 LangChain 定義代理程式的 Python 程式碼。
    • driver 筆記本:包含 Python 程式碼,可使用 Mosaic AI 代理程式架構來記錄、追蹤、註冊及部署 AI 代理程式。
    • config.yml:包含代理程式的組態資訊,包括工具定義。
  2. 開啟 agent Notebook 以檢視定義代理程式的 LangChain 程式代碼,使用此筆記本以程式設計方式測試並反覆執行代理程式,例如定義更多工具或調整 代理程式的參數

    注意

    匯出的程式碼可能會有不同於 AI 遊樂場工作階段的行為。 Databricks 建議您執行匯出的筆記本,以進一步逐一查看和偵錯、評估代理程式品質,然後部署代理程式以與他人共用。

  3. 一旦您滿意代理程式的輸出,可以執行 driver 筆記本來記錄代理程式,並將代理程式部署至模型服務端點。

在程式碼中定義代理程式

除了從 AI 遊樂場產生代理程式代碼之外,您也可以使用 LangChain 或 Python 程式代碼等架構自行在程式碼中定義代理程式。 若要使用代理程式架構部署代理程式,其輸入必須符合其中支援的輸入和輸出格式之一。

使用參數來設定代理程式

在 Agent Framework 中,您可以使用參數來控制代理程式的執行方式。 這可讓您透過變更代理程式的不同特性來快速迭代,而無需更改程式碼。 參數是您在 Python 字典或 .yaml 檔案中定義的索引鍵/值組。

若要設定程式代碼,請建立 ModelConfig,這是一組鍵值參數。 ModelConfig 是 Python 字典或 .yaml 檔案。 例如,您可以在開發期間使用字典,然後將其轉換成生產部署及 CI/CD 的 .yaml 檔案。 如需 ModelConfig 的詳細資訊,請參閱 MLflow 文件

範例 ModelConfig 如下所示。

llm_parameters:
  max_tokens: 500
  temperature: 0.01
model_serving_endpoint: databricks-dbrx-instruct
vector_search_index: ml.docs.databricks_docs_index
prompt_template: 'You are a hello world bot. Respond with a reply to the user''s
  question that indicates your prompt template came from a YAML file. Your response
  must use the word "YAML" somewhere. User''s question: {question}'
prompt_template_input_vars:
- question

若要從程式碼呼叫組態,請使用下列其中一項:

# Example for loading from a .yml file
config_file = "configs/hello_world_config.yml"
model_config = mlflow.models.ModelConfig(development_config=config_file)

# Example of using a dictionary
config_dict = {
    "prompt_template": "You are a hello world bot. Respond with a reply to the user's question that is fun and interesting to the user. User's question: {question}",
    "prompt_template_input_vars": ["question"],
    "model_serving_endpoint": "databricks-dbrx-instruct",
    "llm_parameters": {"temperature": 0.01, "max_tokens": 500},
}

model_config = mlflow.models.ModelConfig(development_config=config_dict)

# Use model_config.get() to retrieve a parameter value
value = model_config.get('sample_param')

設定擷取器架構

AI 代理程式通常會使用擷取器,這是使用向量搜尋索引尋找並傳回相關文件的代理程式工具類型。 如需擷取器的詳細資訊,請參閱 非結構化擷取 AI 代理程式工具。

若要確保擷取程式正確追蹤,請在程式代碼中定義代理程式時呼叫 mlflow.models.set_retriever_schema 。 使用 set_retriever_schema,將傳回資料表中的資料行名稱對應至 MLflow 的預期欄位,例如 primary_keytext_columndoc_uri

# Define the retriever's schema by providing your column names
# These strings should be read from a config dictionary
mlflow.models.set_retriever_schema(
    name="vector_search",
    primary_key="chunk_id",
    text_column="text_column",
    doc_uri="doc_uri"
    # other_columns=["column1", "column2"],
)

注意

評估擷取程式效能時,doc_uri 數據行特別重要。 doc_uri 是擷取器所傳回檔的主要標識碼,可讓您將它們與地面真相評估集進行比較。 請參閱 評估集

您也可以在擷取器的架構中指定其他數據行,方法是提供具有 [other_columns] 字段的數據行名稱清單。

如果您有多個擷取器,您可以使用每個擷取器架構的唯一名稱來定義多個架構。

支援的輸入和輸出格式

Agent Framework 會使用 MLflow 模型簽章來定義代理程式的輸入和輸出架構。 馬賽克 AI 代理程式架構功能需要一組最少的輸入/輸出欄位,才能與檢閱應用程式和 AI 遊樂場等功能互動。 如需詳細資訊,請參閱 定義代理程式的輸入和輸出架構

範例筆記本

這些筆記本會建立簡單的「Hello, world」鏈,說明如何在 Databricks 建立鏈應用程式。 第一個範例建立簡單的鏈。 第二個範例筆記本說明如何使用參數,將程式代碼變更降到最低。

簡單鏈筆記本

取得筆記本

簡單鏈驅動程式筆記本

取得筆記本

參數化鏈筆記本

取得筆記本

參數化鏈驅動程式筆記本

取得筆記本

下一步