Digital Spirit
Module 04Agents IABloc 1LLM APIs & Fondations

Heure 03 / 20 · Heures 1–5

Tool Use / Function Calling

Objectif — Donner des capacités d'action à un LLM via les outils.

Théorie
15 min
Pratique
45 min

Objectif : Donner des capacités d'action à un LLM via les outils.

Théorie (15 min) :

  • Lire : Claude Tool Use
  • Tool Use = Le LLM peut décider d'appeler une fonction Python
  • Flow : User → LLM → [décide d'appeler outil] → Python exécute → Résultat → LLM → Réponse finale
  • Format JSON : Définir le nom, la description et les paramètres de chaque outil

Pratique (45 min) :

import anthropic
import json

tools = [
    {
        "name": "get_weather",
        "description": "Retourne la météo actuelle pour une ville",
        "input_schema": {
            "type": "object",
            "properties": {
                "city": {"type": "string", "description": "Nom de la ville"},
                "unit": {"type": "string", "enum": ["celsius", "fahrenheit"]}
            },
            "required": ["city"]
        }
    }
]

def get_weather(city, unit="celsius"):
    # Simulation — en production, appelle une vraie API météo
    return {"city": city, "temperature": 18, "unit": unit, "condition": "Ensoleillé"}

# Boucle agent simple
messages = [{"role": "user", "content": "Quelle est la météo à Bruxelles ?"}]
response = client.messages.create(model="claude-opus-4-6", max_tokens=1024, tools=tools, messages=messages)

if response.stop_reason == "tool_use":
    tool_call = response.content[-1]
    result = get_weather(**tool_call.input)
    # Renvoyer le résultat à Claude
    messages.append({"role": "assistant", "content": response.content})
    messages.append({"role": "user", "content": [{"type": "tool_result", "tool_use_id": tool_call.id, "content": json.dumps(result)}]})
    final_response = client.messages.create(model="claude-opus-4-6", max_tokens=1024, tools=tools, messages=messages)
    print(final_response.content[0].text)
  • Créer 2 outils : get_weather et send_email (simulé)
  • Tester avec une question qui nécessite les deux outils
  • Observer comment le LLM choisit quel outil appeler

Checkpoint : Tu as un agent qui appelle des outils réels.