次の方法で共有


LlamaIndex と Databricks Unity カタログ ツールの統合

Databricks Unity カタログを使用して、LlamaIndex ワークフローのツールとして SQL 関数と Python 関数を統合します。 この統合は、Unity カタログ ガバナンスと LlamaIndex の機能を組み合わせて、LLM の大規模なデータセットのインデックス作成とクエリを実行します。

要求事項

  • Python 3.10 以降をインストールします。

Unity カタログ ツールを LlamaIndex と統合する

ノートブックまたは Python スクリプトで次のコードを実行して、Unity カタログ ツールを作成し、LlamaIndex エージェントで使用します。

  1. LlamaIndex 用の Databricks Unity カタログ統合パッケージをインストールします。

    %pip install unitycatalog-llamaindex[databricks]
    dbutils.library.restartPython()
    
  2. Unity カタログ関数クライアントのインスタンスを作成します。

    from unitycatalog.ai.core.base import get_uc_function_client
    
    client = get_uc_function_client()
    
  3. Python で記述された Unity カタログ関数を作成します。

    CATALOG = "your_catalog"
    SCHEMA = "your_schema"
    
    func_name = f"{CATALOG}.{SCHEMA}.code_function"
    
    def code_function(code: str) -> str:
      """
      Runs Python code.
    
      Args:
        code (str): The Python code to run.
      Returns:
        str: The result of running the Python code.
      """
      import sys
      from io import StringIO
      stdout = StringIO()
      sys.stdout = stdout
      exec(code)
      return stdout.getvalue()
    
    client.create_python_function(
      func=code_function,
      catalog=CATALOG,
      schema=SCHEMA,
      replace=True
    )
    
  4. ツールキットとしてUnity Catalog 関数のインスタンスを作成し、それを実行して、ツールが正しく動作することを確認します。

    from unitycatalog.ai.llama_index.toolkit import UCFunctionToolkit
    import mlflow
    
    # Enable traces
    mlflow.llama_index.autolog()
    
    # Create a UCFunctionToolkit that includes the UC function
    toolkit = UCFunctionToolkit(function_names=[func_name])
    
    # Fetch the tools stored in the toolkit
    tools = toolkit.tools
    python_exec_tool = tools[0]
    
    # Run the tool directly
    result = python_exec_tool.call(code="print(1 + 1)")
    print(result)  # Outputs: {"format": "SCALAR", "value": "2\n"}
    
  5. LlamaIndex ツール コレクションの一部として Unity カタログ関数を定義して、LlamaIndex ReActAgent のツールを使用します。 次に、LlamaIndex ツール コレクションを呼び出して、エージェントが正しく動作することを確認します。

    from llama_index.llms.openai import OpenAI
    from llama_index.core.agent import ReActAgent
    
    llm = OpenAI()
    
    agent = ReActAgent.from_tools(tools, llm=llm, verbose=True)
    
    agent.chat("Please run the following python code: `print(1 + 1)`")