Decoratorul @tool & Metoda .bind_tools() în LangChain & LangGraph

Transformă orice funcție Python într-o unealtă standardizată pe care modelul LLM o poate inspecta și invoca autonom atunci când are nevoie de calcule sau date externe.

Sintaxă & invocare Python
from langchain_core.tools import tool
@tool
def calculeaza_tva(suma: float) -> float:
    """Calculează TVA-ul de 19% pentru o sumă în RON."""
    return round(suma * 0.19, 2)

llm_cu_unelte = llm.bind_tools([calculeaza_tva])

Descriere & Utilizare

Modelele LLM sunt excelente la limbaj, dar nu au acces la internet în timp real, nu pot interoga baza ta de date SQL și greșesc la calcule matematice complexe. Soluția este Tool Calling (Function Calling).

Adăugând decoratorul @tool deasupra unei funcții Python, LangChain inspectează automat numele funcției, adnotările de tip (type hints) ale parametrilor și docstring-ul, generând schema de invocare pentru AI.

Ulterior, prin metoda llm.bind_tools([unealta1, unealta2]), atașezi aceste unelte modelului. Când utilizatorul pune o întrebare relevantă, modelul nu ghicește răspunsul, ci returnează o cerere structurată în raspuns.tool_calls cu numele funcției și argumentele exacte.

Cum să o reții ușor

💡 Ca atunci când îi pui pe birou unui consultant un calculator științific, o carte de telefon și o cheie de la arhivă: când îl întrebi ceva specific, știe exact ce instrument să ridice și ce butoane să apese.

Opțiuni și parametri tehnici

  • Decoratorul @tool împachetează funcția într-o instanță StructuredTool.
  • Docstring-ul funcției devine instrucțiunea semantică prin care LLM-ul decide când trebuie folosită unealta.
  • .bind_tools() adaugă definițiile JSON ale uneltelor la fiecare apel efectuat către model.

Exemple practice și cazuri de utilizare

  • Definire unealtă meteo: @tool
    def vremea_acum(oras: str) -> str:
    """Returnează temperatura curentă dintr-un oraș."""
    return f'În {oras} sunt 22 grade Celsius.'
  • Verificare apel: msg = llm_cu_unelte.invoke('Cât este TVA-ul pentru 1500 RON?'); print(msg.tool_calls)

Sfaturi de configurare & capcane

Docstring-ul (comentariul dintre ghilimele triple) este obligatoriu pentru orice funcție decorată cu @tool! Fără un docstring descriptiv și fără type hints pe parametri, modelul nu va ști ce face funcția.

Comenzi și ghiduri înrudite