Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Alat agen AI Unity Catalog dapat digunakan di pustaka AI gen populer seperti LangChain, LlamaIndex, OpenAI, dan Anthropic. Integrasi ini menggabungkan tata kelola alat Katalog Unity dengan kemampuan kerangka kerja penulisan agen pihak ketiga. Contohnya:
- Di LangChain, fungsi Unity Catalog dapat menjadi bagian dari alur kerja agen untuk melakukan tugas seperti mengkueri atau mengubah data.
- Dalam integrasi OpenAI atau Antropis, fungsi dipanggil langsung oleh model AI selama eksekusi.
Pilih kerangka kerja Anda di tab berikut untuk membuat alat Katalog Unity dan menggunakannya dengan kerangka kerja tersebut. Jalankan kode dalam buku catatan Azure Databricks atau skrip Python.
Persyaratan
- Instal Python 3.10 atau lebih tinggi.
LangChain
Gunakan Azure Databricks Unity Catalog untuk mengintegrasikan fungsi SQL dan Python sebagai alat di alur kerja LangChain dan LangGraph. Integrasi ini menggabungkan tata kelola Unity Catalog dengan kemampuan LangChain untuk membangun aplikasi berbasis LLM yang kuat.
Dalam contoh ini, Anda membuat alat Unity Catalog, menguji fungsionalitasnya, dan menambahkannya ke agen.
Pasang dependensi
Instal paket AI Unity Catalog dengan Databricks opsional dan instal paket integrasi LangChain.
# 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()
Menginisialisasi Klien Fungsi Databricks
Mulai menginisialisasi Klien Fungsi Databricks.
from unitycatalog.ai.core.base import get_uc_function_client
client = get_uc_function_client()
Menentukan logika alat
Buat fungsi Unity Catalog yang berisi logika alat.
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
)
Uji fungsi
Uji fungsi Anda untuk memeriksanya berfungsi seperti yang diharapkan:
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'
Membungkus fungsi menggunakan UCFunctionToolKit
Bungkus fungsi menggunakan UCFunctionToolkit untuk membuatnya dapat diakses oleh perpustakaan untuk penulisan agen. Toolkit memastikan konsistensi di berbagai pustaka dan menambahkan fitur bermanfaat seperti pelacakan otomatis untuk retriever.
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
Menggunakan alat di dalam agen
Tambahkan alat ke agen LangChain dengan menggunakan properti tools dari UCFunctionToolkit.
Contoh ini menulis agen sederhana menggunakan API LangChain AgentExecutor untuk kesederhanaan. Untuk beban kerja produksi, gunakan alur kerja penulisan agen yang terlihat di Penulis agen AI dan sebarkan di Aplikasi Databricks.
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?"})
LlamaIndex
Gunakan Azure Databricks Unity Catalog untuk mengintegrasikan fungsi SQL dan Python sebagai alat dalam alur kerja LlamaIndex. Integrasi ini menggabungkan tata kelola Unity Catalog dengan kemampuan LlamaIndex untuk mengindeks dan mengkueri himpunan data besar untuk LLM.
Instal paket integrasi Databricks Unity Catalog untuk LlamaIndex.
%pip install unitycatalog-llamaindex[databricks] dbutils.library.restartPython()Buat instans klien fungsi Katalog Unity.
from unitycatalog.ai.core.base import get_uc_function_client client = get_uc_function_client()Buat fungsi Katalog Unity yang ditulis dalam Python.
CATALOG = "your_catalog" SCHEMA = "your_schema" func_name = f"{CATALOG}.{SCHEMA}.code_function" def code_function(code: str) -> str: """ Runs Python code. Args: code (str): The Python code to run. Returns: str: The result of running the Python code. """ import sys from io import StringIO stdout = StringIO() sys.stdout = stdout exec(code) return stdout.getvalue() client.create_python_function( func=code_function, catalog=CATALOG, schema=SCHEMA, replace=True )Buat instans fungsi Unity Catalog sebagai toolkit, dan jalankan untuk memverifikasi bahwa alat berperilaku dengan benar.
from unitycatalog.ai.llama_index.toolkit import UCFunctionToolkit import mlflow # Enable traces mlflow.llama_index.autolog() # Create a UCFunctionToolkit that includes the UC function toolkit = UCFunctionToolkit(function_names=[func_name]) # Fetch the tools stored in the toolkit tools = toolkit.tools python_exec_tool = tools[0] # Run the tool directly result = python_exec_tool.call(code="print(1 + 1)") print(result) # Outputs: {"format": "SCALAR", "value": "2\n"}Gunakan alat dalam LlamaIndex ReActAgent dengan menentukan fungsi Unity Catalog sebagai bagian dari koleksi alat LlamaIndex. Kemudian verifikasi bahwa agen berperilaku baik dengan memanggil koleksi alat LlamaIndex.
from llama_index.llms.openai import OpenAI from llama_index.core.agent import ReActAgent llm = OpenAI() agent = ReActAgent.from_tools(tools, llm=llm, verbose=True) agent.chat("Please run the following python code: `print(1 + 1)`")
OpenAI
Gunakan Azure Databricks Unity Catalog untuk mengintegrasikan fungsi SQL dan Python sebagai alat dalam alur kerja OpenAI. Integrasi ini menggabungkan tata kelola Unity Catalog dengan OpenAI untuk membuat aplikasi AI gen yang kuat.
Instal paket integrasi Databricks Unity Catalog untuk OpenAI.
%pip install unitycatalog-openai[databricks] %pip install mlflow -U dbutils.library.restartPython()Buat instans klien fungsi Katalog Unity.
from unitycatalog.ai.core.base import get_uc_function_client client = get_uc_function_client()Buat fungsi Katalog Unity yang ditulis dalam Python.
CATALOG = "your_catalog" SCHEMA = "your_schema" func_name = f"{CATALOG}.{SCHEMA}.code_function" def code_function(code: str) -> str: """ Runs Python code. Args: code (str): The python code to run. Returns: str: The result of running the Python code. """ import sys from io import StringIO stdout = StringIO() sys.stdout = stdout exec(code) return stdout.getvalue() client.create_python_function( func=code_function, catalog=CATALOG, schema=SCHEMA, replace=True )Buat instans fungsi Katalog Unity sebagai perangkat alat dan verifikasi bahwa alat berfungsi dengan benar dengan menjalankan fungsi.
from unitycatalog.ai.openai.toolkit import UCFunctionToolkit import mlflow # Enable tracing mlflow.openai.autolog() # Create a UCFunctionToolkit that includes the UC function toolkit = UCFunctionToolkit(function_names=[func_name]) # Fetch the tools stored in the toolkit tools = toolkit.tools client.execute_function = tools[0]Kirim permintaan ke model OpenAI bersama dengan alat.
import openai messages = [ { "role": "system", "content": "You are a helpful customer support assistant. Use the supplied tools to assist the user.", }, {"role": "user", "content": "What is the result of 2**10?"}, ] response = openai.chat.completions.create( model="gpt-4o-mini", messages=messages, tools=tools, ) # check the model response print(response)Setelah OpenAI mengembalikan respons, panggil panggilan fungsi Unity Catalog untuk menghasilkan jawaban respons kembali ke OpenAI.
import json # OpenAI sends only a single request per tool call tool_call = response.choices[0].message.tool_calls[0] # Extract arguments that the Unity Catalog function needs to run arguments = json.loads(tool_call.function.arguments) # Run the function based on the arguments result = client.execute_function(func_name, arguments) print(result.value)Setelah jawaban dikembalikan, Anda dapat membuat payload respons untuk panggilan berikutnya ke OpenAI.
# Create a message containing the result of the function call function_call_result_message = { "role": "tool", "content": json.dumps({"content": result.value}), "tool_call_id": tool_call.id, } assistant_message = response.choices[0].message.to_dict() completion_payload = { "model": "gpt-4o-mini", "messages": [*messages, assistant_message, function_call_result_message], } # Generate final response openai.chat.completions.create( model=completion_payload["model"], messages=completion_payload["messages"] )
Utilitas
Untuk menyederhanakan proses pembuatan respons alat, ucai-openai paket memiliki utilitas, generate_tool_call_messages, yang mengonversi pesan respons OpenAI ChatCompletion sehingga dapat digunakan untuk pembuatan respons.
from unitycatalog.ai.openai.utils import generate_tool_call_messages
messages = generate_tool_call_messages(response=response, client=client)
print(messages)
Note
Jika respons berisi beberapa entri pilihan, Anda dapat meneruskan argumen choice_index saat memanggil generate_tool_call_messages untuk memilih entri pilihan mana yang akan digunakan. Saat ini tidak ada dukungan untuk memproses entri pilihan ganda.
Anthropic
Gunakan Azure Databricks Unity Catalog untuk mengintegrasikan fungsi SQL dan Python sebagai alat dalam panggilan LLM SDK Anthropic. Integrasi ini menggabungkan tata kelola Unity Catalog dengan model Antropik untuk membuat aplikasi AI gen yang kuat.
Note
Integrasi Anthropic memerlukan Databricks Runtime 15.0 ke atas.
Instal paket integrasi Databricks Unity Catalog untuk Anthropic.
%pip install unitycatalog-anthropic[databricks] dbutils.library.restartPython()Buat instans klien fungsi Katalog Unity.
from unitycatalog.ai.core.base import get_uc_function_client client = get_uc_function_client()Buat fungsi Katalog Unity yang ditulis dalam 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 )Buat instans fungsi Katalog Unity sebagai toolkit.
from unitycatalog.ai.anthropic.toolkit import UCFunctionToolkit # Create an instance of the toolkit toolkit = UCFunctionToolkit(function_names=[func_name], client=client)Gunakan panggilan alat di 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)Membangun respons alat. Respons dari model Claude berisi blok metadata permintaan alat jika alat perlu dipanggil.
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)
Paket unitycatalog.ai-anthropic ini mencakup utilitas handler pesan untuk menyederhanakan penguraian dan penanganan panggilan ke fungsi Unity Catalog. Utilitas melakukan hal berikut:
- Mendeteksi persyaratan panggilan alat.
- Mengekstrak informasi panggilan perangkat dari kueri.
- Melakukan panggilan ke fungsi Unity Catalog.
- Mengurai respons dari fungsi Unity Catalog.
- Buat format pesan berikutnya untuk melanjutkan percakapan dengan Claude.
Note
Seluruh riwayat percakapan harus disediakan dalam conversation_history argumen ke generate_tool_call_messages API. Model Claude memerlukan pemulaan percakapan (pertanyaan asli dari pengguna) dan semua tanggapan yang dihasilkan berikutnya oleh LLM serta hasil dari panggilan alat multi-giliran.