защита run_conversation():
# 1. Диалог настройки и доступные функции
messages = [{"role": "user", "content": "Какая погода в Сан-Франциско, Токио и Париже?"}]
инструменты = [
{
"тип": "функция",
"функция": {
"name": "get_current_weather",
"description": "Получить текущую погоду в указанном месте",
"параметры": {
"тип": "объект",
"свойства": {
"местоположение": {
"тип": "строка",
"description": "Город и штат, например Сан-Франциско, Калифорния",
},
"unit": {"type": "string", "enum": ["Цельсий", "Фаренгейт"]},
},
"обязательно": ["местоположение"],
},
},
}
]
# 2. Создать разговор
ответ = client.chat.completions.create(
модель="gpt-4o",
сообщения = сообщения,
инструменты = инструменты,
Tool_choice="авто",
)
ответ_сообщение = ответ.выбор[0].сообщение
печать (ответ_сообщение)
# 3. Обработка вызовов функций
tool_calls = ответ_сообщение.tool_calls
если инструмент_вызов:
доступные_функции = {
«get_current_weather»: get_current_weather,
}
messages.append(response_message)
# 4. Выполняем вызов функции и получаем результат
дляtool_call вtool_calls:
имя_функции = вызов_инструмента.имя_функции
function_to_call = доступные_функции[имя_функции]
function_args = json.loads(tool_call.function.arguments)
function_response = function_to_call(
location=function_args.get("Местоположение"),
unit=function_args.get("единица"),
)
messages.append({
«tool_call_id»:tool_call.id,
"роль": "инструмент",
"имя": имя_функции,
«содержание»: function_response,
})
# 5. Получите окончательный ответ
второй_ответ = client.chat.completions.create(
модель="gpt-4o",
сообщения = сообщения,
)
вернуть второй_ответ
# Выполнить диалог
печать (run_conversation())