Google ਦੀ AI ਆਰਕੀਟੈਕਚਰ ਗਾਈਡ ਅਤੇ Anthropic ਦਾ ਇੰਜੀਨੀਅਰਿੰਗ ਬਲੌਗ "ReAct" ਲੂਪ ਨੂੰ ਆਟੋਨੋਮਸ ਏਜੰਟਾਂ (autonomous agents) ਲਈ ਇੱਕ ਪੈਟਰਨ ਵਜੋਂ ਦਰਸਾਉਂਦੇ ਹਨ, ਅਤੇ ਉਹ ਨੋਟ ਕਰਦੇ ਹਨ ਕਿ ਡਿਵੈਲਪਰਾਂ ਨੂੰ ਮਾਡਲ ਨੂੰ ਕੰਟਰੋਲ ਸੌਂਪਣ ਤੋਂ ਪਹਿਲਾਂ ਲਾਗਤ, ਲੇਟੈਂਸੀ (latency) ਅਤੇ ਗਲਤੀ ਦੇ ਜੋਖਮ ਨੂੰ ਤੋਲਣਾ ਚਾਹੀਦਾ ਹੈ। ਇਹ ਸਲਾਹ ਮਹੱਤਵਪੂਰਨ ਹੈ ਕਿਉਂਕਿ ਇੱਕ ਗਲਤ ਚੁਣਿਆ ਗਿਆ ਏਜੰਟ ਕਲਾਉਡ ਬਜਟ ਨੂੰ ਖਤਮ ਕਰ ਸਕਦਾ ਹੈ ਅਤੇ ਪ੍ਰੋਡਕਸ਼ਨ ਸਿਸਟਮਾਂ ਵਿੱਚ ਡੀਬੱਗ ਕਰਨ ਵਿੱਚ ਮੁਸ਼ਕਲ ਪੈਦਾ ਕਰਨ ਵਾਲੀਆਂ ਅਸਫਲਤਾਵਾਂ ਲਿਆ ਸਕਦਾ ਹੈ।
ਅਭਿਆਸ ਵਿੱਚ ReAct ਲੂਪ ਕਿਹੋ ਜਿਹਾ ਦਿਖਾਈ ਦਿੰਦਾ ਹੈ
ਲੂਪ ਵਿੱਚ ਤਿੰਨ ਕਦਮ ਸ਼ਾਮਲ ਹਨ:
- Thought – ਮਾਡਲ ਮੌਜੂਦਾ ਕੰਮ ਬਾਰੇ ਵਿਚਾਰ ਕਰਦਾ ਹੈ ਅਤੇ ਅਗਲਾ ਕਦਮ ਚੁਣਦਾ ਹੈ।
- Action – ਇਹ ਜਾਂ ਤਾਂ ਕਿਸੇ ਬਾਹਰੀ ਟੂਲ (ਉਦਾਹਰਨ ਲਈ, ਇੱਕ code-search API) ਨੂੰ ਕਾਲ ਕਰਦਾ ਹੈ ਜਾਂ ਇੱਕ ਅੰਤਿਮ ਜਵਾਬ ਦਿੰਦਾ ਹੈ।
- Observation – ਇਹ ਟੂਲ ਦੇ ਆਉਟਪੁੱਟ ਨੂੰ ਪੜ੍ਹਦਾ ਹੈ, ਨਤੀਜੇ ਨੂੰ ਆਪਣੀ ਮੈਮੋਰੀ ਵਿੱਚ ਸਟੋਰ ਕਰਦਾ ਹੈ, ਅਤੇ ਅਗਲੇ Thought ਨੂੰ ਫੀਡ ਕਰਦਾ ਹੈ।
Anthropic ਇਸ ਪੂਰੇ ਢਾਂਚੇ ਨੂੰ "autonomous agent" ਕਹਿੰਦਾ ਹੈ; Google ਮੁੱਖ ਚੱਕਰ ਨੂੰ "ReAct" ਦਾ ਨਾਮ ਦਿੰਦਾ ਹੈ। ਇਹ ਅੰਤਰ ਬਾਰੀਕ ਹੈ ਪਰ ਫੈਸਲਾਕੁੰਨ ਹੈ: ਇੱਕ ਰਵਾਇਤੀ ਵਰਕਫਲੋ ਵਿੱਚ ਡਿਵੈਲਪਰ ਦਾ ਕੋਡ ਕ੍ਰਮ (sequence) ਤੈਅ ਕਰਦਾ ਹੈ, ਜਦੋਂ ਕਿ ਇੱਕ ਏਜੰਟ ਵਿੱਚ ਮਾਡਲ ਤੈਅ ਕਰਦਾ ਹੈ।
ਮਾਡਲ ਨੂੰ ਪ੍ਰਕਿਰਿਆ ਚਲਾਉਣ ਲਈ ਕਦੋਂ ਛੱਡਣਾ ਚਾਹੀਦਾ ਹੈ
ਖੁੱਲ੍ਹੀਆਂ (Open-ended) ਸਮੱਸਿਆਵਾਂ ReAct-ਸ਼ੈਲੀ ਦੇ ਏਜੰਟਾਂ ਲਈ ਸਭ ਤੋਂ ਵਧੀਆ ਹਨ। ਜੇਕਰ ਤੁਸੀਂ ਸਮੇਂ ਤੋਂ ਪਹਿਲਾਂ ਹਰ ਸੰਭਵ ਸ਼ਾਖਾ (branch) ਦੀ ਗਿਣਤੀ ਨਹੀਂ ਕਰ ਸਕਦੇ, ਤਾਂ ਇੱਕ ਏਜੰਟ ਗਤੀਸ਼ੀਲ ਰੂਪ ਵਿੱਚ ਖੋਜ ਕਰ ਸਕਦਾ ਹੈ। ਆਮ ਵਰਤੋਂ ਦੇ ਮਾਮਲੇ ਸ਼ਾਮਲ ਹਨ:
- Code-fix bots ਜੋ ਇੱਕ ਰੈਪੋਜ਼ੀਟਰੀ (repository) ਨੂੰ ਸਕੈਨ ਕਰਦੇ ਹਨ, ਫੇਲ ਹੋ ਰਹੇ ਟੈਸਟ ਦਾ ਪਤਾ ਲਗਾਉਂਦੇ ਹਨ, ਅਤੇ ਬਿਲਡ ਪਾਸ ਹੋਣ ਤੱਕ ਵਾਰ-ਵਾਰ ਪੈਚ ਲਗਾਉਂਦੇ ਹਨ।
- Robotic navigation ਜਿੱਥੇ ਇੱਕ ਵਾਹਨ ਨੂੰ ਅਣਪਲਾਨ ਕੀਤੇ ਰੁਕਾਵਟਾਂ ਪ੍ਰਤੀ ਪ੍ਰਤੀਕਿਰਿਆ ਦੇਣੀ ਪੈਂਦੀ ਹੈ ਅਤੇ ਤੁਰੰਤ ਰੂਟਾਂ ਦੀ ਮੁੜ-ਯੋਜਨਾ ਬਣਾਉਣੀ ਪੈਂਦੀ ਹੈ।
ਇਹਨਾਂ ਸਥਿਤੀਆਂ ਵਿੱਚ ਇਟਰੇਸ਼ਨਾਂ (iterations) ਦੀ ਗਿਣਤੀ ਅਣਜਾਣ ਹੁੰਦੀ ਹੈ, ਅਤੇ ਕਿਸੇ ਰਸਤੇ ਨੂੰ ਹਾਰਡ-ਕੋਡ ਕਰਨਾ ਕਮਜ਼ੋਰ ਹੋ ਸਕਦਾ ਹੈ।
ਜਦੋਂ ਵਰਕਫਲੋ ਅਜੇ ਵੀ ਬਿਹਤਰ ਹੁੰਦਾ ਹੈ
ਜੇਕਰ ਕਦਮ ਅਨੁਮਾਨਿਤ ਹਨ, ਤਾਂ ਇੱਕ ਰਵਾਇਤੀ ਪਾਈਪਲਾਈਨ ਵਧੇਰੇ ਪਸੰਦੀਦਾ ਰਹਿੰਦੀ ਹੈ। ਨਿਸ਼ਚਿਤ ਕ੍ਰਮ (Fixed sequences) ਹਨ:
- ਸਸਤਾ – ਇੱਕ ਸਿੰਗਲ API ਕਾਲ ਇੱਕ ਮਲਟੀ-ਟਰਨ ਲੂਪ ਨਾਲੋਂ ਘੱਟ ਖਰਚਾ ਕਰਦੀ ਹੈ ਜੋ ਦਰਜਨਾਂ ਵਾਰ ਚੱਲ ਸਕਦੀ ਹੈ।
- ਤੇਜ਼ – ਹਰ ਇਟਰੇਸ਼ਨ ਦੇ ਨਾਲ ਲੇਟੈਂਸੀ ਵਧਦੀ ਜਾਂਦੀ ਹੈ, ਇਸ ਲਈ ਇੱਕ-ਸ਼ਾਟ ਕੁਐਰੀ (one-shot query) ਜਲਦੀ ਖਤਮ ਹੋ ਜਾਂਦੀ ਹੈ।
- ਆਡਿਟ ਕਰਨ ਵਿੱਚ ਆਸਾਨ – ਨਿਰਧਾਰਤ (deterministic) ਕੋਡ ਪਾਥ ਟੈਸਟਿੰਗ ਅਤੇ ਕੰਪਲਾਇੰਸ ਨੂੰ ਸਰਲ ਬਣਾਉਂਦੇ ਹਨ।
ਉੱਚ-ਫ੍ਰੀਕੁਐਂਸੀ ਵਾਲੇ, ਸਰਲ ਕੰਮ ਜਿਵੇਂ ਕਿ ਬਲਕ ਡਾਟਾ ਵੈਲੀਡੇਸ਼ਨ ਜਾਂ ਰੁਟੀਨ ਰਿਪੋਰਟ ਜਨਰੇਸ਼ਨ, ਇੱਕ ਆਟੋਨੋਮਸ ਏਜੰਟ ਦੀ ਬਜਾਏ ਵਰਕਫਲੋ ਵਿੱਚ ਹੋਣੇ ਚਾਹੀਦੇ ਹਨ।
ਆਟੋਨੋਮੀ ਦੀਆਂ ਲੁਕੀਆਂ ਹੋਈਆਂ ਲਾਗਤਾਂ
ਭਾਵੇਂ ਕੋਈ ਸਮੱਸਿਆ ਢੁਕਵੀਂ ਲੱਗੇ, ਡਿਵੈਲਪਰਾਂ ਨੂੰ ਤਿੰਨ ਵਿਵਹਾਰਕ ਨੁਕਸਾਨਾਂ ਲਈ ਬਜਟ ਬਣਾਉਣਾ ਚਾਹੀਦਾ ਹੈ:
- ਉੱਚ ਕੰਪਿਊਟ ਖਰਚਾ – ਹਰ Thought-Action-Observation ਚੱਕਰ ਇੱਕ ਹੋਰ ਮਾਡਲ ਇਨਫਰੈਂਸ (inference) ਦੀ ਵਰਤੋਂ ਕਰਦਾ ਹੈ, ਜਿਸ ਨਾਲ ਕਲਾਉਡ ਖਰਚਾ ਵਧ ਜਾਂਦਾ ਹੈ।
- ਵਾਧੂ ਲੇਟੈਂਸੀ – ਕੁੱਲ ਜਵਾਬ ਦਾ ਸਮਾਂ ਮਾਡਲ ਅਤੇ ਕਿਸੇ ਵੀ ਬਾਹਰੀ ਟੂਲ ਦੇ ਸਾਰੇ ਰੌਂਡ-ਟ੍ਰਿਪਸ ਦਾ ਜੋੜ ਹੁੰਦਾ ਹੈ।
- ਗਲਤੀ ਦਾ ਵਧਣਾ (Error amplification) – ਇੱਕ ਗਲਤ ਪੜ੍ਹੀ ਗਈ ਨਿਰੀਖਣ (observation) ਕ੍ਰਮਵਾਰ ਵਧ ਸਕਦੀ ਹੈ, ਜਿਸ ਨਾਲ ਬਿਲਕੁਲ ਗਲਤ ਅੰਤਿਮ ਜਵਾਬ ਮਿਲ ਸਕਦਾ ਹੈ।
ਇਹ ਕਾਰਕ ਉਸ ਸਿਧਾਂਤਕ ਲਚਕਤਾ ਨੂੰ ਖਤਮ ਕਰ ਸਕਦੇ ਹਨ ਜਿਸ ਦਾ ਏਜੰਟ ਵਾਅਦਾ ਕਰਦੇ ਹਨ।
ਡਿਵੈਲਪਰਾਂ ਲਈ ਸੇਫਟੀ ਪਲੇਬੁੱਕ
ਆਟੋਨੋਮਸ ਏਜੰਟਾਂ ਨੂੰ ਕੰਟਰੋਲ ਤੋਂ ਬਾਹਰ ਜਾਣ ਤੋਂ ਰੋਕਣ ਲਈ, ਤਿੰਨ ਸੁਰੱਖਿਆ ਉਪਾਵਾਂ ਦੀ ਸਿਫਾਰਸ਼ ਕੀਤੀ ਜਾਂਦੀ ਹੈ:
- ਇਟਰੇਸ਼ਨਾਂ ਨੂੰ ਸੀਮਤ ਕਰੋ – ਲੂਪਸ ਦੀ ਵੱਧ ਤੋਂ ਵੱਧ ਗਿਣਤੀ ਨਿਰਧਾਰਤ ਕਰੋ ਤਾਂ ਜੋ ਏਜੰਟ ਅਨੰਤ ਕਾਲੇ ਨਾ ਚੱਲ ਸਕੇ।
- ਮਜ਼ਬੂਤ ਟੂਲ ਇੰਟਰਫੇਸ ਵਿੱਚ ਨਿਵੇਸ਼ ਕਰੋ – ਪੂਰੇ ਸਿਸਟਮ ਦੀ ਭਰੋਸੇਯੋਗਤਾ ਚਲਾਕ ਪ੍ਰੌਮਪਟਿੰਗ ਟ੍ਰਿਕਸ ਦੀ ਬਜਾਏ ਸਪਸ਼ਟ, ਚੰਗੀ ਤਰ੍ਹਾਂ ਨਿਰਧਾਰਤ APIs 'ਤੇ ਨਿਰਭਰ ਕਰਦੀ ਹੈ।
- ਡਿਪਲਾਈਮੈਂਟ ਤੋਂ ਪਹਿਲਾਂ ਸੈਂਡਬਾਕਸ (Sandbox) ਕਰੋ – ਸਖ਼ਤ ਗਾਰਡਰੇਲਜ਼ ਦੇ ਨਾਲ ਇੱਕ ਅਲੱਗ ਵਾਤਾਵਰਣ ਵਿੱਚ ਏਜੰਟਾਂ ਦਾ ਟੈਸਟ ਕਰੋ, ਅਤੇ ਅਣਪਲਾਨ ਕੀਤੇ ਟੂਲ ਕਾਲਸ ਜਾਂ ਬੇਕਾਬੂ ਲੂਪਸ ਦੀ ਨਿਗਰਾਨੀ ਕਰੋ।
ਇਸ ਪਲੇਬੁੱਕ ਦੀ ਪਾਲਣਾ ਕਰਨ ਨਾਲ ਵਧਦੀਆਂ ਗਲਤੀਆਂ ਨੂੰ ਜਲਦੀ ਪਛਾਣਨਾ ਅਤੇ ਲਾਗਤ ਸੀਮਾਵਾਂ ਨੂੰ ਲਾਗੂ ਕਰਨਾ ਆਸਾਨ ਹੋ ਜਾਂਦਾ ਹੈ।
ਅਭਿਆਸ ਵਿੱਚ ਤਬਾਦਲਾ (Trade-off)
ReAct-ਸ਼ੈਲੀ ਦੇ ਏਜੰਟ ਅਤੇ ਸਕ੍ਰਿਪਟਡ ਵਰਕਫਲੋ ਵਿਚਕਾਰ ਚੋਣ ਇਸ ਗੱਲ 'ਤੇ ਨਿਰਭਰ ਕਰਦੀ ਹੈ ਕਿ ਸਮੱਸਿਆ ਖੁੱਲ੍ਹੀ ਹੈ ਜਾਂ ਅਨੁਮਾਨਿਤ, ਅਤੇ ਲਾਗਤ, ਲੇਟੈਂਸੀ ਅਤੇ ਗਲਤੀ ਦੇ ਜੋਖਮ 'ਤੇ।
ਸਾਰ (Bottom line): ReAct ਏਜੰਟ ਉਦੋਂ ਚਮਕਦੇ ਹਨ ਜਦੋਂ ਤੁਹਾਨੂੰ ਅਨੁਕੂਲਿਤ ਤਰਕ (adaptive reasoning) ਦੀ ਲੋੜ ਹੁੰਦੀ ਹੈ ਅਤੇ ਤੁਸੀਂ ਹਰ ਕਾਰਵਾਈ ਨੂੰ ਪਹਿਲਾਂ ਤੋਂ ਨਿਰਧਾਰਤ ਨਹੀਂ ਕਰ ਸਕਦੇ, ਪਰ ਉਹ ਵਧੇਰੇ ਖਰਚਾ, ਹੌਲੀ ਜਵਾਬ ਅਤੇ ਸੂਖਮ ਬੱਗਸ (bugs) ਦੀ ਵੱਧ ਸੰਭਾਵਨਾ ਲਿਆਉਂਦੇ ਹਨ। ਇੱਕ ਅਨੁਸ਼ਾਸਿਤ ਪਹੁੰਚ—ਸਪਸ਼ਟ ਰੋਕਣ ਦੇ ਨਿਯਮ, ਮਜ਼ਬੂਤ ਟੂਲ ਕੰਟਰੈਕਟ ਅਤੇ ਸੈਂਡਬਾਕਸ ਟੈਸਟਿੰਗ—ਉਸ ਸ਼ਕਤੀ ਨੂੰ ਬਜਟ ਲੀਕ ਦੀ ਬਜਾਏ ਇੱਕ ਨਿਯੰਤਰਿਤ ਸੰਪਤੀ ਵਿੱਚ ਬਦਲ ਦਿੰਦੀ ਹੈ।
