Saltar al contenido principal

Tutorial Mistral Medium 3: Construir aplicaciones agenticas

Desarrolla una aplicación agente multiherramienta utilizando LangGraph, Tavily, la herramienta Python y la API Mistral AI en el entorno DataLab.
Actualizado 19 may 2025  · 5 min de lectura

Mistral Medium 3 ofrece un alto rendimiento a un precio significativamente inferior al de muchas alternativas. Actualmente está disponible a través de la API Mistral AI, a un precio de sólo 0,40 $ por millón de tokens de entrada y 2 $ por millón de tokens de salida. Este precio supera al de competidores líderes como DeepSeek v3ya sea en API o en sistemas autodesplegados. En resumen, puedes conseguir hasta un 90% del rendimiento de Claude Sonnet 3.7 en varias pruebas comparativas, ahorrando considerablemente en costes.

En este tutorial, aprenderemos a configurar la API de Mistral y a utilizar el cliente Python para acceder al modelo. Después, utilizaremos LangGraph para construir una aplicación agéntica que utilice la búsqueda web y la herramienta REPL de Python para generar respuestas.

Construir una Aplicación Agenética con Mistral Medium 3 feature image

Imagen del autor

Primeros pasos con Mistral Medium 3

En esta sección, aprenderemos a generar la clave API, guardarla como variable de entorno y, a continuación, utilizar el cliente Python para acceder a Mistral Medium 3 para la generación de texto y la comprensión de imágenes.

1. Generar la clave API de Mistral AI

Inscríbete en La Plateforme: Mistral AI y luego ve a Facturación y carga el crédito de 5$ utilizando la tarjeta de crédito/débito. Sólo necesitas unos céntimos para este proyecto. Después, ve a Claves API para generar la nueva clave API.

2. Configurar el entorno

Configurar una variable de entorno en DataLab es sencillo. Sólo tienes que ir a la pestaña "Entorno", seleccionar la opción "Variables de entorno" y añadir una nueva variable llamada "MISTRAL_API_KEY" junto con tu clave API. Después de guardar los cambios, asegúrate de conectarlo.

Configurar la variable de entorno en el Datalab

En DataLab, crea la nueva celda Python e instala el paquete Python Mistral AI. 

!pip install -U mistralai 

3. Generación de texto

Antes de escribir cualquier código, es esencial localizar los nombres de los puntos finales de la clave API de Mistral Medium 3 visitando la página Descripción general de los modelos. Según la documentación, el punto final parece llamarse mistral-medium-latest.

Leyendo los documentos para obtener el nombre del modelo ne.

Fuente: Visión general de los modelos | Mistral AI Large Language Models

A continuación, crearemos un cliente Mistral AI utilizando la clave API y generaremos una respuesta en streaming a una consulta del usuario. 

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 respuesta es muy precisa y básicamente no nos costó nada. 

Resultados generados por la IA de Mistral

4. Comprensión de la imagen

Para probar las capacidades multimodales del modelo, tomaremos una captura de pantalla de la portada del blog de DataCamp y se la proporcionaremos al modelo junto con una pregunta al usuario.

Captura de pantalla de la página de blogs de DataCamp

Fuente: Blog | Artículos de Ciencia de Datos | DataCamp

Como el modelo no puede acceder directamente al archivo de imagen, primero tenemos que cargar la imagen y convertirla en una cadena codificada en 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)

Ahora enviaremos la imagen codificada en Base64 junto con una consulta de usuario al cliente de finalización de chat 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="" )

El modelo interpreta con éxito la imagen y genera una respuesta al estilo de Donald Trump, demostrando su capacidad de comprensión multimodal. 

Resultados generados por la IA de Mistral

Construir una Aplicación Agenética con Mistral Medium 3

En este proyecto, utilizaremos Mistral Medium 3 con LangGraph para construir una aplicación agéntica. Esta aplicación utilizará la API de Tavily para la búsqueda web y el REPL de Python para ejecutar código basado en las indicaciones del usuario.

¿Eres nuevo en LangGraph? No hay problema. Sigue nuestro Tutorial LangGraph y aprende todo lo que necesitas saber sobre el framework.

1. Configurar la API de Tavily

Antes de sumergirnos en la implementación, tenemos que configurar Tavily AI creando una cuenta y generando una clave API. El proceso es sencillo, y no necesitas proporcionar datos de pago ni una tarjeta de crédito.

Una vez que tengas la clave API, guárdala como una variable de entorno llamada TAVILY_API_KEY, ya sea localmente o en tu configuración de DataLab, como se muestra en la sección anterior.

2. Instalar paquetes Python

A continuación, instalaremos los paquetes Python necesarios para crear herramientas y agentes que utilicen el ecosistema LangChain.

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

3. Crear cliente LLM

Crearemos el cliente de grandes modelos lingüísticos (LLM ) de LangChain ChatMistralAI especificando el nombre del modelo, la temperatura y activando las respuestas en streaming .

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

4. Inicializar herramientas

Ahora, configuraremos las herramientas para el agente. En lugar de crear herramientas manualmente, podemos utilizar herramientas preconstruidas como Tavily Search y Python REPL del 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. Configurar un Agente

Con el cliente LLM y las herramientas listas, ahora podemos crear el Agente React utilizando LangGraph.

