ਤੁਹਾਡੇ MCP ਸਰਵਰ ਇੱਕ ਸ਼ਬਦ ਵੀ ਲਿਖਣ ਤੋਂ ਪਹਿਲਾਂ ਹੀ ਟੋਕਨ ਖ਼ਤਮ ਕਰ ਰਹੇ ਹਨ

ਤੁਸੀਂ ਉਸ ਡੇਟਾ ਲਈ ਪੈਸੇ ਦੇ ਰਹੇ ਹੋ ਜਿਸਦੀ ਤੁਸੀਂ ਕਦੇ ਵਰਤੋਂ ਨਹੀਂ ਕਰਦੇ।

ਮੈਂ ਪਿਛਲੇ ਹਫ਼ਤੇ ਇੱਕ ਏਜੰਟ ਸੈਸ਼ਨ ਨੂੰ ਟ੍ਰੈਕ ਕੀਤਾ। ਇਸ ਵਿੱਚ 47 MCP ਟੂਲ ਲੋਡ ਕੀਤੇ ਗਏ ਸਨ। ਹਰ ਟੂਲ ਨੇ ਆਪਣਾ ਪੂਰਾ JSON schema ਸਿਸਟਮ ਪ੍ਰੋਂਪਟ ਵਿੱਚ ਭੇਜ ਦਿੱਤਾ। ਇਹ ਮੇਰੇ ਦੁਆਰਾ ਇੱਕ ਸ਼ਬਦ ਵੀ ਟਾਈਪ ਕਰਨ ਤੋਂ ਪਹਿਲਾਂ ਹੋ ਗਿਆ ਸੀ।

ਹਰ ਟੂਲ schema 150 ਤੋਂ 400 ਟੋਕਨ ਵਰਤਦਾ ਹੈ। 47 ਟੂਲਾਂ ਨੇ ਮੈਨੂੰ 11,000 ਟੋਕਨਾਂ ਦਾ ਵਾਧੂ ਖਰਚਾ (overhead) ਦਿੱਤਾ। ਮਾਡਲ ਹਰ ਇੱਕ ਵਾਰ ਇਹਨਾਂ ਟੋਕਨਾਂ ਨੂੰ ਪੜ੍ਹਦਾ ਹੈ। ਭਾਵੇਂ ਤੁਸੀਂ ਸਿਰਫ਼ ਦੋ ਟੂਲ ਹੀ ਵਰਤਦੇ ਹੋ, ਫਿਰ ਵੀ ਤੁਹਾਨੂੰ ਇਸ ਕੰਟੈਕਸਟ (context) ਲਈ ਪੈਸੇ ਦੇਣੇ ਪੈਂਦੇ ਹਨ।

ਜ਼ਿਆਦਾਤਰ ਲੋਕ ਵੱਡੀਆਂ ਫਾਈਲਾਂ ਅਪਲੋਡ ਕਰਨ ਬਾਰੇ ਚਿੰਤਤ ਹੁੰਦੇ ਹਨ। ਉਹ ਟੂਲ ਮੀਨੂ ਦੀ ਆਪਣੀ ਲਾਗਤ ਨੂੰ ਭੁੱਲ ਜਾਂਦੇ ਹਨ।

ਜਦੋਂ ਤੁਸੀਂ GitHub, Slack, ਅਤੇ ਡੇਟਾਬੇਸ ਵਰਗੇ ਸਰਵਰਾਂ ਨੂੰ ਇਕੱਠਾ ਕਰਦੇ ਹੋ, ਤਾਂ ਤੁਹਾਡੇ ਕੋਲ 60 ਤੋਂ 100 ਟੂਲ ਹੋ ਜਾਂਦੇ ਹਨ। ਮੈਂ ਅਜਿਹੇ ਸੈਸ਼ਨ ਦੇਖੇ ਹਨ ਜਿੱਥੇ ਟੂਲ ਡੈਫੀਨੇਸ਼ਨ (definitions) ਨੇ ਪੂਰੇ ਕੰਟੈਕਸਟ ਬਜਟ ਦਾ 20% ਹਿੱਸਾ ਲੈ ਲਿਆ ਸੀ।

ਸਭ ਕੁਝ ਇੱਕੋ ਵਾਰ ਲੋਡ ਕਰਨਾ ਬੰਦ ਕਰੋ। ਇਸ ਦੀ ਬਜਾਏ deferred loading ਦੀ ਵਰਤੋਂ ਕਰੋ।

ਇਹ ਰਿਹਾ ਪੈਟਰਨ: • ਟੂਲਾਂ ਨੂੰ ਸਿਰਫ਼ ਨਾਮ ਅਤੇ ਇੱਕ ਛੋਟੇ ਵੇਰਵੇ (description) ਨਾਲ ਲਿਸਟ ਕਰੋ। • ਲੋੜ ਅਨੁਸਾਰ ਪੂਰੇ schema ਪ੍ਰਾਪਤ ਕਰਨ ਲਈ ਇੱਕ ਸਰਚ ਟੂਲ ਦੀ ਵਰਤੋਂ ਕਰੋ।

