Lewati ke konten utama

Tutorial Mistral Medium 3: Membangun Aplikasi Agen

Kembangkan aplikasi agen multi-tool menggunakan LangGraph, Tavily, alat Python, dan Mistral AI API di lingkungan DataLab.
Diperbarui 28 Sep 2026  · 5 mnt Baca

Jelajahi bersama AI

ChatGPTClaudePerplexity

Mistral Medium 3 menawarkan performa tinggi dengan harga yang jauh lebih murah dibanding banyak alternatif. Saat ini tersedia melalui Mistral AI API, dengan harga hanya $0,40 per satu juta token input dan $2 per satu juta token output. Harga ini mengungguli para pesaing terkemuka seperti DeepSeek v3, baik di API maupun sistem self-hosted. Singkatnya, Anda bisa meraih hingga 90% performa Claude Sonnet 3.7 pada berbagai tolok ukur sambil memangkas biaya secara signifikan.

Dalam tutorial ini, kita akan mempelajari cara menyiapkan Mistral API dan menggunakan klien Python untuk mengakses model. Setelah itu, kita akan menggunakan LangGraph untuk membangun aplikasi berbasis agen yang memanfaatkan penelusuran web dan alat Python REPL untuk menghasilkan jawaban.

Membangun Aplikasi Agen dengan Mistral Medium 3 gambar unggulan

Gambar oleh Penulis

Mulai Menggunakan Mistral Medium 3

Pada bagian ini, kita akan mempelajari cara membuat kunci API, menyimpannya sebagai variabel lingkungan, lalu menggunakan klien Python untuk mengakses Mistral Medium 3 guna menghasilkan teks dan memahami gambar.

1. Membuat kunci Mistral AI API

Daftar ke La Plateforme: Mistral AI lalu buka bagian Billing dan isi kredit $5 menggunakan kartu kredit/debit. Anda hanya membutuhkan beberapa sen untuk proyek ini. Setelah itu, buka tab API keys untuk membuat kunci API baru. 

2. Menyiapkan environment

Menyiapkan variabel lingkungan di DataLab sangat mudah. Masuk ke tab "Environment", pilih opsi "Environment Variables", lalu tambahkan variabel baru bernama "MISTRAL_API_KEY" beserta kunci API Anda. Setelah menyimpan perubahan, pastikan untuk menghubungkannya.

Menyiapkan variabel lingkungan di Datalab

Di DataLab, buat sel Python baru dan pasang paket python Mistral AI. 

!pip install -U mistralai 

3. Generasi teks

Sebelum menulis kode, penting untuk menemukan nama endpoint kunci API Mistral Medium 3 dengan mengunjungi halaman Models Overview. Berdasarkan dokumentasi, endpoint tampaknya bernama mistral-medium-latest.

Membaca dokumentasi untuk mendapatkan nama model terbaru.

Sumber: Models Overview | Mistral AI Large Language Models

Selanjutnya, kita akan membuat klien Mistral AI menggunakan kunci API dan menghasilkan respons streaming untuk kueri pengguna. 

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="" )

Responsnya sangat akurat dan biayanya praktis nol. 

Output yang Dihasilkan Mistral AI

4. Pemahaman gambar

Untuk menguji kemampuan multimodal model, kita akan mengambil tangkapan layar halaman depan blog DataCamp dan memberikannya kepada model bersama dengan prompt pengguna.

Tangkapan layar halaman blog DataCamp

Sumber: Blog | Artikel Ilmu Data | DataCamp

Karena model tidak dapat mengakses berkas gambar secara langsung, kita perlu memuat gambar terlebih dahulu dan mengonversinya menjadi string yang dikodekan 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)

Sekarang kita akan mengirim gambar yang dikodekan Base64 beserta kueri pengguna ke klien chat completion 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="" )

Model berhasil menafsirkan gambar dan menghasilkan respons dalam gaya Donald Trump, menunjukkan kemampuan pemahaman multimodalnya. 

Output yang Dihasilkan Mistral AI

