Partilhar via


Integre o Anthropic com as ferramentas do Databricks Unity Catalog

Use o Databricks Unity Catalog para integrar funções SQL e Python como ferramentas em chamadas LLM do Anthropic SDK. Essa integração combina a governança do Unity Catalog com modelos antrópicos para criar aplicativos poderosos de IA de geração.

Requerimentos

  • Use Databricks Runtime 15.0 ou superior.

Integre as ferramentas do Unity Catalog com o Anthropic

Execute o código a seguir em um bloco de anotações ou script Python para criar uma ferramenta Unity Catalog e usá-la ao chamar um modelo antrópico.

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

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

    from unitycatalog.ai.core.base import get_uc_function_client
    
    client = get_uc_function_client()
    
  3. Crie uma função Unity Catalog escrita em Python.

    CATALOG = "your_catalog"
    SCHEMA = "your_schema"
    
    func_name = f"{CATALOG}.{SCHEMA}.weather_function"
    
    def weather_function(location: str) -> str:
      """
      Fetches the current weather from a given location in degrees Celsius.
    
      Args:
        location (str): The location to fetch the current weather from.
      Returns:
        str: The current temperature for the location provided in Celsius.
      """
      return f"The current temperature for {location} is 24.5 celsius"
    
    client.create_python_function(
      func=weather_function,
      catalog=CATALOG,
      schema=SCHEMA,
      replace=True
    )
    
  4. Crie uma instância da função Unity Catalog como um kit de ferramentas.

    from unitycatalog.ai.anthropic.toolkit import UCFunctionToolkit
    
    # Create an instance of the toolkit
    toolkit = UCFunctionToolkit(function_names=[func_name], client=client)
    
  5. Use uma chamada de ferramenta em Anthropic.

    import anthropic
    
    # Initialize the Anthropic client with your API key
    anthropic_client = anthropic.Anthropic(api_key="YOUR_ANTHROPIC_API_KEY")
    
    # User's question
    question = [{"role": "user", "content": "What's the weather in New York City?"}]
    
    # Make the initial call to Anthropic
    response = anthropic_client.messages.create(
      model="claude-3-5-sonnet-20240620",  # Specify the model
      max_tokens=1024,  # Use 'max_tokens' instead of 'max_tokens_to_sample'
      tools=toolkit.tools,
      messages=question  # Provide the conversation history
    )
    
    # Print the response content
    print(response)
    
  6. Construa uma resposta de ferramenta. A resposta do modelo Claude contém um bloco de metadados de solicitação de ferramenta se uma ferramenta precisar ser chamada.

from unitycatalog.ai.anthropic.utils import generate_tool_call_messages

# Call the UC function and construct the required formatted response
tool_messages = generate_tool_call_messages(
  response=response,
  client=client,
  conversation_history=question
)

# Continue the conversation with Anthropic
tool_response = anthropic_client.messages.create(
  model="claude-3-5-sonnet-20240620",
  max_tokens=1024,
  tools=toolkit.tools,
  messages=tool_messages,
)

print(tool_response)

O unitycatalog.ai-anthropic pacote inclui um utilitário manipulador de mensagens para simplificar a análise e o tratamento de uma chamada para a função Unity Catalog. O utilitário faz o seguinte:

  1. Deteta os requisitos de chamada da ferramenta.
  2. Extrai informações sobre a chamada da ferramenta a partir da consulta.
  3. Executa a chamada para a função Unity Catalog.
  4. Analisa a resposta da função Unity Catalog.
  5. Crie o próximo formato de mensagem para continuar a conversa com Claude.

Observação

Todo o histórico da conversa deve ser fornecido no conversation_history argumento para a generate_tool_call_messages API. Os modelos Claude exigem a inicialização da conversa (a pergunta de entrada original do usuário) e todas as respostas subsequentes geradas pelo LLM e os resultados de chamadas de ferramentas consecutivas.