from langgraph.prebuilt import create_react_agentagent = create_react_agent(    model=llm,           tools=tools,      )    ```                 6. Extracting tool namesBefore executing the agent, we will define a Python function to extract the names of the tools used during the agent’s response generation. This function will help us identify which tools were invoked.```pythondef 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 es un entorno de desarrollo visual para el marco LangGraph; sigue la Guía de LangGraph Studio de: Instalación, configuración, casos de uso para saber más sobre él .

7. Probar el agente 

Pongamos a prueba al agente haciéndole una pregunta sobre noticias de última hora. 

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)

El agente ha utilizado la herramienta de Búsqueda Tavily para generar una respuesta sobre noticias de última hora.

Salida generada por la aplicación Agentic

A continuación, vamos a probar la herramienta Python REPL pidiendo al agente que genere y ejecute código 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)

El agente ha utilizado Mistral Medium 3 para la generación de código y Python REPL para la ejecución de código.

Salida generada por la aplicación Agentic

Por último, probemos una consulta que requiera que el agente utilice ambas herramientas en secuencia.

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)

El agente utilizará Tavily Search para obtener datos sobre el precio del oro, Mistral Medium 3 para generar código para la visualización de datos, y Python REPL para ejecutar ese código. El resultado incluirá un gráfico muy preciso junto con un resumen de las herramientas utilizadas.

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.

Aplicación Agentic Salida generada utilizando la herramienta de búsqueda en la Web y Python Repl

Si tienes algún problema al ejecutar el código, consulta la página Mistral Medio 3 - DataLab para obtener más información.

Puedes utilizar el ecosistema Haystack para crear una aplicación de agente más potente y fácil de implementar. Sigue los tutoriales para saber más: Tutorial de IA de Haystack: Construir flujos de trabajo agénticos.

Conclusión

Tras experimentar con la API Mistral AI y crear agentes para probar diversas aplicaciones, uno de los aspectos más destacables es que no me costó ni un solo dólar, incluso después de utilizar 161.075 tokens. El modelo es asequible, rápido, preciso e increíblemente fácil de configurar. Es una gran alternativa a otras API caras, como DeepSeek, y ofrece una funcionalidad comparable.

El panorama de la IA está evolucionando claramente hacia modelos más pequeños, rápidos, precisos y rentables, lo que constituye una tendencia prometedora, sobre todo para las nuevas empresas y las pequeñas y medianas empresas (PYME). Estas organizaciones suelen depender en gran medida de los proveedores de LLM, y a medida que estos modelos se vuelvan más asequibles, se beneficiarán enormemente de unos mayores márgenes de beneficio.

Toma el Desarrollo de grandes modelos lingüísticos para construir tus propios LLM utilizando PyTorch y Hugging Face y las últimas técnicas de aprendizaje profundo y PNL.


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

Soy un científico de datos certificado que disfruta creando aplicaciones de aprendizaje automático y escribiendo blogs sobre ciencia de datos. Actualmente me centro en la creación de contenidos, la edición y el trabajo con grandes modelos lingüísticos.

Temas

Los mejores cursos de DataCamp

Programa

Developing Large Language Models

16hrs hr
Learn to develop large language models (LLMs) with PyTorch and Hugging Face, using the latest deep learning and NLP techniques.
Ver detallesRight Arrow
Comienza el curso
Ver másRight Arrow
Relacionado

blog

¿Qué es Mistral Large 2? Cómo funciona, casos de uso y más

Mistral Large 2 es el último modelo lingüístico de Mistral AI, que compite con modelos como GPT-4o, Llama 3.1 y Claude 3 Opus.
Ryan Ong's photo

Ryan Ong

8 min

An AI juggles tasks

blog

Cinco proyectos que puedes crear con modelos de IA generativa (con ejemplos)

Aprende a utilizar modelos de IA generativa para crear un editor de imágenes, un chatbot similar a ChatGPT con pocos recursos y una aplicación clasificadora de aprobación de préstamos y a automatizar interacciones PDF y un asistente de voz con GPT.
Abid Ali Awan's photo

Abid Ali Awan

10 min

Tutorial

Construir agentes LangChain para automatizar tareas en Python

Un tutorial completo sobre la construcción de agentes LangChain multiherramienta para automatizar tareas en Python utilizando LLMs y modelos de chat utilizando OpenAI.
Bex Tuychiev's photo

Bex Tuychiev

14 min

Tutorial

Tutorial sobre cómo crear aplicaciones LLM con LangChain

Explore el potencial sin explotar de los grandes modelos lingüísticos con LangChain, un marco Python de código abierto para crear aplicaciones avanzadas de IA.
Moez Ali's photo

Moez Ali

12 min

Tutorial

Tutorial Mistral 7B: Guía paso a paso para utilizar y ajustar Mistral 7B

El tutorial cubre el acceso, la cuantización, el ajuste fino, la fusión y el almacenamiento de este potente modelo lingüístico de código abierto con 7300 millones de parámetros.
Abid Ali Awan's photo

Abid Ali Awan

12 min

Tutorial

RAG Con Llama 3.1 8B, Ollama y Langchain: Tutorial

Aprende a crear una aplicación RAG con Llama 3.1 8B utilizando Ollama y Langchain, configurando el entorno, procesando documentos, creando incrustaciones e integrando un recuperador.
Ryan Ong's photo

Ryan Ong

12 min

Ver másVer más