Freigeben über


Integrieren von Anthropic in Databricks Unity Catalog-Tools

Verwenden Sie Databricks Unity Catalog, um SQL- und Python-Funktionen als Tools in Anthropic SDK LLM-Aufrufen zu integrieren. Diese Integration kombiniert die Governance von Unity Catalog mit anthropischen Modellen, um leistungsstarke KI-Apps für die Generation zu erstellen.

Anforderungen

  • Verwenden Sie Databricks Runtime 15.0 und höher.

Integrieren von Unity Catalog-Tools in Anthropic

Führen Sie den folgenden Code in einem Notebook oder Python-Skript aus, um ein Unity Catalog-Tool zu erstellen und es beim Aufrufen eines Anthropic-Modells zu verwenden.

  1. Installieren Sie das Databricks Unity Catalog-Integrationspaket für Anthropic.

    %pip install unitycatalog-anthropic[databricks]
    dbutils.library.restartPython()
    
  2. Erstellen Sie eine Instanz des Unity Catalog-Funktionsclients.

    from unitycatalog.ai.core.base import get_uc_function_client
    
    client = get_uc_function_client()
    
  3. Erstellen Sie eine Unity Catalog-Funktion, die in Python geschrieben wurde.

    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. Erstellen Sie eine Instanz der Unity Catalog-Funktion als Toolkit.

    from unitycatalog.ai.anthropic.toolkit import UCFunctionToolkit
    
    # Create an instance of the toolkit
    toolkit = UCFunctionToolkit(function_names=[func_name], client=client)
    
  5. Verwenden Sie einen Werkzeugaufruf 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. Erstellen Sie eine Tool-Antwort. Die Antwort des Claude-Modells enthält einen Metadatenblock für die Werkzeuganforderung, wenn ein Werkzeug aufgerufen werden muss.

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)

Das unitycatalog.ai-anthropic Paket enthält ein Nachrichtenhandler-Hilfsprogramm, um das Analysieren und Verarbeiten eines Aufrufs der Unity Catalog-Funktion zu vereinfachen. Das Dienstprogramm führt folgende Schritte aus:

  1. Erkennt die Anforderungen an Tool-Aufrufe.
  2. Extrahiert Informationen zum Werkzeugaufruf aus der Abfrage.
  3. Führt den Aufruf der Unity Catalog-Funktion aus.
  4. Analysiert die Antwort aus der Unity Catalog-Funktion.
  5. Erstellen Sie das nächste Nachrichtenformat, um das Gespräch mit Claude fortzusetzen.

Hinweis

Der gesamte Konversationsverlauf muss im conversation_history Argument für die generate_tool_call_messages API bereitgestellt werden. Claude-Modelle erfordern die Initialisierung der Konversation (der ursprünglichen Benutzereingabefrage) und aller nachfolgenden LLM-generierten Antworten und Ergebnisse von Werkzeugaufrufen mit mehreren Durchläufen.