Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Databricks Unity Catalog gebruiken om SQL- en Python-functies te integreren als hulpprogramma's in OpenAI-werkstromen. Deze integratie combineert het beheer van Unity Catalog met OpenAI om krachtige GEN AI-apps te maken.
Behoeften
- Installeer Python 3.10 of hoger.
Unity Catalog-hulpprogramma's integreren met OpenAI
Voer de volgende code uit in een notebook of Python-script om een Unity Catalog-hulpprogramma te maken en te gebruiken tijdens het aanroepen van een OpenAI-model.
Installeer het Databricks Unity Catalog-integratiepakket voor OpenAI.
%pip install unitycatalog-openai[databricks] %pip install mlflow -U dbutils.library.restartPython()Maak een exemplaar van de Unity Catalog-functieclient.
from unitycatalog.ai.core.base import get_uc_function_client client = get_uc_function_client()Maak een Unity Catalog-functie die is geschreven in 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 )Maak een exemplaar van de Unity Catalog-functie als toolkit en controleer of het hulpprogramma goed werkt door de functie uit te voeren.
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]Dien de aanvraag in bij het OpenAI-model, samen met de hulpprogramma's.
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)Nadat OpenAI een antwoord retourneert, roept u de aanroep van de Unity Catalog-functie aan om het antwoordantwoord terug te genereren naar 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)Zodra het antwoord is geretourneerd, kunt u de nettolading van het antwoord samenstellen voor volgende aanroepen naar 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"] )
Nutsvoorzieningen
Om het proces van het maken van het antwoord van het hulpprogramma te vereenvoudigen, heeft het ucai-openai pakket een hulpprogramma, generate_tool_call_messageswaarmee OpenAI ChatCompletion-antwoordberichten worden geconverteerd, zodat ze kunnen worden gebruikt voor het genereren van reacties.
from unitycatalog.ai.openai.utils import generate_tool_call_messages
messages = generate_tool_call_messages(response=response, client=client)
print(messages)
Opmerking
Als het antwoord meerdere keuzegegevens bevat, kunt u het argument choice_index doorgeven wanneer u generate_tool_call_messages aanroept om te kiezen welke keuzevermelding u wilt gebruiken. Er is momenteel geen ondersteuning voor het verwerken van vermeldingen met meerdere keuzen.