Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Użyj katalogu Unity Databricks, aby zintegrować funkcje SQL i Python jako narzędzia w przepływach pracy LangChain i LangGraph. Ta integracja łączy zarządzanie katalogiem unity z funkcjami LangChain w celu tworzenia zaawansowanych aplikacji opartych na usłudze LLM.
Wymagania
- Zainstaluj środowisko Python w wersji 3.10 lub nowszej.
Integracja LangChain z Databricks Unity Catalog
W tym przykładzie utworzysz narzędzie Katalogu Unity, przetestujesz jego funkcjonalność i dodasz je do agenta. Uruchom następujący kod w notatniku usługi Databricks.
Instalowanie zależności
Zainstaluj pakiety AI katalogu Unity, opcjonalnie z pakietami Databricks, a następnie zainstaluj pakiet integracyjny LangChain.
W tym przykładzie użyto języka LangChain, ale podobne podejście można zastosować do innych bibliotek. Zobacz narzędzia Unity Catalog z ramami generatywnej sztucznej inteligencji innych firm.
# 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()
Zainicjuj klienta funkcji Databricks
Zainicjuj klienta funkcji Databricks.
from unitycatalog.ai.core.base import get_uc_function_client
client = get_uc_function_client()
Definiowanie logiki narzędzia
Utwórz funkcję w katalogu Unity zawierającą logikę narzędzia.
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
)
Testowanie funkcji
Przetestuj funkcję, aby sprawdzić, czy działa zgodnie z oczekiwaniami:
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'
Owiń funkcję za pomocą zestawu UCFunctionToolKit
Opakuj funkcję przy użyciu elementu UCFunctionToolkit, aby była dostępna dla bibliotek tworzenia agentów. Zestaw narzędzi zapewnia spójność w różnych bibliotekach, dodając przydatne funkcje, takie jak automatyczne śledzenie dla retrieverów.
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
Korzystanie z narzędzia w agencie
Dodaj narzędzie do agenta LangChain przy użyciu właściwości tools z UCFunctionToolkit.
Ten przykład tworzy prostego agenta korzystającego z interfejsu API LangChain dla uproszczenia. W przypadku obciążeń produkcyjnych użyj przepływu pracy tworzenia agenta, jak pokazano w ResponsesAgent przykładach.
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?"})