Partager via


Intégrer LlamaIndex aux outils de catalogue Databricks Unity

Utilisez databricks Unity Catalog pour intégrer des fonctions SQL et Python en tant qu’outils dans les flux de travail LlamaIndex. Cette intégration combine la gouvernance de Unity Catalog avec les fonctionnalités de LlamaIndex pour indexer et interroger des jeux de données volumineux dans les LLM.

Spécifications

  • Installez Python 3.10 ou version ultérieure.

Intégrer des outils de catalogue Unity à LlamaIndex

Exécutez le code suivant dans un notebook ou un script Python pour créer un outil de catalogue Unity et l’utiliser dans un agent LlamaIndex.

  1. Installez le package d’intégration databricks Unity Catalog pour LlamaIndex.

    %pip install unitycatalog-llamaindex[databricks]
    dbutils.library.restartPython()
    
  2. Créez une instance du client de fonctions de catalogue Unity.

    from unitycatalog.ai.core.base import get_uc_function_client
    
    client = get_uc_function_client()
    
  3. Créez une fonction de catalogue Unity écrite en 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. Créez une instance de la fonction catalogueUnity en tant que kit de ressources et exécutez-la pour vérifier que l’outil se comporte correctement.

    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. Utilisez l’outil dans un LlamaIndex ReActAgent en définissant la fonction Catalogue Unity dans le cadre d’une collection d’outils LlamaIndex. Vérifiez ensuite que l’agent se comporte correctement en appelant la collection d’outils 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)`")