Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Unity Kataloğu AI aracısı araçları LangChain, LlamaIndex, OpenAI ve Anthropic gibi popüler nesil yapay zeka kitaplıklarında kullanılabilir. Bu tümleştirmeler Unity Kataloğu aracı idaresini üçüncü taraf aracı yazma çerçevelerinin özellikleriyle birleştirir. Örneğin:
- LangChain'de Unity Kataloğu işlevleri, verileri sorgulama veya dönüştürme gibi görevleri gerçekleştirmek için aracının iş akışının bir parçası olabilir.
- OpenAI veya Antropik tümleştirmelerde işlevler yürütme sırasında doğrudan yapay zeka modeli tarafından çağrılır.
Bir Unity Kataloğu aracı oluşturmak ve bu çerçeveyle kullanmak için aşağıdaki sekmelerde çerçevenizi seçin. Kodu bir Azure Databricks not defterinde veya Python betiğinde çalıştırın.
Gereksinimler
- Python 3.10 veya üzerini yükleyin.
LangChain
SQL ve Python işlevlerini LangChain ve LangGraph iş akışlarında araç olarak tümleştirmek için Azure Databricks Unity Kataloğu'nu kullanın. Bu tümleştirme, güçlü LLM tabanlı uygulamalar oluşturmak için Unity Kataloğu idaresini LangChain özellikleriyle birleştirir.
Bu örnekte bir Unity Kataloğu aracı oluşturur, işlevselliğini test eder ve aracıya eklersiniz.
Bağımlılıkları yükleme
Databricks'in isteğe bağlı özelliğiyle Unity Catalog yapay zeka paketlerini yükleyin ve LangChain tümleştirme paketini kurun.
# 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()
Databricks İşlev İstemcisi'ni başlatma
Databricks İşlev İstemcisi'ni başlatın.
from unitycatalog.ai.core.base import get_uc_function_client
client = get_uc_function_client()
Aracın mantığını tanımla
Aracın mantığını içeren bir Unity Kataloğu işlevi oluşturun.
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
)
İşlevi test et.
İşlevinizin beklendiği gibi çalışıp çalışmadığını denetlemek için işlevinizi test edin:
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'
UCFunctionToolKit kullanarak işlevi sarmalayın
İşlevi, aracı yazma kitaplıkları tarafından erişilebilir hale getirmek için UCFunctionToolkit kullanarak sarmalayın. Araç seti farklı kitaplıklarda tutarlılık sağlar ve almacılar için otomatik izleme gibi yararlı özellikler ekler.
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
Bir aracı ajan içinde kullanın
Aracı tools özelliğini UCFunctionToolkit kullanarak bir LangChain aracısına ekleyin.
Bu örnek basitlik için LangChain API'sini AgentExecutor kullanarak basit bir aracı yazar. Üretim iş yükleri için Yapay zeka aracısı yazma bölümünde görülen aracı yazma iş akışını kullanın ve bunu Databricks Uygulamalarına dağıtın.
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
SQL ve Python işlevlerini LlamaIndex iş akışlarında araç olarak tümleştirmek için Azure Databricks Unity Kataloğu'nu kullanın. Bu tümleştirme, Unity Kataloğu idaresini LlamaIndex'in LLM'ler için büyük veri kümelerini dizinleme ve sorgulama özellikleriyle birleştirir.
LlamaIndex için Databricks Unity Kataloğu tümleştirme paketini yükleyin.
%pip install unitycatalog-llamaindex[databricks] dbutils.library.restartPython()Unity Kataloğu işlevleri istemcisinin bir örneğini oluşturun.
from unitycatalog.ai.core.base import get_uc_function_client client = get_uc_function_client()Python'da yazılmış bir Unity Kataloğu işlevi oluşturun.
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 )Unity Kataloğu işlevinin bir örneğini araç seti olarak oluşturun ve aracın düzgün davrandığını doğrulamak için bunu çalıştırın.
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"}Unity Kataloğu işlevini bir LlamaIndex araç koleksiyonunun parçası olarak tanımlayarak bir LlamaIndex ReActAgent'da aracı kullanın. Ardından LlamaIndex araç koleksiyonunu çağırarak aracının düzgün davrandığını doğrulayın.
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
SQL ve Python işlevlerini OpenAI iş akışlarında araç olarak tümleştirmek için Azure Databricks Unity Kataloğu'nu kullanın. Bu tümleştirme, güçlü yapay zeka uygulamaları oluşturmak için Unity Kataloğu idaresini OpenAI ile birleştirir.
OpenAI için Databricks Unity Kataloğu tümleştirme paketini yükleyin.
%pip install unitycatalog-openai[databricks] %pip install mlflow -U dbutils.library.restartPython()Unity Kataloğu işlevleri istemcisinin bir örneğini oluşturun.
from unitycatalog.ai.core.base import get_uc_function_client client = get_uc_function_client()Python'da yazılmış bir Unity Kataloğu işlevi oluşturun.
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 )Unity Kataloğu işlevinin bir örneğini araç seti olarak oluşturun ve işlevi çalıştırarak aracın düzgün davrandığını doğrulayın.
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]İsteği araçlarla birlikte OpenAI modeline gönderin.
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)OpenAI bir yanıt döndürdüğünde, Yanıt yanıtını OpenAI'ye geri oluşturmak için Unity Kataloğu işlev çağrısını çağırın.
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)Yanıt döndürüldükten sonra OpenAI'ye yapılan sonraki çağrılar için yanıt yükünü oluşturabilirsiniz.
# 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"] )
Yardımcı Programlar
Araç yanıtını oluşturma işlemini basitleştirmek için, ucai-openai paketi OpenAI ChatCompletion yanıt iletilerini yanıt oluşturmada kullanılabilecek hale getiren bir araç sağlar.
from unitycatalog.ai.openai.utils import generate_tool_call_messages
messages = generate_tool_call_messages(response=response, client=client)
print(messages)
Note
Yanıt birden çok seçenekli girdi içeriyorsa, generate_tool_call_messages çağırırken choice_index bağımsız değişkenini, hangi seçim girişinin kullanılacağını seçmek için geçirebilirsiniz. Şu anda çoktan seçmeli girişleri işleme desteği yoktur.
Anthropic
SQL ve Python işlevlerini Anthropic SDK LLM çağrılarında araç olarak tümleştirmek için Azure Databricks Unity Kataloğu'nu kullanın. Bu tümleştirme, güçlü yapay zeka uygulamaları oluşturmak için Unity Kataloğu idaresini Antropik modellerle birleştirir.
Note
Anthropic tümleştirmesi için Databricks Runtime 15.0 ve üzeri gerekir.
Antropik için Databricks Unity Kataloğu tümleştirme paketini yükleyin.
%pip install unitycatalog-anthropic[databricks] dbutils.library.restartPython()Unity Kataloğu işlevleri istemcisinin bir örneğini oluşturun.
from unitycatalog.ai.core.base import get_uc_function_client client = get_uc_function_client()Python'da yazılmış bir Unity Kataloğu işlevi oluşturun.
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 )Unity Kataloğu işlevinin bir örneğini araç seti olarak oluşturun.
from unitycatalog.ai.anthropic.toolkit import UCFunctionToolkit # Create an instance of the toolkit toolkit = UCFunctionToolkit(function_names=[func_name], client=client)Antropik'te bir araç çağrısı kullanın.
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)Bir araç yanıtı oluşturun. Claude modelinden gelen yanıt, bir aracın çağrılması gerekiyorsa bir araç isteği meta veri bloğu içerir.
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 Unity Kataloğu işlevine yapılan çağrının ayrıştırılması ve işlenmesini basitleştirmek için bir ileti işleyici yardımcı programı içerir. Yardımcı programı aşağıdakileri yapar:
- Araç çağırma gereksinimlerini algılar.
- Sorgudan araç çağrı bilgilerini ayıklar.
- Unity Kataloğu işlevine yapılan çağrıyı gerçekleştirir.
- Unity Kataloğu işlevinden yanıtı ayrıştırıyor.
- Claude ile konuşmaya devam etmek için bir sonraki ileti biçimini üretin.
Note
Konuşma geçmişinin tamamı conversation_history bağımsız değişkeni olarak generate_tool_call_messages API'sine sağlanmalıdır. Claude modelleri, konuşmanın başlatılmasını (özgün kullanıcı girişi sorusu) ve sonraki tüm LLM tarafından oluşturulan yanıtları ve çok aşamalı araç çağrı sonuçlarını gerektirir.