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 usługi Databricks Unity Catalog, aby zintegrować funkcje SQL i Python jako narzędzia w przepływach pracy interfejsu OpenAI. Ta integracja łączy zarządzanie katalogiem Unity z usługą OpenAI w celu tworzenia zaawansowanych aplikacji generatywnej AI.
Wymagania
- Zainstaluj środowisko Python w wersji 3.10 lub nowszej.
Integracja narzędzi Unity Catalog z OpenAI
Uruchom następujący kod w notesie lub skrypcie w języku Python, aby utworzyć narzędzie Unity Catalog i użyć go podczas wywoływania modelu OpenAI.
Zainstaluj pakiet integracji Katalogu Unity usługi Databricks dla OpenAI.
%pip install unitycatalog-openai[databricks] %pip install mlflow -U dbutils.library.restartPython()Utwórz instancję klienta funkcji katalogu Unity.
from unitycatalog.ai.core.base import get_uc_function_client client = get_uc_function_client()Utwórz funkcję katalogu Unity napisaną w języku 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 )Utwórz instancję funkcji Unity Catalog jako narzędzie i sprawdź, czy działa ono prawidłowo, uruchamiając funkcję.
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]Prześlij żądanie do modelu OpenAI wraz z narzędziami.
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)Po tym jak system OpenAI zwróci odpowiedź, wywołaj funkcję Wykazu Unity, aby wygenerować odpowiedź zwrotną do 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)Gdy odpowiedź zostanie zwrócona, możesz skonstruować ładunek odpowiedzi dla kolejnych wywołań interfejsu 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"] )
Usługi komunalne
Aby uprościć proces tworzenia odpowiedzi narzędzia, pakiet ucai-openai posiada narzędzie generate_tool_call_messages, które konwertuje komunikaty odpowiedzi OpenAI ChatCompletion, aby mogły być używane do generowania odpowiedzi.
from unitycatalog.ai.openai.utils import generate_tool_call_messages
messages = generate_tool_call_messages(response=response, client=client)
print(messages)
Uwaga / Notatka
Jeśli odpowiedź zawiera wiele wpisów wyboru, możesz przekazać argument choice_index podczas wywoływania generate_tool_call_messages, aby wybrać, który wpis wyboru ma być używany. Obecnie nie ma obsługi przetwarzania wpisów wielokrotnego wyboru.