Itinai.com it company office background blured chaos 50 v 14a9a2fa 3bf8 4cd1 b2f6 5c758d82bf3e 0

Активация вызова функций в агентах Mistral с использованием стандартного формата JSON Schema

Itinai.com it company office background blured chaos 50 v 14a9a2fa 3bf8 4cd1 b2f6 5c758d82bf3e 0

Как включить вызов функций в Mistral Agents с использованием стандартного формата JSON Schema

Интересуетесь, как интегрировать функции в своих Mistral Agents и сделать взаимодействие с пользователями более динамичным? В этой статье мы рассмотрим, как включить вызов функций в Mistral Agents, используя стандартный формат JSON Schema. Вы узнаете, как создать мощные инструменты для автоматизации бизнеса, которые не только облегчат работу, но и улучшат пользовательский опыт.

Введение в Mistral Agents

Mistral — это мощная платформа для создания интеллектуальных агентов, способных обрабатывать запросы пользователей и взаимодействовать с внешними API. Использование вызова функций позволяет агентам выполнять более сложные задачи, чем просто предоставление текстовых ответов. Например, вы можете интегрировать API для получения актуальной информации, такой как статус рейсов или данные о погоде.

Шаг 1: Установка зависимостей

  • Установите библиотеку Mistral:
pip install mistralai
  • Получите API-ключ от Mistral API Console и загрузите его:
from getpass import getpass
MISTRAL_API_KEY = getpass('Введите API-ключ Mistral: ')

Шаг 2: Определение пользовательской функции

Определим функцию get_flight_status(), которая будет использовать API AviationStack для получения реального статуса рейса. Функция принимает код IATA рейса и возвращает ключевые детали, такие как название авиакомпании и статус рейса. Если рейс не найден, она возвращает сообщение об ошибке.

import requests
from typing import Dict

def get_flight_status(flight_iata=None):
    params = {
        "access_key": AVIATIONSTACK_API_KEY,
        "flight_iata": flight_iata  
    }
    response = requests.get("http://api.aviationstack.com/v1/flights", params=params)
    data = response.json()
    if "data" in data and data["data"]:
        flight = data["data"][0]
        return {
            "airline": flight["airline"]["name"],
            "flight_iata": flight["flight"]["iata"],
            "status": flight["flight_status"],
            "departure_airport": flight["departure"]["airport"],
            "arrival_airport": flight["arrival"]["airport"],
            "scheduled_departure": flight["departure"]["scheduled"],
            "scheduled_arrival": flight["arrival"]["scheduled"],
        }
    else:
        return {"error": "Рейс не найден по предоставленным параметрам."}

Шаг 3: Создание клиента и агента Mistral

Теперь создадим Mistral Agent, который будет использовать вызов функций для получения информации о рейсах. Агент будет настроен на использование модели mistral-medium-2505 и включать нашу пользовательскую функцию get_flight_status.

from mistralai import Mistral

client = Mistral(MISTRAL_API_KEY)

flight_status_agent = client.beta.agents.create(
    model="mistral-medium-2505",
    description="Предоставляет реальный статус рейса с использованием API aviationstack.",
    name="Агент статуса рейса",
    tools=[
        {
            "type": "function",
            "function": {
                "name": "get_flight_status",
                "description": "Получить текущий статус рейса по его коду IATA (например, AI101).",
                "parameters": {
                    "type": "object",
                    "properties": {
                        "flight_iata": {
                            "type": "string",
                            "description": "Код IATA рейса (например, AI101)"
                        },
                    },
                    "required": ["flight_iata"]
                }
            }
        }
    ]
)

Шаг 4: Запуск разговора и обработка вызова функций

Инициируем разговор с агентом, задавая вопрос: «Какой текущий статус AI101?». Модель Mistral определяет необходимость вызова функции get_flight_status и возвращает запрос на вызов функции. Мы передаем аргументы, выполняем функцию и возвращаем результат обратно агенту.

from mistralai import FunctionResultEntry
import json

response = client.beta.conversations.start(
    agent_id=flight_status_agent.id,
    inputs=[{"role": "user", "content": "Какой текущий статус AI101?"}]
)

if response.outputs[-1].type == "function.call" and response.outputs[-1].name == "get_flight_status":
    args = json.loads(response.outputs[-1].arguments)
    function_result = json.dumps(get_flight_status(**args))
    result_entry = FunctionResultEntry(
        tool_call_id=response.outputs[-1].tool_call_id,
        result=function_result
    )
    response = client.beta.conversations.append(
        conversation_id=response.conversation_id,
        inputs=[result_entry]
    )
    print(response.outputs[-1].content)
else:
    print(response.outputs[-1].content)

Практические шаги по внедрению

Чтобы вы могли успешно внедрить вызов функций в ваших Mistral Agents, следуйте этим рекомендациям:

  • Четко определите входные параметры вашей функции с использованием JSON Schema.
  • Тестируйте функции в режиме разработки, чтобы убедиться в их надежности.
  • Убедитесь, что ваш агент правильно обрабатывает исключения и ошибки API.

Частые ошибки и лайфхаки

Вот несколько распространенных ошибок, которых стоит избегать:

  • Неправильное определение параметров в JSON Schema.
  • Отсутствие обработки ошибок, что может привести к сбоям в агенте.

Лайфхаки:

  • Используйте логи для отслеживания вызовов функций и их результатов — это поможет вам в отладке.
  • Экспериментируйте с различными API, чтобы расширить функционал ваших агентов.

Заключение

Включение вызова функций в Mistral Agents с использованием стандартного формата JSON Schema — это мощный инструмент для создания интуитивно понятных и полезных приложений. Это не только повысит вашу продуктивность, но и создаст для пользователей более интерактивный и полезный опыт. Начните внедрять эти практические шаги уже сегодня и откройте для себя новые горизонты автоматизации бизнеса с использованием ИИ!

Запустите свой ИИ проект бесплатно

ИИ-агенты искусственный интеллект онлайн для бизнеса

Лучший ИИ онлайн