Wywoływanie funkcji Asystentów openAI platformy Azure
Interfejs API Asystentów obsługuje wywoływanie funkcji, co umożliwia opisanie struktury funkcji asystenta, a następnie zwrócenie funkcji, które muszą być wywoływane wraz z ich argumentami.
Uwaga
- Wyszukiwanie plików może pozyskiwać maksymalnie 10 000 plików na asystenta — 500 razy więcej niż wcześniej. Jest szybki, obsługuje zapytania równoległe za pośrednictwem wyszukiwania wielowątkowego i oferuje ulepszone ponowne korbowanie i ponowne zapisywanie zapytań.
- Magazyn wektorowy to nowy obiekt w interfejsie API. Po dodaniu pliku do magazynu wektorów jest on automatycznie analizowany, fragmentowany i osadzony, gotowy do wyszukiwania. Magazyny wektorowe mogą być używane między asystentami i wątkami, upraszczając zarządzanie plikami i rozliczenia.
- Dodaliśmy obsługę parametru
tool_choice
, który może służyć do wymuszenia użycia określonego narzędzia (takiego jak wyszukiwanie plików, interpreter kodu lub funkcja) w określonym uruchomieniu.
Obsługa wywoływania funkcji
Obsługiwane modele
Strona modeli zawiera najbardziej aktualne informacje dotyczące regionów/modeli, w których są obsługiwani Asystenci.
Aby użyć wszystkich funkcji wywoływania funkcji, w tym funkcji równoległych, należy użyć modelu, który został wydany po 6 listopada 2023 r.
Wersje interfejsu API
2024-02-15-preview
2024-05-01-preview
Przykładowa definicja funkcji
Uwaga
- Dodaliśmy obsługę parametru
tool_choice
, który może służyć do wymuszenia użycia określonego narzędzia (na przykładfile_search
,code_interpreter
lub )function
w konkretnym uruchomieniu. - Przebiegi wygasają dziesięć minut po utworzeniu. Przed wygaśnięciem pamiętaj o przesłaniu danych wyjściowych narzędzia.
- Możesz również wykonywać wywołania funkcji za pomocą usługi Azure Logic Apps
from openai import AzureOpenAI
client = AzureOpenAI(
api_key=os.getenv("AZURE_OPENAI_API_KEY"),
api_version="2024-02-15-preview",
azure_endpoint = os.getenv("AZURE_OPENAI_ENDPOINT")
)
assistant = client.beta.assistants.create(
instructions="You are a weather bot. Use the provided functions to answer questions.",
model="gpt-4-1106-preview", #Replace with model deployment name
tools=[{
"type": "function",
"function": {
"name": "getCurrentWeather",
"description": "Get the weather in location",
"parameters": {
"type": "object",
"properties": {
"location": {"type": "string", "description": "The city and state e.g. San Francisco, CA"},
"unit": {"type": "string", "enum": ["c", "f"]}
},
"required": ["location"]
}
}
}, {
"type": "function",
"function": {
"name": "getNickname",
"description": "Get the nickname of a city",
"parameters": {
"type": "object",
"properties": {
"location": {"type": "string", "description": "The city and state e.g. San Francisco, CA"},
},
"required": ["location"]
}
}
}]
)
Odczytywanie funkcji
Po zainicjowaniu uruchomienia za pomocą komunikatu użytkownika, który wyzwala funkcję, uruchomienie wprowadzi stan oczekiwania. Po jego zakończeniu przebieg wprowadzi requires_action stan, który można zweryfikować, pobierając polecenie Uruchom.
{
"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": "getCurrentWeather",
"arguments": "{\"location\":\"San Francisco\"}"
}
},
{
"id": "call_abc456",
"type": "function",
"function": {
"name": "getNickname",
"arguments": "{\"location\":\"Los Angeles\"}"
}
}
]
}
},
...
Przesyłanie danych wyjściowych funkcji
Następnie możesz ukończyć uruchamianie, przesyłając dane wyjściowe narzędzia z wywołanych funkcji. tool_call_id
Przekaż odwołanie w powyższym obiekcie, required_action
aby dopasować dane wyjściowe do każdego wywołania funkcji.
from openai import AzureOpenAI
client = AzureOpenAI(
api_key=os.getenv("AZURE_OPENAI_API_KEY"),
api_version="2024-02-15-preview",
azure_endpoint = os.getenv("AZURE_OPENAI_ENDPOINT")
)
run = client.beta.threads.runs.submit_tool_outputs(
thread_id=thread.id,
run_id=run.id,
tool_outputs=[
{
"tool_call_id": call_ids[0],
"output": "22C",
},
{
"tool_call_id": call_ids[1],
"output": "LA",
},
]
)
Po przesłaniu danych wyjściowych narzędzia uruchomienie przejdzie w queued
stan przed kontynuowanym wykonywaniem.
Zobacz też
- Dokumentacja interfejsu API asystentów
- Dowiedz się więcej na temat korzystania z asystentów, korzystając z naszego przewodnika z instrukcjami dotyczącymi asystentów.
- Przykłady interfejsu API asystentów openAI platformy Azure