ਹਰ ਟੂਲ ਲਈ ਇੱਕ ਵਿਸ਼ਾਲ JSON object ਇੰਜੈਕਟ ਕਰਨ ਦੀ ਬਜਾਏ, ਤੁਸੀਂ ਇੱਕ ਸਧਾਰਨ ਨਾਮ ਪ੍ਰਦਾਨ ਕਰਦੇ ਹੋ। ਜਦੋਂ ਮਾਡਲ ਨੂੰ ਕਿਸੇ ਖਾਸ ਟੂਲ ਦੀ ਲੋੜ ਹੁੰਦੀ ਹੈ, ਤਾਂ ਇਹ ਇੱਕ ਸਰਚ ਫੰਕਸ਼ਨ ਨੂੰ ਕਾਲ ਕਰਦਾ ਹੈ। ਉਹ ਫੰਕਸ਼ਨ ਸਿਰਫ਼ ਮੇਲ ਖਾਂਦੇ ਟੂਲਾਂ ਲਈ ਪੂਰਾ schema ਵਾਪਸ ਕਰਦਾ ਹੈ।

ਨਤੀਜੇ ਬਹੁਤ ਵੱਡੇ ਹਨ: • 80 ਟੂਲ ਦੀ Eager loading: ~18,000 ਟੋਕਨ। • 80 ਟੂਲ ਦੀ Deferred loading: ~1,000 ਟੋਕਨ।

ਇਹ ਟੂਲ ਡੈਫੀਨੇਸ਼ਨ ਨੂੰ ਇੱਕ ਵੱਡੇ ਖਰਚੇ ਤੋਂ ਬਦਲ ਕੇ ਇੱਕ ਨਾਮਾਤਰ ਖਰਚੇ (rounding error) ਵਿੱਚ ਬਦਲ ਦਿੰਦਾ ਹੈ।

ਇਹ ਰਣਨੀਤੀ ਇਸ ਲਈ ਕੰਮ ਕਰਦੀ ਹੈ ਕਿਉਂਕਿ ਜ਼ਿਆਦਾਤਰ ਸੈਸ਼ਨ ਉਪਲਬਧ ਟੂਲਾਂ ਦਾ ਸਿਰਫ਼ ਇੱਕ ਛੋਟਾ ਹਿੱਸਾ ਹੀ ਵਰਤਦੇ ਹਨ। ਜੇਕਰ ਤੁਸੀਂ ਸੈਸ਼ਨ ਵਿੱਚ ਹਰ ਟੂਲ ਦੀ ਵਰਤੋਂ ਕਰਦੇ ਹੋ, ਤਾਂ ਲਾਗਤ ਉਹੀ ਰਹੇਗੀ। ਪਰ ਜ਼ਿਆਦਾਤਰ ਉਪਭੋਗਤਾਵਾਂ ਲਈ, ਇਹ ਕੰਟੈਕਸਟ ਦੀ ਵੱਡੀ ਮਾਤਰਾ ਬਚਾਉਂਦਾ ਹੈ।

ਇਹ ਨਾ ਪੁੱਛੋ ਕਿ ਮਾਡਲ ਨੂੰ ਕਿਹੜੇ ਟੂਲ ਕਾਲ ਕਰਨ ਦੀ ਲੋੜ ਹੈ। ਇਹ ਪੁੱਛੋ ਕਿ ਮਾਡਲ ਨੂੰ ਡਿਫੌਲਟ ਤੌਰ 'ਤੇ ਕੀ ਪਤਾ ਹੋਣਾ ਚਾਹੀਦਾ ਹੈ ਕਿ ਕੀ ਮੌਜੂਦ ਹੈ।

ਜ਼ਿਆਦਾਤਰ ਕੈਟਾਲਾਗ ਸਭ ਕੁਝ ਇੱਕੋ ਵਾਰ ਪ੍ਰਦਾਨ ਕਰਦੇ ਹਨ ਕਿਉਂਕਿ ਇਹ ਆਸਾਨ ਹੈ। ਇਹ ਅਜਿਹੇ ਮੀਨੂ 'ਤੇ ਆਪਣਾ ਬਜਟ ਖ਼ਤਮ ਕਰਨ ਦਾ ਸਭ ਤੋਂ ਤੇਜ਼ ਤਰੀਕਾ ਵੀ ਹੈ ਜਿਸ ਨੂੰ ਕੋਈ ਨਹੀਂ ਪੜ੍ਹਦਾ।

ਇਸਨੂੰ ਸਰਲ ਰੱਖੋ। ਇੱਕ ਨਾਮ, ਇੱਕ ਵੇਰਵਾ, ਅਤੇ ਇੱਕ ਸਰਚ ਫੰਕਸ਼ਨ ਪ੍ਰਦਾਨ ਕਰੋ। ਉਹਨਾਂ ਤਿੰਨ ਟੂਲਾਂ ਲਈ ਭੁਗਤਾਨ ਕਰੋ ਜੋ ਤੁਸੀਂ ਵਰਤਦੇ ਹੋ, ਉਹਨਾਂ ਅੱਸੀ ਟੂਲਾਂ ਲਈ ਨਹੀਂ ਜਿਨ੍ਹਾਂ ਨੂੰ ਤੁਸੀਂ ਨਜ਼ਰਅੰਦਾਜ਼ ਕਰਦੇ ਹੋ।

Source: https://dev.to/enjoy_kumawat/your-mcp-servers-are-burning-tokens-before-you-type-a-word-3076

Optional learning community: https://t.me/GyaanSetuAi