В этом уроке мы продемонстрируем, как включить функции вызова в агентах Mistral, используя стандартный формат схемы JSON. Определяя параметры ввода вашей функции с помощью четкой схемы, вы можете сделать свои пользовательские инструменты беспрепятственно вызов агентом – создавая мощные, динамические взаимодействия.
Мы будем использовать API API AviationStack для получения данных о состоянии полета в реальном времени, демонстрируя, как внешние API могут быть интегрированы в виде вызывных функций в агенте Mistral.
Шаг 1: Настройка зависимости
Установка библиотеки Мистраль
Загрузка ключа API Mistral
Вы можете получить ключ API от https://console.mistral.ai/api-keys
from getpass import getpass
MISTRAL_API_KEY = getpass('Enter Mistral API Key: ')
Загрузка клавиши API авиационного стека API
Вы можете подписаться на бесплатный ключ API с их приборной панели, чтобы начать.
AVIATIONSTACK_API_KEY = getpass('Enter Aviation Stack API: ')
Шаг 2: Определение пользовательской функции
Затем мы определяем функцию Python get_flight_status (), которая называет API Aviationstack, чтобы получить статус в реальном времени полета. Функция принимает необязательный параметр Flight_iata и возвращает данные ключей, такие как имя авиакомпании, статус полета, аэропорты вылета и прибытия, и запланированное время. Если соответствующий рейс не найден, он изящно возвращает сообщение об ошибке.
import requests
from typing import Dict
def get_flight_status(flight_iata=None):
"""
Retrieve flight status using optional filters: dep_iata, arr_iata, flight_iata.
"""
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": "No flight found for the provided parameters."}
Шаг 3: Создание клиента и агента Mistral
На этом этапе мы создаем агента Mistral, который использует инструменты для получения информации о полете в реальном времени. Агент, названный агентом состояния полета, настроен на использование модели «Мистер-Медий-2505» и оснащена пользовательским инструментом функциональной работы с именем get_flight_status. Этот инструмент определяется с использованием схемы JSON, которая принимает один необходимый параметр: код IATA полета (например, «AI101»). После развертывания агент может автоматически вызывать эту функцию всякий раз, когда он обнаруживает соответствующий пользовательский запрос, обеспечивая бесшовную интеграцию между входами естественного языка и структурированными ответами API.
from mistralai import Mistral
client = Mistral(MISTRAL_API_KEY)
flight_status_agent = client.beta.agents.create(
model="mistral-medium-2505",
description="Provides real-time flight status using aviationstack API.",
name="Flight Status Agent",
tools=(
{
"type": "function",
"function": {
"name": "get_flight_status",
"description": "Retrieve the current status of a flight by its IATA code (e.g. AI101).",
"parameters": {
"type": "object",
"properties": {
"flight_iata": {
"type": "string",
"description": "IATA code of the flight (e.g. AI101)"
},
},
"required": ("flight_iata")
}
}
}
)
)
Шаг 4: Запуск разговора и обработки функций вызовы
На этом этапе мы начинаем разговор с агентом по статусу полета, задавая вопрос естественному языку: «Каков текущий статус AI101?». Модель Mistral обнаруживает, что она должна вызывать функцию get_flight_status и возвращает запрос вызова функции. Мы анализируем аргументы, запускаем функцию локально, используя API AviationStack и возвращаем результат обратно агенту, используя функциональные процессы. Наконец, модель включает в себя ответ API и генерирует ответ естественного языка с текущим статусом полета, который мы печатаем на консоли.
from mistralai import FunctionResultEntry
import json
# User starts a conversation
response = client.beta.conversations.start(
agent_id=flight_status_agent.id,
inputs=({"role": "user", "content": "What's the current status of AI101?"})
)
# Check if model requested a function call
if response.outputs(-1).type == "function.call" and response.outputs(-1).name == "get_flight_status":
args = json.loads(response.outputs(-1).arguments)
# Run the function
function_result = json.dumps(get_flight_status(**args))
# Create result entry
result_entry = FunctionResultEntry(
tool_call_id=response.outputs(-1).tool_call_id,
result=function_result
)
# Return result to agent
response = client.beta.conversations.append(
conversation_id=response.conversation_id,
inputs=(result_entry)
)
print(response.outputs(-1).content)
else:
print(response.outputs(-1).content)
Проверьте ноутбук на GitHubПолем Весь кредит на это исследование направлено на исследователей этого проекта. Кроме того, не стесняйтесь следить за нами Twitter И не забудьте присоединиться к нашему 95K+ ML Subreddit и подписаться на Наша информационный бюллетеньПолем
Я выпускник гражданского строительства (2022) из Jamia Millia Islamia, Нью -Дели, и у меня интерес к науке о данных, особенно в нейронных сетях и их применении в различных областях.