Vai al contenuto principale

Tutorial su Mistral Medium 3: crea applicazioni agentiche

Sviluppa un'applicazione agent con più strumenti usando LangGraph, Tavily, lo strumento Python e l'API Mistral AI nell'ambiente DataLab.
Aggiornato 29 set 2026  · 5 min leggi

Scopri con l'IA

ChatGPTClaudePerplexity

Mistral Medium 3 offre alte prestazioni a un prezzo significativamente inferiore rispetto a molte alternative. Attualmente è disponibile tramite l'API di Mistral AI, con un costo di soli $0,40 per milione di token in input e $2 per milione di token in output. Questo pricing batte concorrenti di punta come DeepSeek v3, sia in API che in sistemi self-hosted. In sintesi, puoi ottenere fino al 90% delle prestazioni di Claude Sonnet 3.7 su vari benchmark risparmiando sensibilmente sui costi.

In questo tutorial vedremo come configurare l'API di Mistral e usare il client Python per accedere al modello. Poi useremo LangGraph per costruire un'applicazione agentica che utilizza la ricerca sul web e lo strumento Python REPL per generare risposte.

Immagine di copertina: creare un'applicazione agentica con Mistral Medium 3

Immagine dell’autore

Iniziare con Mistral Medium 3

In questa sezione impareremo a generare la chiave API, salvarla come variabile d'ambiente e poi usare il client Python per accedere a Mistral Medium 3 per generazione di testo e image understanding.

1. Generare la chiave API di Mistral AI

Registrati a La Plateforme: Mistral AI e poi vai alla sezione Billing e carica il credito di $5 con carta di credito/debito. Per questo progetto ti bastano pochi centesimi. Successivamente, vai alla scheda API keys per generare la nuova chiave API. 

2. Configurare l'ambiente

Impostare una variabile d'ambiente in DataLab è semplice. Vai alla scheda "Environment", seleziona "Environment Variables" e aggiungi una nuova variabile chiamata "MISTRAL_API_KEY" insieme alla tua chiave API. Dopo aver salvato le modifiche, assicurati di connetterla.

Impostazione della variabile d'ambiente in Datalab

In DataLab, crea una nuova cella Python e installa il pacchetto python di Mistral AI. 

!pip install -U mistralai 

3. Generazione di testo

Prima di scrivere qualsiasi codice, è fondamentale individuare i nomi degli endpoint per la chiave API di Mistral Medium 3 visitando la pagina Models Overview. In base alla documentazione, l'endpoint sembra chiamarsi mistral-medium-latest.

Lettura della documentazione per ottenere il nome del nuovo modello.

Fonte: Models Overview | Mistral AI Large Language Models

Ora creeremo un client Mistral AI usando la chiave API e genereremo una risposta in streaming a una richiesta dell'utente. 

import osfrom mistralai import Mistralapi_key = os.environ["MISTRAL_API_KEY"]model = "mistral-medium-latest"client = Mistral(api_key=api_key)stream_response = client.chat.stream(    model = model,    messages = [        {            "role": "user",            "content": "What is the best course to take from DataCamp?",        },    ])for chunk in stream_response:    print(chunk.data.choices[0].delta.content, end="" )

La risposta è molto accurata e sostanzialmente non ci è costata nulla. 

Output generato da Mistral AI

4. Image understanding

Per testare le capacità multimodali del modello, faremo uno screenshot della pagina principale del blog di DataCamp e lo forniremo al modello insieme a un prompt utente.

Screenshot della pagina blog di DataCamp

Fonte: Blog | Data Science Articles | DataCamp

Poiché il modello non può accedere direttamente al file immagine, dobbiamo prima caricare l'immagine e convertirla in una stringa codificata Base64.

import base64import requestsdef encode_image(image_path):    """Encode the image to base64."""    try:        with open(image_path, "rb") as image_file:            return base64.b64encode(image_file.read()).decode('utf-8')    except FileNotFoundError:        print(f"Error: The file {image_path} was not found.")        return None    except Exception as e:  # Added general exception handling        print(f"Error: {e}")        return None# Path to your imageimage_path = "datacamp_fp.png"# Getting the base64 stringbase64_image = encode_image(image_path)

Ora invieremo l'immagine codificata in Base64 insieme a una richiesta dell'utente al client di chat completion di Mistral AI.

# Define the messages for the chatmessages = [    {        "role": "user",        "content": [            {                "type": "text",                "text": "Explain the image in a Donald Trump style."            },            {                "type": "image_url",                "image_url": f"data:image/png;base64,{base64_image}"             }        ]    }]stream_response = client.chat.stream(    model = model,    messages = messages)for chunk in stream_response:    print(chunk.data.choices[0].delta.content, end="" )

Il modello interpreta correttamente l'immagine e genera una risposta nello stile di Donald Trump, dimostrando le sue capacità di comprensione multimodale. 

Output generato da Mistral AI

Creare un'applicazione agentica con Mistral Medium 3

