Ajouter des docstrings et des annotations de type
Il est temps de rendre votre outil convert_currency() plus simple à utiliser pour les LLM grâce aux docstrings et aux annotations de type. Sans cela, le LLM pourrait ne pas savoir quel outil appeler efficacement, ou transmettre des valeurs incorrectement aux arguments — dans les deux cas, les performances de l'application deviennent peu fiables !
Un serveur MCP a déjà été instancié avec FastMCP et assigné à mcp.
Cet exercice fait partie du cours
<cours>Introduction au Model Context Protocol (MCP)</cours>Instructions de l’exercice
- Ajoutez les types appropriés aux arguments de la fonction et à l'objet de retour.
- Complétez la docstring pour faire correspondre les trois arguments de la fonction à leurs définitions.
Exercice interactif pratique
Essayez cet exercice en complétant ce code d’exemple.
# Adding typing to the function arguments and return object
@mcp.tool()
def convert_currency(amount: ____, from_currency: ____, to_currency: ____) -> ____:
# Complete the docstring with the function arguments
"""
Convert an amount from one currency to another using current exchange rates.
Args:
____: The amount to convert
____: Source currency code (e.g., 'USD', 'EUR', 'GBP')
____: Target currency code (e.g., 'USD', 'EUR', 'GBP')
Returns:
A string with the conversion result and exchange rate
"""
url = f"https://api.frankfurter.dev/v1/latest?base={from_currency}&symbols={to_currency}"
response = requests.get(url)
data = response.json()
rate = data['rates'].get(to_currency)
if rate is None:
return f"Could not find exchange rate for {from_currency} to {to_currency}"
converted_amount = amount * rate
return f"{amount} {from_currency} = {converted_amount:.2f} {to_currency} (Rate: {rate})"
print(convert_currency(amount=100, from_currency="EUR", to_currency="USD"))