共用方式為


建立 AI 代理程式

重要

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

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

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

需求

建立 AI 代理程式工具

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

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

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

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

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

注意

Unity Catalog無伺服器計算馬賽克 AI 代理程式框架,以及 按令牌支付的基礎模型外部模型 必須在目前的工作區中可用,才能在 AI 試驗場中建立代理程式原型。

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

  1. 從 Playground,select 模型帶有已啟用 工具的 標籤。

    Select 用於呼叫工具的 LLM

  2. Select [工具],並在下拉式清單中指定 Unity Catalog 函式名稱:

    Select 工具

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

    建立 LLM 原型

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

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

  1. 單擊 [導出],將其導出為 generate Python 筆記本,協助您開發和部署 AI 代理程式。

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

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

    注意

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

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

在程式碼中定義代理程式

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

使用 parameters 來設定代理程式

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

若要設定程式代碼,請建立一個 ModelConfig,即為鍵值 parameters的 set。 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')

Set 擷取器 schema

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

若要確保擷取程式正確追蹤,請在程式代碼中定義代理程式時呼叫 mlflow.models.set_retriever_schema 。 使用 set_retriever_schema,將傳回 table 中的 column 名稱對應至 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_uricolumn 特別重要。 doc_uri 是擷取器所傳回檔的主要 identifier,可讓您將它們與地面真相評估集進行比較。 請參閱 評估集

您也可以在擷取器的 schema 中指定其他 columns,方法是提供 column 名稱清單,其中包括 other_columns 欄位的 list。

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

支援的輸入和輸出格式

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

範例筆記本

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

簡單鏈筆記本

Get 筆記本

簡單鏈驅動程式筆記本

Get 筆記本

參數化鏈筆記本

Get 筆記本

參數化鏈驅動程式筆記本

Get 筆記本

下一步