In questo progetto useremo Mistral Medium 3 con LangGraph per costruire un'applicazione agentica. L'applicazione userà l'API Tavily per la ricerca sul web e Python REPL per eseguire codice in base ai prompt dell'utente.

Nuovo su LangGraph? Nessun problema! Segui il nostro Tutorial su LangGraph e impara tutto ciò che ti serve sapere sul framework.

1. Configurare l'API di Tavily

Prima di passare all'implementazione, dobbiamo configurare Tavily AI creando un account e generando una chiave API. Il processo è semplice e non devi fornire dati di pagamento o una carta di credito.

Una volta ottenuta la chiave API, salvala come variabile d'ambiente chiamata TAVILY_API_KEY localmente o nella tua configurazione DataLab, come mostrato nella sezione precedente.

2. Installare i pacchetti Python

Ora installeremo i pacchetti Python necessari per creare strumenti e agenti usando l'ecosistema LangChain.

%%capture!pip install -U \    mistralai \    langchain langchain-mistralai \    langchain-experimental \    langgraph  \    tavily-python

3. Creare il client LLM

Creeremo il client dei large language model (LLM) ChatMistralAI di LangChain specificando il nome del modello, la temperatura e abilitando le risposte in streaming. 

from langchain_mistralai import ChatMistralAIllm = ChatMistralAI(    model="mistral-medium-latest",       temperature=0.2,                     streaming=True          )

4. Inizializzare gli strumenti

Ora imposteremo gli strumenti per l'agente. Invece di crearli manualmente, possiamo usare strumenti predefiniti come Tavily Search e Python REPL dall'ecosistema LangChain. 

from langchain_community.tools import TavilySearchResultsfrom langchain_experimental.tools.python.tool import PythonREPLToolsearch_tool = TavilySearchResults(max_results=5, include_answer=True)code_tool   = PythonREPLTool()tools = [search_tool, code_tool]

5. Configurare un agente

Con il client LLM e gli strumenti pronti, possiamo ora creare il React Agent usando LangGraph.

from langgraph.prebuilt import create_react_agentagent = create_react_agent(    model=llm,           tools=tools,      )    

LangGraph Studio è un ambiente di sviluppo visuale per il framework LangGraph; segui la guida a LangGraph Studio: installazione, setup, casi d'uso per saperne di più. 

6. Estrarre i nomi degli strumenti

Prima di eseguire l'agente, definiremo una funzione Python per estrarre i nomi degli strumenti usati durante la generazione della risposta dell'agente. Questa funzione ci aiuterà a identificare quali strumenti sono stati richiamati.

def extract_tool_names(conversation: dict) -> list[str]:    """    Given a conversation dict with a 'messages' list (where each message    may be a dict or a Pydantic model), extract all unique tool names    used in any tool call.    """    tool_names = set()    for msg in conversation.get('messages', []):        # 1) Try direct attribute access (for Pydantic models)        calls = []        if hasattr(msg, 'tool_calls'):            calls = getattr(msg, 'tool_calls') or []        # 2) If that fails, the message might be a dict        elif isinstance(msg, dict):            calls = msg.get('tool_calls')            # also check nested in additional_kwargs            if not calls and isinstance(msg.get('additional_kwargs'), dict):                calls = msg['additional_kwargs'].get('tool_calls')        # 3) Finally, check additional_kwargs on objects        else:            ak = getattr(msg, 'additional_kwargs', None)            if isinstance(ak, dict):                calls = ak.get('tool_calls', [])        # Normalize to list        calls = calls or []        # Extract names        for call in calls:            # dict-style tool call            if isinstance(call, dict):                # top-level 'name'                if 'name' in call:                    tool_names.add(call['name'])                # nested under 'function'                elif 'function' in call and isinstance(call['function'], dict):                    fn = call['function']                    if 'name' in fn:                        tool_names.add(fn['name'])    return sorted(tool_names)

LangGraph Studio è un ambiente di sviluppo visuale per il framework LangGraph; segui la guida a LangGraph Studio: installazione, setup, casi d'uso per saperne di più.

7. Testare l'agente 

Testiamo l'agente facendogli una domanda su notizie dell'ultima ora. 

question = "What are the top 5 breaking news stories?"def run_agent(question):    result = agent.invoke(        {            "messages": [                {"role": "user", "content": question}            ]        }    )    tool_name = extract_tool_names(result)    # The LLM’s final answer is always in the last message    raw_answer = result["messages"][-1].content    clean_text = "".join(part for part in raw_answer if isinstance(part, str))    return tool_name, clean_texttool_name, clean_text = run_agent(question)print("Tool used ⫸", tool_name, "\n")print(clean_text)

L'agente ha usato lo strumento Tavily Search per generare una risposta sulle notizie dell'ultima ora.

Output generato dall'applicazione agentica

Ora testiamo lo strumento Python REPL chiedendo all'agente di generare ed eseguire codice Python.

