Pular para o conteúdo principal

Integrar o LlamaIndex com as ferramentas do Databricks Unity Catalog

Use Databricks Unity Catalog para integrar as funções SQL e Python como ferramentas no fluxo de trabalho do LlamaIndex. Essa integração combina a governança do Unity Catalog com os recursos do LlamaIndex para indexar e consultar grandes conjuntos de dados para LLMs.

Requisitos

  • Instale o Python 3.10 ou o acima.

Integrar as ferramentas do Unity Catalog com o LlamaIndex

Execute o código a seguir em um script do Notebook ou Python para criar uma ferramenta Unity Catalog e usá-la em um agente LlamaIndex.

  1. Instale o pacote de integração do Databricks Unity Catalog para o LlamaIndex.

    Python
    %pip install unitycatalog-llamaindex[databricks]
    dbutils.library.restartPython()
  2. Crie uma instância do cliente de funções do Unity Catalog.

    Python
    from unitycatalog.ai.core.base import get_uc_function_client

    client = get_uc_function_client()
  3. Crie uma função do Unity Catalog escrita em Python.

    Python
    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. Crie uma instância da funçãoUnity Catalog como um kit de ferramentas e execute-a para verificar se a ferramenta se comporta adequadamente.

    Python
    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. Use a ferramenta em um LlamaIndex ReActAgent definindo a função Unity Catalog como parte de uma coleção de ferramentas LlamaIndex. Em seguida, verifique se o agente se comporta corretamente chamando a coleção de ferramentas LlamaIndex.

    Python
    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)`")