Close Menu
    DevStackTipsDevStackTips
    • Home
    • News & Updates
      1. Tech & Work
      2. View All

      The Case For Minimal WordPress Setups: A Contrarian View On Theme Frameworks

      June 8, 2025

      How To Fix Largest Contentful Paint Issues With Subpart Analysis

      June 8, 2025

      How To Prevent WordPress SQL Injection Attacks

      June 8, 2025

      AI is currently in its teenage years, battling raging hormones

      June 6, 2025

      The 2025 Wholesome Direct was chock-full of cozy casual games and aesthetic vibes

      June 8, 2025

      All known AMD Ryzen Z2 Series gaming handheld chips and how they are rumored to compare

      June 8, 2025

      “The original Mass Effect trilogy was absolutely an inspiration.” The RPG experts behind WH40K: Rogue Trader are hitting it big with ‘The Expanse: Osiris Reborn’

      June 8, 2025

      If you’ve started to notice Xbox console games showing up on the Xbox PC store, you’re not alone — what’s going on?

      June 8, 2025
    • Development
      1. Algorithms & Data Structures
      2. Artificial Intelligence
      3. Back-End Development
      4. Databases
      5. Front-End Development
      6. Libraries & Frameworks
      7. Machine Learning
      8. Security
      9. Software Engineering
      10. Tools & IDEs
      11. Web Design
      12. Web Development
      13. Web Security
      14. Programming Languages
        • PHP
        • JavaScript
      Featured

      Master Image Processing in Node.js Using Sharp for Fast Web Apps

      June 7, 2025
      Recent

      Master Image Processing in Node.js Using Sharp for Fast Web Apps

      June 7, 2025

      mkocansey/bladewind

      June 7, 2025

      Handling PostgreSQL Migrations in Node.js

      June 6, 2025
    • Operating Systems
      1. Windows
      2. Linux
      3. macOS
      Featured

      The 2025 Wholesome Direct was chock-full of cozy casual games and aesthetic vibes

      June 8, 2025
      Recent

      The 2025 Wholesome Direct was chock-full of cozy casual games and aesthetic vibes

      June 8, 2025

      All known AMD Ryzen Z2 Series gaming handheld chips and how they are rumored to compare

      June 8, 2025

      “The original Mass Effect trilogy was absolutely an inspiration.” The RPG experts behind WH40K: Rogue Trader are hitting it big with ‘The Expanse: Osiris Reborn’

      June 8, 2025
    • Learning Resources
      • Books
      • Cheatsheets
      • Tutorials & Guides
    Home»Development»Machine Learning»How to Enable Function Calling in Mistral Agents Using the Standard JSON Schema Format

    How to Enable Function Calling in Mistral Agents Using the Standard JSON Schema Format

    June 8, 2025

    In this tutorial, we’ll demonstrate how to enable function calling in Mistral Agents using the standard JSON schema format. By defining your function’s input parameters with a clear schema, you can make your custom tools seamlessly callable by the agent—enabling powerful, dynamic interactions.

    We will be using the AviationStack API to retrieve real-time flight status data, showcasing how external APIs can be integrated as callable functions within a Mistral Agent.

    Step 1: Setting up dependencies

    Installing the Mistral library

    Copy CodeCopiedUse a different Browser
    pip install mistralai

    Loading the Mistral API Key

    You can get an API key from https://console.mistral.ai/api-keys

    Copy CodeCopiedUse a different Browser
    from getpass import getpass
    MISTRAL_API_KEY = getpass('Enter Mistral API Key: ')

    Loading the Aviation Stack API Key

    You can sign up for a free API key from their dashboard to get started.

    Copy CodeCopiedUse a different Browser
    AVIATIONSTACK_API_KEY = getpass('Enter Aviation Stack API: ')

    Step 2: Defining the Custom Function

    Next, we define a Python function get_flight_status() that calls the AviationStack API to retrieve the real-time status of a flight. The function accepts an optional flight_iata parameter and returns key details such as airline name, flight status, departure and arrival airports, and scheduled times. If no matching flight is found, it gracefully returns an error message.

    Copy CodeCopiedUse a different Browser
    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."}

    Step 3: Creating the Mistral client and Agent

    In this step, we create a Mistral Agent that uses tool-calling to fetch real-time flight information. The agent, named Flight Status Agent, is configured to use the “mistral-medium-2505” model and is equipped with a custom function tool named get_flight_status. This tool is defined using a JSON schema that accepts a single required parameter: the flight’s IATA code (e.g., “AI101”). Once deployed, the agent can automatically invoke this function whenever it detects a relevant user query, enabling seamless integration between natural language inputs and structured API responses.

    Copy CodeCopiedUse a different Browser
    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"]
                    }
                }
            }
        ]
    )

    Step 4: Starting the Conversation and handling Function Calling

    In this step, we initiate a conversation with the Flight Status Agent by asking a natural language question: “What’s the current status of AI101?”. The Mistral model detects that it should invoke the get_flight_status function and returns a function call request. We parse the arguments, run the function locally using the AviationStack API, and return the result back to the agent using FunctionResultEntry. Finally, the model incorporates the API response and generates a natural language reply with the current flight status, which we print to the console.

    Copy CodeCopiedUse a different Browser
    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)

    Check out the Notebook on GitHub. All credit for this research goes to the researchers of this project. Also, feel free to follow us on Twitter and don’t forget to join our 95k+ ML SubReddit and Subscribe to our Newsletter.

    The post How to Enable Function Calling in Mistral Agents Using the Standard JSON Schema Format appeared first on MarkTechPost.

    Source: Read MoreÂ

    Facebook Twitter Reddit Email Copy Link
    Previous Article50+ Model Context Protocol (MCP) Servers Worth Exploring
    Next Article Meet BioReason: The World’s First Reasoning Model in Biology that Enables AI to Reason about Genomics like a Biology Expert

    Related Posts

    Machine Learning

    How to Evaluate Jailbreak Methods: A Case Study with the StrongREJECT Benchmark

    June 8, 2025
    Machine Learning

    Meet BioReason: The World’s First Reasoning Model in Biology that Enables AI to Reason about Genomics like a Biology Expert

    June 8, 2025
    Leave A Reply Cancel Reply

    For security, use of Google's reCAPTCHA service is required which is subject to the Google Privacy Policy and Terms of Use.

    Continue Reading

    LLMs Can Now Talk in Real-Time with Minimal Latency: Chinese Researchers Release LLaMA-Omni2, a Scalable Modular Speech Language Model

    Machine Learning

    CVE-2025-48790 – Apache Struts SQL Injection

    Common Vulnerabilities and Exposures (CVEs)

    Multimodal Models Don’t Need Late Fusion: Apple Researchers Show Early-Fusion Architectures are more Scalable, Efficient, and Modality-Agnostic

    Machine Learning

    Sublime Text Releases Update With Support for Right Sidebar

    Development

    Highlights

    Security

    New Linux Flaws Allow Password Hash Theft via Core Dumps in Ubuntu, RHEL, Fedora

    June 2, 2025

    New Linux Flaws Allow Password Hash Theft via Core Dumps in Ubuntu, RHEL, Fedora

    Two information disclosure flaws have been identified in apport and systemd-coredump, the core dump handlers in Ubuntu, Red Hat Enterprise Linux, and Fedora, according to the Qualys Threat Research Un …
    Read more

    Published Date:
    May 31, 2025 (1 day, 21 hours ago)

    Vulnerabilities has been mentioned in this article.

    CVE-2025-5054

    CVE-2025-4598

    CVE-2025-32756

    CVE-2025-5615 – PHPGurukul Online Fire Reporting System SQL Injection Vulnerability

    June 4, 2025

    CVE-2025-1907 – Instantel Micromate Unauthenticated Command Execution

    May 29, 2025

    Gemini breaks new ground: a faster model, longer context and AI agents

    May 27, 2025
    © DevStackTips 2025. All rights reserved.
    • Contact
    • Privacy Policy

    Type above and press Enter to search. Press Esc to cancel.