Aanroepen van Azure OpenAI-assistenten
De Assistents-API ondersteunt functieaanroepen, waarmee u de structuur van functies kunt beschrijven aan een assistent en vervolgens de functies krijgt die samen met hun argumenten moeten worden aangeroepen.
Notitie
- Bestanden zoeken kan maximaal 10.000 bestanden per assistent opnemen - 500 keer meer dan voorheen. Het is snel, ondersteunt parallelle query's via zoekopdrachten met meerdere threads en biedt uitgebreide herrankering en herschrijven van query's.
- Vectoropslag is een nieuw object in de API. Zodra een bestand is toegevoegd aan een vectoropslag, wordt het automatisch geparseerd, gesegmenteerd en ingesloten, zodat het kan worden doorzocht. Vectoropslag kunnen worden gebruikt voor assistenten en threads, waardoor bestandsbeheer en facturering worden vereenvoudigd.
- We hebben ondersteuning toegevoegd voor de
tool_choice
parameter die kan worden gebruikt om het gebruik van een specifiek hulpprogramma (zoals het zoeken van bestanden, code-interpreter of een functie) in een bepaalde uitvoering af te dwingen.
Ondersteuning voor functiegesprekken
Ondersteunde modellen
De pagina Modellen bevat de meest recente informatie over regio's/modellen waar assistenten worden ondersteund.
Als u alle functies van functieaanroepen inclusief parallelle functies wilt gebruiken, moet u een model gebruiken dat na 6 november 2023 is uitgebracht.
API-versies
API-versies beginnend met 2024-02-15-preview
.
Voorbeeldfunctiedefinitie
Notitie
- We hebben ondersteuning toegevoegd voor de
tool_choice
parameter die kan worden gebruikt om het gebruik van een specifiek hulpprogramma (zoalsfile_search
,code_interpreter
of eenfunction
) in een bepaalde uitvoering af te dwingen. - Uitvoeringen verlopen tien minuten na het maken. Zorg ervoor dat u de uitvoer van uw hulpprogramma verzendt voordat deze verloopt.
- U kunt ook functie-aanroepen uitvoeren met Azure Logic Apps
from openai import AzureOpenAI
client = AzureOpenAI(
api_key=os.getenv("AZURE_OPENAI_API_KEY"),
api_version="2024-07-01-preview",
azure_endpoint = os.getenv("AZURE_OPENAI_ENDPOINT")
)
assistant = client.beta.assistants.create(
name="Weather Bot",
instructions="You are a weather bot. Use the provided functions to answer questions.",
model="gpt-4", #Replace with model deployment name
tools=[{
"type": "function",
"function": {
"name": "get_weather",
"description": "Get the weather in location",
"parameters": {
"type": "object",
"properties": {
"location": {"type": "string", "description": "The city name, for example San Francisco"}
},
"required": ["location"]
}
}
}]
)
De functies lezen
Wanneer u een Run initieert met een gebruikersbericht waarmee de functie wordt geactiveerd, wordt de status In behandeling ingevoerd. Nadat de uitvoering is verwerkt, wordt een requires_action status ingevoerd die u kunt controleren door de uitvoering op te halen.
{
"id": "run_abc123",
"object": "thread.run",
"assistant_id": "asst_abc123",
"thread_id": "thread_abc123",
"status": "requires_action",
"required_action": {
"type": "submit_tool_outputs",
"submit_tool_outputs": {
"tool_calls": [
{
"id": "call_abc123",
"type": "function",
"function": {
"name": "get_weather",
"arguments": "{\"location\":\"Seattle\"}"
}
},
]
}
},
...
Functie-uitvoer verzenden
Vervolgens kunt u de uitvoering voltooien door de uitvoer van het hulpprogramma in te dienen van de functie(s) die u aanroept. Geef de tool_call_id
verwijzing in het required_action
object door om de uitvoer te koppelen aan elke functie-aanroep.
# Example function
def get_weather():
return "It's 80 degrees F and slightly cloudy."
# Define the list to store tool outputs
tool_outputs = []
# Loop through each tool in the required action section
for tool in run.required_action.submit_tool_outputs.tool_calls:
# get data from the weather function
if tool.function.name == "get_weather":
weather = get_weather()
tool_outputs.append({
"tool_call_id": tool.id,
"output": weather
})
# Submit all tool outputs at once after collecting them in a list
if tool_outputs:
try:
run = client.beta.threads.runs.submit_tool_outputs_and_poll(
thread_id=thread.id,
run_id=run.id,
tool_outputs=tool_outputs
)
print("Tool outputs submitted successfully.")
except Exception as e:
print("Failed to submit tool outputs:", e)
else:
print("No tool outputs to submit.")
if run.status == 'completed':
print("run status: ", run.status)
messages = client.beta.threads.messages.list(thread_id=thread.id)
print(messages.to_json(indent=2))
else:
print("run status: ", run.status)
print (run.last_error.message)
Nadat u de uitvoer van het hulpprogramma hebt verzonden, wordt de queued
status Uitgevoerd ingevoerd voordat de uitvoering wordt voortgezet.
Zie ook
- Api-naslaginformatie voor assistenten
- Meer informatie over het gebruik van assistenten met onze handleiding over assistenten.
- Azure OpenAI Assistants API-voorbeelden