Membangun Aplikasi Agen dengan Mistral Medium 3

Dalam proyek ini, kita akan menggunakan Mistral Medium 3 dengan LangGraph untuk membangun aplikasi agen. Aplikasi ini akan menggunakan Tavily API untuk penelusuran web dan Python REPL untuk mengeksekusi kode berdasarkan prompt pengguna.

Baru di LangGraph? Tidak masalah! Ikuti Tutorial LangGraph dan pelajari semua yang perlu Anda ketahui tentang framework ini.

1. Menyiapkan Tavily API

Sebelum masuk ke implementasi, kita perlu menyiapkan Tavily AI dengan membuat akun dan menghasilkan kunci API. Prosesnya sederhana, dan Anda tidak perlu memberikan detail pembayaran atau kartu kredit.

Setelah memiliki kunci API, simpan sebagai variabel lingkungan bernama TAVILY_API_KEY baik secara lokal maupun di pengaturan DataLab Anda, seperti yang ditunjukkan pada bagian sebelumnya.

2. Memasang paket Python

Berikutnya, kita akan memasang paket Python yang diperlukan untuk membuat tools dan agen menggunakan ekosistem LangChain.

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

3. Membuat klien LLM

Kita akan membuat klien model bahasa besar (LLM) ChatMistralAI dari LangChain dengan menentukan nama model, temperature, dan mengaktifkan respons streaming. 

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

4. Inisialisasi tools

Sekarang, kita akan menyiapkan tools untuk agen. Alih-alih membuat tools secara manual, kita bisa menggunakan tools siap pakai seperti Tavily Search dan Python REPL dari ekosistem 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. Menyiapkan Agen

Dengan klien LLM dan tools siap, kini kita dapat membuat React Agent menggunakan LangGraph.

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

LangGraph Studio adalah lingkungan pengembangan visual untuk framework LangGraph; ikuti Panduan LangGraph Studio: Instalasi, Penyiapan, Use Case untuk mempelajarinya lebih lanjut. 

6. Mengekstrak nama tool

Sebelum mengeksekusi agen, kita akan mendefinisikan fungsi Python untuk mengekstrak nama-nama tool yang digunakan selama proses generasi respons agen. Fungsi ini membantu mengidentifikasi tool mana saja yang dipanggil.

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 adalah lingkungan pengembangan visual untuk framework LangGraph; ikuti Panduan LangGraph Studio: Instalasi, Penyiapan, Use Case untuk mempelajarinya lebih lanjut.

7. Menguji agen 

Mari uji agen dengan menanyakan pertanyaan tentang berita terkini. 

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)

Agen telah menggunakan tool Tavily Search untuk menghasilkan respons tentang berita terkini.

Output yang Dihasilkan Aplikasi Agen

Berikutnya, mari uji tool Python REPL dengan meminta agen untuk membuat dan mengeksekusi kode 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)

Agen telah menggunakan Mistral Medium 3 untuk pembuatan kode dan Python REPL untuk eksekusi kode.

Output yang Dihasilkan Aplikasi Agen

Terakhir, mari uji kueri yang mengharuskan agen menggunakan kedua tool secara berurutan.

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)

Agen akan menggunakan Tavily Search untuk mendapatkan data harga emas, Mistral Medium 3 untuk menghasilkan kode visualisasi data, dan Python REPL untuk mengeksekusi kode tersebut. Hasilnya akan mencakup bagan yang sangat akurat beserta ringkasan tool yang digunakan.

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 Aplikasi Agen menggunakan alat Penelusuran Web dan Python Repl

Jika Anda mengalami kendala saat menjalankan kode, lihat Mistral Medium 3 — DataLab Notebook untuk panduan tambahan.

Anda dapat menggunakan ekosistem Haystack untuk membangun aplikasi agen yang lebih kuat dan mudah diimplementasikan. Ikuti tutorial berikut untuk mempelajari lebih lanjut: Tutorial Haystack AI: Membangun Alur Kerja Agen.

Kesimpulan

