Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import json
- from openai import OpenAI
- # ==========================================
- # 1. Настройки API (задаются здесь)
- # ==========================================
- API_KEY = "sk-your-api-key-here"
- # Оставьте BASE_URL по умолчанию для OpenAI, или замените на свой (например, для локального сервера LM Studio / vLLM)
- BASE_URL = "http://127.0.0.1:8000/v1"
- MODEL = "model_name"
- # Инициализируем клиента
- client = OpenAI(
- api_key=API_KEY,
- base_url=BASE_URL
- )
- # ==========================================
- # 2. Определяем инструменты
- # ==========================================
- tools = [
- {
- "type": "function",
- "function": {
- "name": "get_current_weather",
- "description": "Получает текущую погоду в заданном городе",
- "parameters": {
- "type": "object",
- "properties": {
- "location": {"type": "string", "description": "Город и страна, например: Токио, Япония"}
- },
- "required": ["location"]
- }
- }
- },
- {
- "type": "function",
- "function": {
- "name": "get_current_time",
- "description": "Получает текущее время для указанного региона",
- "parameters": {
- "type": "object",
- "properties": {
- "timezone": {"type": "string", "description": "Таймзона, например: Asia/Tokyo"}
- },
- "required": ["timezone"]
- }
- }
- }
- ]
- # ==========================================
- # 3. Отправляем запрос и логируем результат
- # ==========================================
- def test_openai_function_calling():
- print(f"🚀 Отправляем запрос через библиотеку OpenAI (Модель: {MODEL})...")
- messages = [
- {"role": "user", "content": "Какая сейчас погода в Токио и сколько там времени?"}
- ]
- try:
- response = client.chat.completions.create(
- model=MODEL,
- messages=messages,
- tools=tools,
- tool_choice="auto"
- )
- # В библиотеке openai мы обращаемся к атрибутам через точку
- choice = response.choices[0]
- message = choice.message
- finish_reason = choice.finish_reason
- print("\n--- ЛОГ ОТВЕТА ---")
- # 1. Проверяем наличие текстового ответа (комментарии модели)
- if message.content:
- print(f"💬 Текстовый ответ модели: {message.content}")
- else:
- print("💬 Текстовый ответ отсутствует (модель сразу перешла к вызовам).")
- # 2. Проверяем наличие вызовов функций
- if finish_reason == "tool_calls" and message.tool_calls:
- print("\n✅ УСПЕХ: Модель запросила вызов функций!")
- print(f"Количество запрошенных функций: {len(message.tool_calls)}")
- for index, tool_call in enumerate(message.tool_calls, start=1):
- func_name = tool_call.function.name
- func_args = tool_call.function.arguments
- print(f" [{index}] Функция: '{func_name}'")
- print(f" Аргументы: {func_args}")
- # Проверка валидности JSON в аргументах
- try:
- json.loads(func_args)
- print(" Статус аргументов: Валидный JSON 🟢")
- except json.JSONDecodeError:
- print(" Статус аргументов: ОШИБКА парсинга JSON 🔴")
- else:
- print(f"\n❌ НЕУДАЧА: Модель не вызвала функции. Причина завершения: {finish_reason}")
- except Exception as e:
- print(f"\n🔴 ОШИБКА API: {e}")
- if __name__ == "__main__":
- test_openai_function_calling()
Advertisement
Add Comment
Please, Sign In to add comment