Web playgrounds ਡੈਮੋਸ ਲਈ ਵਧੀਆ ਹੁੰਦੇ ਹਨ। ਤੁਸੀਂ ਟੈਕਸਟ ਦਾ ਇੱਕ ਬਲਾਕ ਪੇਸਟ ਕਰਦੇ ਹੋ, ਮਾਡਲ ਨੂੰ ਇੱਕ ਸਾਫ਼ ਸਾਰ (summary) ਬਣਾਉਂਦੇ ਦੇਖਦੇ ਹੋ, ਅਤੇ ਟੈਬ ਬੰਦ ਕਰ ਦਿੰਦੇ ਹੋ। ਪਰ ਇਹ ਇੰਜੀਨੀਅਰਿੰਗ ਨਹੀਂ ਹੈ। ਪ੍ਰੋਡਕਸ਼ਨ ਕੰਮ ਦਾ ਮਤਲਬ ਹੈ APIs, error handling, ਅਤੇ ਅਜਿਹਾ ਕੋਡ ਜੋ ਤੁਹਾਡੇ ਸੌਣ ਵੇਲੇ ਵੀ ਚੱਲਦਾ ਰਹੇ। ਜੇਕਰ ਤੁਹਾਨੂੰ ਮੀਟਿੰਗ ਟ੍ਰਾਂਸਕ੍ਰਿਪਟਸ, ਸਪੋਰਟ ਟਿਕਟਾਂ, ਜਾਂ ਖੋਜ ਪੱਤਰਾਂ (research papers) ਨੂੰ ਇੱਕ ਨਿਸ਼ਚਿਤ ਸਮੇਂ ਅਨੁਸਾਰ ਪ੍ਰੋਸੈਸ ਕਰਨਾ ਹੈ, ਤਾਂ ਤੁਹਾਨੂੰ ਇੱਕ ਪਾਈਪਲਾਈਨ ਦੀ ਲੋੜ ਹੈ।
ਇਹ ਗਾਈਡ ਬਿਲਕੁਲ ਉਹੀ ਬਣਾਉਣ ਬਾਰੇ ਦੱਸਦੀ ਹੈ: Python, AWS SDK for Python (boto3), ਅਤੇ Amazon Bedrock ਦੀ ਵਰਤੋਂ ਕਰਕੇ ਇੱਕ ਹਲਕਾ, ਆਟੋਮੇਟਡ ਡੌਕਯੂਮੈਂਟ ਸਮਰੀਜ਼ੇਸ਼ਨ ਸਕ੍ਰਿਪਟ। ਅਸੀਂ Anthropic ਦੇ Claude 3 Haiku ਦੀ ਵਰਤੋਂ ਕਰਾਂਗੇ, ਜੋ ਟੈਕਸਟ ਸਮਰੀਜ਼ੇਸ਼ਨ ਕੰਮਾਂ ਲਈ ਸਪੀਡ ਅਤੇ ਲਾਗਤ (cost) ਦਾ ਸਹੀ ਸੰਤੁਲਨ ਬਣਾਉਂਦਾ ਹੈ।
Bedrock ਅਤੇ Claude 3 Haiku ਕਿਉਂ?
Amazon Bedrock ਇੱਕ ਮੈਨੇਜਡ ਸਰਵਿਸ ਹੈ ਜੋ ਇੱਕ ਸਿੰਗਲ AWS APIs ਦੇ ਸਮੂਹ ਰਾਹੀਂ ਫਾਊਂਡੇਸ਼ਨ ਮਾਡਲਾਂ ਨੂੰ ਪ੍ਰਦਾਨ ਕਰਦੀ ਹੈ। ਵੱਖ-ਵੱਖ ਐਂਡਪੁਆਇੰਟਸ ਨੂੰ ਜੋੜਨ ਅਤੇ ਵੱਖਰੇ ਬਿਲਿੰਗ ਅਤੇ ਸੁਰੱਖਿਆ ਮਾਡਲਾਂ ਨਾਲ ਜੂਝਣ ਦੀ ਬਜਾਏ, ਤੁਸੀਂ ਸਟੈਂਡਰਡ IAM ਕੰਟਰੋਲਸ ਦੇ ਨਾਲ ਇੱਕ AWS ਐਂਡਪੁਆਇੰਟ ਨੂੰ ਕਾਲ ਕਰਦੇ ਹੋ। ਤੁਹਾਡਾ ਡਾਟਾ ਤੁਹਾਡੇ AWS ਵਾਤਾਵਰਣ (environment) ਦੇ ਅੰਦਰ ਹੀ ਰਹਿੰਦਾ ਹੈ।
Claude 3 Haiku, Anthropic ਦੇ Claude 3 ਪਰਿਵਾਰ ਦਾ ਸਭ ਤੋਂ ਹਲਕਾ ਮਾਡਲ ਹੈ। ਇਹ ਤੇਜ਼ੀ ਅਤੇ ਘੱਟ ਲਾਗਤ ਲਈ ਬਣਾਇਆ ਗਿਆ ਹੈ, ਜੋ ਇਸਨੂੰ ਉੱਚ-ਵਾਲੀਅਮ ਸਮਰੀਜ਼ੇਸ਼ਨ ਲਈ ਆਦਰਸ਼ ਬਣਾਉਂਦਾ ਹੈ ਜਿੱਥੇ ਤੁਸੀਂ ਸਧਾਰਨ ਪੜ੍ਹਨ ਦੇ ਕੰਮਾਂ ਲਈ ਵੱਡੇ ਮਾਡਲਾਂ ਦੀ ਸ਼ਕਤੀ ਲਈ ਭੁਗਤਾਨ ਕੀਤੇ ਬਿਨਾਂ ਭਰੋਸੇਮੰਦ ਆਉਟਪੁੱਟ ਚਾਹੁੰਦੇ ਹੋ।
ਤੁਹਾਨੂੰ ਕੀ ਚਾਹੀਦਾ ਹੈ
ਕੋਈ ਵੀ ਕੋਡ ਲਿਖਣ ਤੋਂ ਪਹਿਲਾਂ, ਯਕੀਨੀ ਬਣਾਓ ਕਿ ਤੁਹਾਡੇ ਕੋਲ ਹੇਠ ਲਿਖੀਆਂ ਚੀਜ਼ਾਂ ਤਿਆਰ ਹਨ:
- ਇੱਕ ਐਕਟਿਵ AWS account।
- ਲੋਕਲਲੀ Python 3.9 ਜਾਂ ਇਸ ਤੋਂ ਉੱਚਾ ਇੰਸਟਾਲ ਕੀਤਾ ਹੋਇਆ।
- AWS CLI, ਜਿਸ ਵਿੱਚ ਅਜਿਹੇ credentials ਹੋਣ ਜਿਨ੍ਹਾਂ ਕੋਲ Bedrock ਮਾਡਲਾਂ ਨੂੰ ਇਵੋਕ (invoke) ਕਰਨ ਦੀ ਇਜਾਜ਼ਤ ਹੋਵੇ। ਜੇਕਰ ਤੁਸੀਂ ਅਜੇ ਤੱਕ
aws configureਨਹੀਂ ਚਲਾਇਆ ਹੈ, ਤਾਂ ਹੁਣੇ ਚਲਾਓ। ਜੇਕਰ ਬਾਅਦ ਵਿੱਚ ਤੁਹਾਨੂੰ ਪਰਮਿਸ਼ਨ ਦੀਆਂ ਗਲਤੀਆਂ ਆਉਂਦੀਆਂ ਹਨ, ਤਾਂ ਤੁਹਾਨੂੰ ਸ਼ਾਇਦ ਆਪਣੇ IAM user ਜਾਂ role ਨਾਲ ਉਚਿਤ Bedrock invocation permissions ਜੋੜਨ ਦੀ ਲੋੜ ਪਵੇਗੀ। - AWS Bedrock ਕੰਸੋਲ ਦੇ ਅੰਦਰ ਖਾਸ ਤੌਰ 'ਤੇ Anthropic Claude 3 Haiku ਲਈ ਮਾਡਲ ਐਕਸੈਸ (Model access) ਇਨੇਬਲ ਕੀਤਾ ਹੋਇਆ। AWS ਦੀਆਂ ਸ਼ਰਤਾਂ ਅਨੁਸਾਰ, ਕਿਸੇ ਵੀ ਮਾਡਲ ਪ੍ਰੋਵਾਈਡਰ ਨੂੰ ਕਾਲ ਕਰਨ ਤੋਂ ਪਹਿਲਾਂ ਤੁਹਾਨੂੰ ਹਰ ਇੱਕ ਲਈ ਸਪੱਸ਼ਟ ਤੌਰ 'ਤੇ ਆਪਸ਼ਨ ਚੁਣਨੀ ਪੈਂਦੀ ਹੈ।
ਸਟੈਪ 1: ਮਾਡਲ ਐਕਸੈਸ (Model Access) ਇਨੇਬਲ ਕਰੋ
Bedrock ਤੁਹਾਨੂੰ ਬਿਨਾਂ ਕਿਸੇ ਸੈਟਿੰਗ ਦੇ ਮਾਡਲਾਂ ਨੂੰ ਕਾਲ ਕਰਨ ਦੀ ਇਜਾਜ਼ਤ ਨਹੀਂ ਦਿੰਦਾ। ਤੁਹਾਨੂੰ ਪਹਿਲਾਂ ਕੰਸੋਲ ਵਿੱਚ ਸਵਿੱਚ ਆਨ ਕਰਨਾ ਹੋਵੇਗਾ।
- AWS Management Console ਵਿੱਚ ਲੌਗਇਨ ਕਰੋ।
- Amazon Bedrock ਲੱਭਣ ਲਈ ਸਰਚ ਬਾਰ ਦੀ ਵਰਤੋਂ ਕਰੋ।
- ਖੱਬੇ ਨੈਵੀਗੇਸ਼ਨ ਪੈਨਲ ਵਿੱਚ, Model access ਚੁਣੋ।
- Modify model access 'ਤੇ ਕਲਿੱਕ ਕਰੋ।
- Anthropic (Claude 3 Haiku) ਵਾਲੇ ਬਾਕਸ ਨੂੰ ਟਿੱਕ ਕਰੋ ਅਤੇ ਆਪਣੀ ਬੇਨਤੀ (request) ਸਬਮਿਟ ਕਰੋ।
ਇੱਕ ਵਾਰ ਸਟੇਟਸ
ਇਹ ਪਾਈਪਲਾਈਨ ਜਾਣਬੁੱਝ ਕੇ ਸਰਲ ਰੱਖੀ ਗਈ ਹੈ, ਪਰ ਇਹ ਅਸਲ ਆਟੋਮੇਸ਼ਨ ਲਈ ਇੱਕ ਨੀਂਹ ਹੈ। ਇੱਥੇ ਦੱਸਿਆ ਗਿਆ ਹੈ ਕਿ ਤੁਸੀਂ ਬਿਨਾਂ ਕਿਸੇ ਵਾਧੂ ਬੋਝ ਦੇ ਇਸਨੂੰ ਕਿਵੇਂ ਵਧਾ ਸਕਦੇ ਹੋ।
ਬੈਚ ਪ੍ਰੋਸੈਸਿੰਗ (Batch processing)। ਇੱਕ ਸਿੰਗਲ ਫਾਈਲ ਪੜ੍ਹਨ ਦੀ ਜਗ੍ਹਾ ਡਾਇਰੈਕਟਰੀ (directory) ਉੱਤੇ ਲੂਪ (loop) ਦੀ ਵਰਤੋਂ ਕਰੋ। ਇਨਪੁਟ ਫੋਲਡਰ ਵਿੱਚ ਪੰਜਾਹ PDFs ਜਾਂ ਟੈਕਸਟ ਫਾਈਲਾਂ ਪਾਓ, ਉਹਨਾਂ ਰਾਹੀਂ ਇਟਰੇਟ (iterate) ਕਰੋ, ਅਤੇ ਸਾਰਾਂਸ਼ਾਂ (summaries) ਨੂੰ ਆਉਟਪੁੱਟ ਫੋਲਡਰ ਵਿੱਚ ਲਿਖੋ। ਜੇਕਰ ਤੁਸੀਂ ਸਿੱਧੇ ਤੌਰ 'ਤੇ PDFs ਨੂੰ ਇਨਜੈਸਟ (ingest) ਕਰਨਾ ਚਾਹੁੰਦੇ ਹੋ, ਤਾਂ ਤੁਹਾਨੂੰ Bedrock ਤੱਕ ਪਹੁੰਚਣ ਤੋਂ ਪਹਿਲਾਂ ਕੱਚਾ ਟੈਕਸਟ ਕੱਢਣ ਲਈ PyPDF2 ਜਾਂ pdfplumber ਵਰਗੀ ਲਾਇਬ੍ਰੇਰੀ ਨਾਲ ਇੱਕ ਪ੍ਰੀ-ਪ੍ਰੋਸੈਸਿੰਗ ਸਟੈਪ ਦੀ ਲੋੜ ਹੋਵੇਗੀ।
ਚੰਕਿੰਗ ਰਣਨੀਤੀ (Chunking strategy)। ਬਹੁਤ ਲੰਬੇ ਦਸਤਾਵੇਜ਼ ਮਾਡਲ ਦੀ ਕੰਟੈਕਸਟ ਲਿਮਿਟ (context limit) ਤੋਂ ਬਾਹਰ ਜਾ ਸਕਦੇ ਹਨ। ਜਦੋਂ ਅਜਿਹਾ ਹੁੰਦਾ ਹੈ, ਤਾਂ ਟੈਕਸਟ ਨੂੰ ਪੈਰਾਗ੍ਰਾਫ ਜਾਂ ਸੈਕਸ਼ਨ ਦੇ ਅਧਾਰ 'ਤੇ ਤਰਕਪੂਰਨ ਚੰਕਸ (chunks) ਵਿੱਚ ਵੰਡੋ, ਹਰੇਕ ਚੰਕ ਦਾ ਵੱਖਰੇ ਤੌਰ 'ਤੇ ਸਾਰਾਂਸ਼ ਬਣਾਓ, ਅਤੇ ਫਿਰ ਅੰਤਿਮ ਸੰਸ਼ਲੇਸ਼ਣ (synthesis) ਲਈ ਵਿਚਕਾਰਲੇ ਸਾਰਾਂਸ਼ਾਂ ਨੂੰ ਮਾਡਲ ਰਾਹੀਂ ਦੁਬਾਰਾ ਭੇਜੋ। ਇਹ ਦੋ-ਪੜਾਵੀ ਪਹੁੰਚ ਤੁਹਾਨੂੰ ਟੋਕਨ ਲਿਮਿਟਾਂ ਦੇ ਅੰਦਰ ਰੱਖਦੀ ਹੈ ਅਤੇ ਪੂਰੇ ਦਸਤਾਵੇਜ਼ ਦੀ ਕਵਰੇਜ ਨੂੰ ਵੀ ਬਰਕਰਾਰ ਰੱਖਦੀ ਹੈ।
ਗਲਤੀਆਂ ਨੂੰ ਸੰਭਾਲਣਾ (Error handling)। ਪ੍ਰੋਡਕਸ਼ਨ ਕੋਡ ਨੂੰ ਖਾਸ ਤੌਰ 'ਤੇ boto3.exceptions.ClientError ਨੂੰ ਕੈਚ (catch) ਕਰਨਾ ਚਾਹੀਦਾ ਹੈ। ਜੇਕਰ ਤੁਸੀਂ ਬਹੁਤ ਜ਼ਿਆਦਾ ਤੇਜ਼ੀ ਨਾਲ API ਨੂੰ ਕਾਲ ਕਰਦੇ ਹੋ, ਤਾਂ AWS ਤੁਹਾਡੀਆਂ ਬੇਨਤੀਆਂ ਨੂੰ ਥਰੋਟਲ (throttle) ਕਰ ਸਕਦਾ ਹੈ। ਆਪਣੀ converse ਕਾਲ ਨੂੰ ਐਕਸਪੋਨੈਂਸ਼ੀਅਲ ਬੈਕਆਫ (exponential backoff) ਦੇ ਰੀਟ੍ਰਾਈ ਲੂਪ (retry loop) ਵਿੱਚ ਰੱਖੋ, ਜਾਂ ਰੇਟ ਲਿਮਿਟਾਂ ਨੂੰ ਸੁਚਾਰੂ ਰੂਪ ਵਿੱਚ ਸੰਭਾਲਣ ਲਈ tenacity ਵਰਗੀ ਲਾਇਬ੍ਰੇਰੀ ਦੀ ਵਰਤੋਂ ਕਰੋ।
ਪ੍ਰੌਮਪਟ ਇੰਜੀਨੀਅਰਿੰਗ (Prompt engineering)। ਇੱਕ ਮਾਮੂਲੀ ਸਾਰਾਂਸ਼ ਅਤੇ ਇੱਕ ਉਪਯੋਗੀ ਸਾਰਾਂਸ਼ ਵਿਚਕਾਰ ਅੰਤਰ ਅਕਸਰ ਪ੍ਰੌਮਪਟ (prompt) 'ਤੇ ਨਿਰਭਰ ਕਰਦਾ ਹੈ। ਜੇਕਰ ਤੁਹਾਨੂੰ ਸਕੈਨੇਬਿਲਟੀ (scanability) ਦੀ ਲੋੜ ਹੈ, ਤਾਂ ਬੁਲੇਟ ਪੁਆਇੰਟ ਮੰਗੋ। ਜੇਕਰ ਸਰੋਤੇ ਸੀਨੀਅਰ ਲੀਡਰਸ਼ਿਪ ਹਨ, ਤਾਂ ਇੱਕ ਪੈਰਾਗ੍ਰਾਫ ਦੇ ਐਗਜ਼ੀਕਿਊਟਿਵ ਸਾਰਾਂਸ਼ ਦੀ ਮੰਗ ਕਰੋ। ਤੁਸੀਂ ਫਾਰਮੈਟਿੰਗ ਦੀਆਂ ਪਾਬੰਦੀਆਂ ਵੀ ਲਗਾ ਸਕਦੇ ਹੋ, ਜਿਵੇਂ ਕਿ "ਸਾਰਾਂਸ਼ ਨੂੰ ਤਿੰਨ ਵਾਕਾਂ ਤੱਕ ਸੀਮਤ ਰੱਖੋ" ਜਾਂ "ਆਉਟਪੁੱਟ ਨੂੰ topic, key_points, ਅਤੇ action_items ਕੁੰਜੀਆਂ (keys) ਦੇ ਨਾਲ JSON ਵਜੋਂ ਵਾਪਸ ਕਰੋ।"
ਅਸਲ ਸਿੱਖਿਆ (The Real Takeaway)
ਚੈਟ ਪਲੇਗਰਾਊਂਡ (chat playground) ਤੋਂ ਇੱਕ ਕੰਮ ਕਰਦੇ ਸਕ੍ਰਿਪਟ ਤੱਕ ਜਾਣਾ ਉਹ ਮੋੜ ਹੈ ਜਿੱਥੇ AI ਬੁਨਿਆਦੀ ਢਾਂਚਾ (infrastructure) ਬਣ ਜਾਂਦਾ ਹੈ। ਇੱਕ ਵਾਰ ਜਦੋਂ ਇਹ ਪਾਈਪਲਾਈਨ ਸਥਾਨਕ (locally) ਤੌਰ 'ਤੇ ਚੱਲਣ ਲੱਗਦੀ ਹੈ, ਤਾਂ ਤੁਸੀਂ ਇਸਨੂੰ S3 ਅਪਲੋਡਾਂ ਦੁਆਰਾ ਟ੍ਰਿਗਰ ਕੀਤੇ ਜਾਣ ਵਾਲੇ AWS Lambda ਫੰਕਸ਼ਨ ਵਿੱਚ ਲਿਆ ਸਕਦੇ ਹੋ, ਇਸਨੂੰ ECS Fargate 'ਤੇ ਸ਼ਡਿਊਲ ਕਰ ਸਕਦੇ ਹੋ, ਜਾਂ ਇਸਨੂੰ ਮੌਜੂਦਾ ਡੇਟਾ ਵਰਕਫਲੋ ਨਾਲ ਜੋੜ ਸਕਦੇ ਹੋ। API ਕਾਲ ਕਰਨਾ ਸੌਖਾ ਹਿੱਸਾ ਹੈ। ਇੰਜੀਨੀਅਰਿੰਗ ਦੀ ਕੀਮਤ ਉਸ ਕਾਲ ਨੂੰ ਅਜਿਹੀ ਲੌਜਿਕ (logic) ਵਿੱਚ ਲਪੇਟਣ ਤੋਂ ਆਉਂਦੀ ਹੈ ਜੋ ਫਾਈਲਾਂ, ਗਲਤੀਆਂ ਅਤੇ ਫਾਰਮੈਟਿੰਗ ਨੂੰ ਸੰਭਾਲਦੀ ਹੈ ਤਾਂ ਜੋ ਤੁਹਾਨੂੰ ਦੁਬਾਰਾ ਕਦੇ ਵੀ ਬ੍ਰਾਊਜ਼ਰ ਵਿੱਚ ਟੈਕਸਟ ਕਾਪੀ ਅਤੇ ਪੇਸਟ ਨਾ ਕਰਨਾ ਪਵੇ।
ਇਸ ਸੈੱਟਅੱਪ ਦੇ ਵਧੇਰੇ ਸੰਦਰਭ ਅਤੇ ਵੱਖ-ਵੱਖ ਰੂਪਾਂ ਲਈ, Dev.to 'ਤੇ ਅਸਲ ਵਾਕਥਰੂ (walkthrough) ਦੇਖੋ। ਜੇਕਰ ਤੁਸੀਂ ਬਿਲਡਰਾਂ ਦੇ ਭਾਈਚਾਰੇ ਨਾਲ AWS ਆਰਕੀਟੈਕਚਰ, LLM ਪਾਈਪਲਾਈਨਾਂ, ਜਾਂ ਪ੍ਰੌਮਪਟ ਇੰਜੀਨੀਅਰਿੰਗ ਬਾਰੇ ਚਰਚਾ ਕਰਨਾ ਚਾਹੁੰਦੇ ਹੋ, ਤਾਂ GyaanSetu AI on Telegram 'ਤੇ ਗੱਲਬਾਤ ਵਿੱਚ ਸ਼ਾਮਲ ਹੋਵੋ।
