Streaming and tool calling
SSE streaming and tool calling work like on OpenAI, but support varies per model — check it before relying on it.
Un cop tens el client apuntant a OpenRouter, dues funcions que ja coneixes d’OpenAI funcionen tal qual: el streaming i el tool calling. La mateixa forma de petició, els mateixos camps de resposta. El que canvia és que ara darrere hi pot haver qualsevol model del catàleg.
Streaming: tokens en directe
Amb stream=true la resposta arriba com un flux de SSE (server-sent
events): petits chunks amb un delta que vas concatenant. És el que dóna la
sensació de “escriure en viu” a un xat. El bucle és idèntic al d’OpenAI — iteres
sobre el flux i imprimeixes cada tros que arriba.
Tool calling: que el model demani funcions
Amb tools=[...] descrius funcions (nom, descripció i un esquema JSON dels
paràmetres). El model decideix si en vol cridar alguna i, si ho fa, no respon
text sinó un tool_calls amb el nom i els arguments. Tu executes la funció de
veritat, hi tornes el resultat com un missatge de rol tool, i el model
continua la conversa amb aquesta dada a la mà.
El detall que no pots ignorar
Aquí és on el caràcter d’agregador d’OpenRouter es nota: l’API és uniforme, però les capacitats no. Un model pot suportar streaming i no tools; un altre pot acceptar tools però amb matisos de format. Si demanes una funció que el model no sap fer, el millor cas és que l’ignori i el pitjor que la petició falli.
Nota: el suport de streaming, tools i sortida estructurada varia per model. Contrasta sempre amb el catàleg d’OpenRouter quines capacitats té el model concret abans de dependre’n en producció.