În arhitecturile agentice clasice, apelarea unei unelte (cum ar fi o căutare web sau o verificare de bază de date) durează adesea 2-4 secunde doar pe partea de decizie a modelului. Pe Groq, decizia de a apela o funcție și generarea argumentelor JSON structurate se întâmplă în 100–250 de milisecunde.
Groq suportă nativ specificația completă de Tool Calling a OpenAI: transmiteți array-ul de funcții definite cu proprietăți și tipuri de date, iar modelul alege unealta corectă și populează argumentele fără halucinații sintactice.
De asemenea, prin parametrul response_format={"type": "json_object"}, Groq garantează că ieșirea este un obiect JSON valid, permițând construirea de microservicii de clasificare, parsare de emailuri sau extragere de entități cu latențe similare unui backend clasic scris în Go sau Rust.
Sintaxă, opțiuni și concepte cheie
| Opțiune / Concept | Descriere practică |
|---|---|
tools |
Lista schemelor JSON ce definesc funcțiile disponibile agentului. |
tool_choice="auto" |
Permite modelului să aleagă dacă răspunde în text sau invocă o unealtă. |
response_format={"type": "json_object"} |
Forțează modelul să emită exclusiv un string JSON valid parsabil. |
Parallel Tool Calling |
Abilitatea modelului de a emite multiple apeluri de unelte într-o singură fracțiune de secundă. |
Exemple practice și cod
Exemplul 1: Apel de funcție pentru interogarea stocului de produse pe Groq
Cum se configurează o unealtă structurată în SDK-ul Groq.
from groq import Groq
import json
client = Groq()
unelte = [{
"type": "function",
"function": {
"name": "verifica_stoc",
"description": "Verifică disponibilitatea unui produs în depozit",
"parameters": {
"type": "object",
"properties": {
"cod_sku": {"type": "string", "description": "Codul unic al produsului"},
"cantitate": {"type": "integer"}
},
"required": ["cod_sku"]
}
}
}]
r = client.chat.completions.create(
model="llama-3.3-70b-versatile",
messages=[{"role": "user", "content": "Mai avem 5 bucăți din produsul PROD-8899 în stoc?"}],
tools=unelte,
tool_choice="auto"
)
apel = r.choices[0].message.tool_calls[0]
print(f"Unealtă selectată: {apel.function.name}")
print(f"Argumente JSON: {apel.function.arguments}")
Rezultat & Impact
Decizie și apel de unealtă generate în sub 180ms cu argumente parsate corect.
Greșeli frecvente și bune practici
- Omiterea instruirii modelului de a returna JSON în mesajul de sistem atunci când se folosește `response_format={„type”: „json_object”}`, ceea ce poate genera o eroare de validare pe API.
- Definirea unor scheme de unelte prea ambigue care fac ca modelul să ezite între două funcții similare.