question = "Write a code to display the stars in a triangle. Please execute the code too."tool_name, clean_text = run_agent(question)print("Tool used ⫸", tool_name, "\n")print(clean_text)

L'agente ha usato Mistral Medium 3 per generare il codice e Python REPL per l'esecuzione.

Output generato dall'applicazione agentica

Infine, testiamo una query che richiede all'agente di usare entrambi gli strumenti in sequenza.

question = "Get the latest gold price data for the past 7 days and use it to generate a line plot"tool_name, clean_text = run_agent(question)print("Tool used ⫸", tool_name, "\n")print(clean_text)

L'agente userà Tavily Search per ottenere i dati sul prezzo dell'oro, Mistral Medium 3 per generare il codice per la visualizzazione dei dati e Python REPL per eseguire quel codice. Il risultato includerà un grafico molto accurato insieme a un riepilogo degli strumenti utilizzati.

Tool used ⫸ ['Python_REPL', 'tavily_search_results_json'] The code generates a line plot showing the gold price per gram in USD over the last 7 days, with the x-axis representing dates and the y-axis representing the gold price. The plot includes markers for each data point, a title, labeled axes, a grid, and rotated x-axis labels for better readability.

Output generato dall'applicazione agentica usando la ricerca web e lo strumento Python REPL

Se riscontri problemi nell'esecuzione del codice, consulta il Mistral Medium 3 — DataLab Notebook per ulteriori indicazioni.

Puoi usare l'ecosistema Haystack per costruire un'applicazione agent ancora più potente e facile da implementare. Segui i tutorial per saperne di più: Tutorial Haystack AI: creare workflow agentici.

Conclusione

Dopo aver sperimentato l'API di Mistral AI e aver creato agenti per testare varie applicazioni, uno degli aspetti più notevoli è che non mi è costato nemmeno un dollaro, anche dopo aver usato 161.075 token. Il modello è economico, veloce, accurato e incredibilmente semplice da configurare. È un'ottima alternativa ad altre API costose, come DeepSeek, offrendo funzionalità comparabili.

Il panorama dell'AI si sta chiaramente spostando verso modelli più piccoli, più veloci, più accurati e convenienti, una tendenza promettente soprattutto per startup e piccole-medie imprese (PMI). Queste organizzazioni spesso dipendono fortemente dai fornitori di LLM e, man mano che i modelli diventano più accessibili, trarranno grande beneficio da margini di profitto più elevati.

Segui il percorso Developing Large Language Models per costruire i tuoi LLM con PyTorch e Hugging Face e le più recenti tecniche di deep learning e NLP.


Abid Ali Awan's photo
Author
Abid Ali Awan
LinkedIn
Twitter

In quanto data scientist certificato, sono appassionato di sfruttare tecnologie all’avanguardia per creare applicazioni di machine learning innovative. Con una solida esperienza in riconoscimento vocale, analisi e reportistica dei dati, MLOps, AI conversazionale e NLP, ho affinato le mie competenze nello sviluppo di sistemi intelligenti in grado di avere un impatto concreto. Oltre alla mia expertise tecnica, sono anche un comunicatore efficace, con il talento di rendere chiari e sintetici concetti complessi. Di conseguenza, sono diventato un blogger molto seguito in ambito data science, condividendo idee ed esperienze con una community in crescita di professionisti dei dati. Attualmente mi concentro sulla creazione e sull’editing di contenuti, lavorando con large language model per sviluppare contenuti potenti e coinvolgenti che possano aiutare aziende e singoli a valorizzare al meglio i propri dati.

Argomenti
Large Language Models
AI Agents
Intelligenza artificiale

I migliori corsi DataCamp

Programma

Ingegnere AI associato per sviluppatori

26 ore
Scopri come integrare l'intelligenza artificiale nelle applicazioni software utilizzando API e librerie open-source. Inizia oggi il tuo percorso per diventare un ingegnere AI!
Vedi i dettagliRight Arrow
Inizia Il Corso
Mostra altroRight Arrow
Correlato

blog

I 15 migliori server MCP remoti che ogni AI builder dovrebbe conoscere nel 2026

Scopri i 15 migliori server MCP remoti che stanno trasformando lo sviluppo AI nel 2026. Scopri come migliorano automazione, ragionamento, sicurezza e velocità dei workflow.
Abid Ali Awan's photo

Abid Ali Awan

15 min

blog

Tokenizzazione nel NLP: come funziona, sfide e casi d'uso

Guida al preprocessing NLP nel machine learning. Copriamo spaCy, i transformer di Hugging Face e come funziona la tokenizzazione in casi d'uso reali.
Abid Ali Awan's photo

Abid Ali Awan

10 min

blog

Che cos'è Snowflake? Guida per principianti alla piattaforma dati cloud

Esplora le basi di Snowflake, la piattaforma dati cloud. Scopri la sua architettura, le sue funzionalità e come integrarla nelle tue pipeline di dati.
Tim Lu's photo

Tim Lu

12 min

Mostra AltroMostra Altro