Как использовать OpenAI function calling python?

Я создаю бота ИИ и хочу использовать function calling, но не понимаю, как это сделать.

    from openai import OpenAI
    import json
    from datetime import datetime

    client = OpenAI(api_key="key")



    def get_current_datetime():
        return {"current_datetime": datetime.now().isoformat()}

    functions = [
        {
            "name": "get_current_datetime",
            "description": "Возвращает текущую дату и время в формате ISO 8601.",
            "parameters": {
                "type": "object",
                "properties": {}
            }
        }
    ]

    messages = [
        {"role": "system", "content": "Ты можешь вызывать функции для получения информации."},
        {"role": "user", "content": "Какое сейчас время?"}
    ]

    response = client.chat.completions.create(
        model="gpt-4o",
        messages=messages,
        functions=functions,
        function_call="auto"
        
    )


    print(response)

Для начала создал простую функцию, которая возвращает дату, вроде все правильно, но OpenAI возвращает none.


Ответы (1 шт):

Автор решения: AnnaBazueva

Первое:

  • Вы в response для аргумента function_call="auto" — указали "auto"
    т.е., применение функции зависит от того, как OpenAI интерпретирует запрос.
  • Можно передать более конкретную инструкцию:
    function_call={"name": "get_current_datetime"} # Вызов нужной функции

Второе:

Каждый из описанных выше вариантов требует проверки ответа на валидность.

# Обрабатываем ответ
if "function_call" in response.choices[0].message:
    pass
    
    # Здесь обработайте результат применения функции.

else:
    print("Ответ от OpenAI:", response.choices[0].message["content"])
→ Ссылка