Setelah bereksperimen dengan Mistral AI API dan membangun agen untuk menguji berbagai aplikasi, salah satu hal paling mencolok adalah biayanya tidak mencapai satu dolar pun—bahkan setelah menggunakan 161.075 token. Model ini terjangkau, cepat, akurat, dan sangat mudah disiapkan. Ini menjadi alternatif yang bagus untuk API mahal lainnya, seperti DeepSeek, sambil menawarkan fungsionalitas yang sebanding.

Lanskap AI jelas bergerak menuju model yang lebih kecil, lebih cepat, lebih akurat, dan hemat biaya, yang merupakan tren menjanjikan, terutama bagi startup dan usaha kecil-menengah (UKM). Organisasi-organisasi ini sering sangat bergantung pada penyedia LLM, dan seiring model menjadi lebih terjangkau, mereka akan sangat diuntungkan melalui margin laba yang lebih tinggi.

Ikuti skill track Developing Large Language Models untuk membangun LLM Anda sendiri menggunakan PyTorch dan Hugging Face serta teknik deep learning dan NLP terbaru.


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

Sebagai data scientist tersertifikasi, saya bersemangat memanfaatkan teknologi mutakhir untuk menciptakan aplikasi machine learning yang inovatif. Dengan latar belakang kuat di pengenalan ucapan, analisis dan pelaporan data, MLOps, conversational AI, dan NLP, saya mengasah keterampilan dalam mengembangkan sistem cerdas yang berdampak nyata. Selain keahlian teknis, saya juga komunikator andal yang mampu menyederhanakan konsep kompleks menjadi bahasa yang jelas dan ringkas. Karena itu, saya menjadi blogger yang dicari di bidang data science, membagikan wawasan dan pengalaman kepada komunitas profesional data yang terus berkembang. Saat ini, saya berfokus pada pembuatan dan penyuntingan konten, bekerja dengan large language model untuk mengembangkan konten yang kuat dan menarik agar membantu bisnis dan individu memaksimalkan data mereka.

Topik
Large Language Models
Agen AI
Kecerdasan Buatan

Kursus Teratas di DataCamp

Program

Insinyur Kecerdasan Buatan (AI) untuk Pengembang

26 jam
Pelajari cara mengintegrasikan kecerdasan buatan (AI) ke dalam aplikasi perangkat lunak menggunakan antarmuka pemrograman aplikasi (API) dan perpustakaan sumber terbuka. Mulailah perjalanan Anda untuk menjadi seorang Insinyur Kecerdasan Buatan (AI) hari ini!
Lihat DetailRight Arrow
Mulai Kursus
Lihat SelengkapnyaRight Arrow
Terkait

blogs

12 Alternatif ChatGPT Terbaik yang Bisa Anda Coba pada 2026

Artikel ini menyajikan daftar alternatif ChatGPT yang akan meningkatkan produktivitas Anda.
Javier Canales Luna's photo

Javier Canales Luna

14 mnt

blogs

40 Pertanyaan Wawancara DBMS Teratas di 2026

Kuasai pertanyaan wawancara basis data, dari konsep SQL dasar hingga skenario desain sistem tingkat lanjut. Panduan mendalam ini mencakup semua yang Anda perlukan untuk sukses di wawancara DBMS dan meraih peran berikutnya.
Dario Radečić's photo

Dario Radečić

15 mnt

blogs

Spaghetti Plot dan Jalur Badai

Temukan alasan mengapa Anda sebaiknya (tidak) menggunakan spaghetti plot untuk menyampaikan ketidakpastian jalur prediksi badai serta dampaknya terhadap interpretasi.
Hugo Bowne-Anderson's photo

Hugo Bowne-Anderson

13 mnt

blogs

Tutorial Korelasi di R

Dapatkan pengenalan dasar-dasar korelasi di R: pelajari lebih lanjut tentang koefisien korelasi, matriks korelasi, plotting korelasi, dan sebagainya.
David Woods's photo

David Woods

13 mnt

Lihat SelengkapnyaLihat Selengkapnya