Pular para o conteúdo principal

Integrar ferramentas do Unity Catalog com estruturas de AI generativas de terceiros

As ferramentas de agente de IA do Unity Catalog podem ser usadas em bibliotecas populares de IA generativa como LangChain, LlamaIndex, OpenAI e Anthropic. Essas integrações combinam a governança de ferramentas do Unity Catalog com os recursos de estruturas de autoria de agentes de terceiros. Por exemplo:

  • Na LangChain, as funções do Unity Catalog podem fazer parte do fluxo de trabalho de um agente para executar tarefas como consultar ou transformar dados.
  • Em integrações OpenAI ou Anthropic, as funções são chamadas diretamente pelo modelo de IA durante a execução.

Selecione seu framework nas abas a seguir para criar uma ferramenta do Unity Catalog e usá-la com esse framework. Execute o código em um Notebook Databricks ou script Python.

Requisitos

  • Instale o Python 3.10 ou acima.

Utilize o Databricks Unity Catalog para integrar funções SQL e Python como ferramentas em fluxos de trabalho LangChain e LangGraph. Esta integração combina a governança do Unity Catalog com recursos de LangChain para construir aplicativos poderosos baseados em LLM.

Neste exemplo, o senhor cria uma ferramenta do Unity Catalog, testa sua funcionalidade e a adiciona a um agente.

Instalar dependências

Instale os pacotes de AI do Unity Catalog com o Databricks opcional e instale o pacote de integração LangChain.

Python
# Install the Unity Catalog AI integration package with the Databricks extra
%pip install unitycatalog-langchain[databricks]

# Install Databricks Langchain integration package
%pip install databricks-langchain
dbutils.library.restartPython()

Inicialize o Cliente de Funções do Databricks

Inicialize o Cliente de Função do Databricks.

Python
from unitycatalog.ai.core.base import get_uc_function_client

client = get_uc_function_client()

Defina a lógica da ferramenta

Crie uma função do Unity Catalog que contenha a lógica da ferramenta.

Python

CATALOG = "my_catalog"
SCHEMA = "my_schema"

def add_numbers(number_1: float, number_2: float) -> float:
"""
A function that accepts two floating point numbers adds them,
and returns the resulting sum as a float.

Args:
number_1 (float): The first of the two numbers to add.
number_2 (float): The second of the two numbers to add.

Returns:
float: The sum of the two input numbers.
"""
return number_1 + number_2

function_info = client.create_python_function(
func=add_numbers,
catalog=CATALOG,
schema=SCHEMA,
replace=True
)

Testar a função

Teste sua função para verificar se ela funciona conforme o esperado:

Python
result = client.execute_function(
function_name=f"{CATALOG}.{SCHEMA}.add_numbers",
parameters={"number_1": 36939.0, "number_2": 8922.4}
)

result.value # OUTPUT: '45861.4'

Envolva a função usando o UCFunctionToolKit

Encapsule a função usando UCFunctionToolkit para torná-la acessível às bibliotecas de autoria de agente. O kit de ferramentas garante a consistência entre diferentes bibliotecas e adiciona recursos úteis como rastreamento automático para recuperadores.

Python
from databricks_langchain import UCFunctionToolkit

# Create a toolkit with the Unity Catalog function
func_name = f"{CATALOG}.{SCHEMA}.add_numbers"
toolkit = UCFunctionToolkit(function_names=[func_name])

tools = toolkit.tools

Use a ferramenta em um agente

Adicione a ferramenta a um agente LangChain usando a propriedade tools de UCFunctionToolkit.

Este exemplo cria um agente simples usando a API AgentExecutor da LangChain para simplificar. Para cargas de trabalho de produção, utilize o fluxo de trabalho de criação de agente visto em Criar um agente de AI e implantá-lo em Databricks Apps.

Python
from langchain.agents import AgentExecutor, create_tool_calling_agent
from langchain.prompts import ChatPromptTemplate
from databricks_langchain import (
ChatDatabricks,
UCFunctionToolkit,
)
import mlflow

# Initialize the LLM (replace with your LLM of choice, if desired)
LLM_ENDPOINT_NAME = "databricks-meta-llama-3-3-70b-instruct"
llm = ChatDatabricks(endpoint=LLM_ENDPOINT_NAME, temperature=0.1)

# Define the prompt
prompt = ChatPromptTemplate.from_messages(
[
(
"system",
"You are a helpful assistant. Make sure to use tools for additional functionality.",
),
("placeholder", "{chat_history}"),
("human", "{input}"),
("placeholder", "{agent_scratchpad}"),
]
)

# Enable automatic tracing
mlflow.langchain.autolog()

# Define the agent, specifying the tools from the toolkit above
agent = create_tool_calling_agent(llm, tools, prompt)

# Create the agent executor
agent_executor = AgentExecutor(agent=agent, tools=tools, verbose=True)
agent_executor.invoke({"input": "What is 36939.0 + 8922.4?"})