Delen via


Lantropic integreren met Databricks Unity Catalog-hulpprogramma's

Gebruik Databricks Unity Catalog om SQL- en Python-functies te integreren als hulpprogramma's in LLM-aanroepen van de Antropic SDK. Deze integratie combineert het beheer van Unity Catalog met antropische modellen om krachtige GEN AI-apps te maken.

Behoeften

  • Gebruik Databricks Runtime 15.0 en hoger.

Unity Catalog-hulpprogramma's integreren met Antropic

Voer de volgende code uit in een notebook of Python-script om een Unity Catalog-hulpprogramma te maken en deze te gebruiken bij het aanroepen van een Antropisch model.

  1. Installeer het Databricks Unity Catalog-integratiepakket voor Antropic.

    %pip install unitycatalog-anthropic[databricks]
    dbutils.library.restartPython()
    
  2. Maak een exemplaar van de Unity Catalog-functieclient.

    from unitycatalog.ai.core.base import get_uc_function_client
    
    client = get_uc_function_client()
    
  3. Maak een Unity Catalog-functie die is geschreven in 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. Maak een exemplaar van de Unity Catalog-functie als een toolkit.

    from unitycatalog.ai.anthropic.toolkit import UCFunctionToolkit
    
    # Create an instance of the toolkit
    toolkit = UCFunctionToolkit(function_names=[func_name], client=client)
    
  5. Gebruik een hulpmiddel-aanroep in 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. Een reactie op een hulpprogramma maken. Het antwoord van het Claude-model bevat een metagegevensblok voor hulpprogrammaaanvragen als een hulpprogramma moet worden aangeroepen.

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)

Het unitycatalog.ai-anthropic pakket bevat een hulpprogramma voor de berichthandler om het parseren en verwerken van een aanroep naar de Unity Catalog-functie te vereenvoudigen. Het hulpprogramma doet het volgende:

  1. Detecteert de vereisten voor het aanroepen van hulpprogramma's.
  2. Extraheert informatie over het aanroepen van een tool uit de query.
  3. Voert de aanroep uit naar de Unity Catalog-functie.
  4. Parseert het antwoord van de functie Unity Catalog.
  5. Maak de volgende berichtindeling om het gesprek met Claude voort te zetten.

Opmerking

De volledige gespreksgeschiedenis moet worden opgegeven in het conversation_history argument voor de generate_tool_call_messages API. Claude-modellen vereisen de initialisatie van het gesprek (de oorspronkelijke gebruikersinvoervraag) en alle daaropvolgende antwoorden gegenereerd door LLM, evenals de resultaten van meervoudige interacties met hulpmiddelen.