వెబ్ ప్లేగ్రౌండ్‌లు డెమోల కోసం చాలా బాగుంటాయి. మీరు ఒక టెక్స్ట్ బ్లాక్‌ను పేస్ట్ చేస్తారు, మోడల్ ఒక చక్కని సమ్మరీని (summary) జనరేట్ చేయడం చూస్తారు మరియు ట్యాబ్‌ను మూసివేస్తారు. కానీ అది ఇంజనీరింగ్ కాదు. ప్రొడక్షన్ వర్క్ అంటే APIs, ఎర్రర్ హ్యాండ్లింగ్ (error handling), మరియు మీరు నిద్రపోతున్నప్పుడు కూడా రన్ అయ్యే కోడ్. మీరు మీటింగ్ ట్రాన్స్‌క్రిప్ట్‌లు, సపోర్ట్ టికెట్లు లేదా రీసెర్చ్ పేపర్లను ఒక షెడ్యూల్ ప్రకారం ప్రాసెస్ చేయాలనుకుంటే, మీకు ఒక పైప్‌లైన్ (pipeline) అవసరం.

ఈ గైడ్ సరిగ్గా అదే నిర్మించడం గురించి వివరిస్తుంది: Python, AWS SDK for Python (boto3), మరియు Amazon Bedrock ఉపయోగించి ఒక లైట్‌వెయిట్, ఆటోమేటెడ్ డాక్యుమెంట్ సమ్మరైజేషన్ స్క్రిప్ట్‌ను ఎలా తయారు చేయాలో చూద్దాం. టెక్స్ట్ సమ్మరైజేషన్ పనుల కోసం వేగం మరియు ఖర్చు పరంగా సరైన సమతుల్యతను కలిగి ఉన్న Anthropic యొక్క Claude 3 Haiku మోడల్‌ను మేము ఉపయోగిస్తాము.

ఎందుకు Bedrock మరియు Claude 3 Haiku?

Amazon Bedrock అనేది ఒక మేనేజ్డ్ సర్వీస్, ఇది సింగిల్ AWS APIల ద్వారా ఫౌండేషన్ మోడల్స్‌ను అందిస్తుంది. విడివిడి ఎండ్‌పాయింట్‌లను (endpoints) కలపడం, మరియు వేర్వేరు బిల్లింగ్ మరియు సెక్యూరిటీ మోడల్స్‌తో పోరాడటం కంటే, మీరు స్టాండర్డ్ IAM కంట్రోల్స్‌తో ఒక AWS ఎండ్‌పాయింట్‌ను కాల్ చేయవచ్చు. మీ డేటా మీ AWS ఎన్విరాన్‌మెంట్‌లోనే ఉంటుంది.

Claude 3 Haiku అనేది Anthropic యొక్క Claude 3 ఫ్యామిలీలో అత్యంత తేలికైన (leanest) మోడల్. ఇది వేగంగా స్పందించడానికి మరియు తక్కువ ఖర్చుతో పనిచేయడానికి రూపొందించబడింది. సాధారణ రీడింగ్ పనుల కోసం పెద్ద మోడల్స్ యొక్క అధిక సామర్థ్యం కోసం ఎక్కువ డబ్బు చెల్లించకుండా, మీరు ఊహించదగిన అవుట్‌పుట్‌ను పొందాలనుకున్నప్పుడు అధిక వాల్యూమ్ సమ్మరైజేషన్ కోసం ఇది చాలా అనువైనది.

మీకు కావాల్సినవి

ఏ కోడ్ రాయకముందు, ఈ క్రిందివి సిద్ధంగా ఉన్నాయని నిర్ధారించుకోండి:

  • ఒక యాక్టివ్ AWS అకౌంట్.
  • లోకల్‌గా ఇన్‌స్టాల్ చేయబడిన Python 3.9 లేదా అంతకంటే ఎక్కువ వెర్షన్.
  • Bedrock మోడల్స్‌ను ఇన్‌వోక్ (invoke) చేయడానికి అనుమతి ఉన్న క్రెడెన్షియల్స్‌తో కాన్ఫిగర్ చేయబడిన AWS CLI. మీరు ఇంకా aws configure రన్ చేయకపోతే, ఇప్పుడే చేయండి. తర్వాత మీరు పర్మిషన్ ఎర్రర్స్ ఎదుర్కొంటే, మీ IAM యూజర్ లేదా రోల్‌కు తగిన Bedrock invocation పర్మిషన్లను అటాచ్ చేయాల్సి ఉంటుంది.
  • AWS Bedrock కన్సోల్‌లో Anthropic Claude 3 Haiku కోసం ప్రత్యేకంగా మోడల్ యాక్సెస్‌ను ఎనేబుల్ చేయాలి. మీరు ఏదైనా మోడల్ ప్రొవైడర్‌ను కాల్ చేసే ముందు, AWSలో దానికి స్పష్టంగా ఆప్ట్-ఇన్ (opt in) చేయాల్సి ఉంటుంది.

స్టెప్ 1: మోడల్ యాక్సెస్‌ను ఎనేబుల్ చేయండి

Bedrock నేరుగా మోడల్స్‌ను కాల్ చేయడానికి అనుమతించదు. మీరు ముందుగా కన్సోల్‌లో స్విచ్ ఆన్ చేయాలి.

  1. AWS Management Console లో లాగిన్ అవ్వండి.
  2. సెర్చ్ బార్ ఉపయోగించి Amazon Bedrock అని వెతకండి.
  3. ఎడమవైపు నావిగేషన్ ప్యానెల్‌లో, Model access ని ఎంచుకోండి.
  4. Modify model access పై క్లిక్ చేయండి.
  5. Anthropic (Claude 3 Haiku) బాక్స్‌ను టిక్ చేసి, మీ రిక్వెస్ట్‌ను సబ్మిట్ చేయండి.

స్టేటస్ "Access granted" అని మారిన తర్వాత, మీరు కోడ్ ద్వారా మోడల్‌ను కాల్ చేయవచ్చు.

స్టెప్ 2: మీ ఎన్విరాన్‌మెంట్‌ను సెటప్ చేయండి

ఒక క్లీన్ Python ఎన్విరాన్‌మెంట్ డిపెండెన్సీలను (dependencies) ఐసోలేటెడ్‌గా మరియు రీప్రొడ్యూసిబుల్‌గా ఉంచుతుంది. మీ టెర్మినల్‌ను ఓపెన్ చేసి ఈ కమాండ్స్‌ను రన్ చేయండి:

mkdir bedrock-summarizer && cd bedrock-summarizer
python3 -m venv venv
source venv/bin/activate
pip install boto3

Windows యూజర్లు యాక్టివేషన్ కమాండ్‌ను venv\Scripts\activate తో మార్చాలి. pip install boto3 పూర్తయిన తర్వాత, AWS APIలతో కమ్యూనికేట్ చేయడానికి మీకు కావాల్సినవన్నీ సిద్ధంగా ఉంటాయి.

స్టెప్ 3: స్క్రిప్ట్‌ను రాయండి

summarize.py అనే పేరుతో ఒక ఫైల్‌ను సృష్టించండి. డిస్క్ నుండి ఒక డాక్యుమెంట్‌ను చదివి, దానిని Bedrock Converse APIకి పంపి, ఒక సంక్షిప్త సమ్మరీని ప్రింట్ చేయడమే దీని లక్ష్యం.

కింద పూర్తి స్థాయిలో పనిచేసే ఇంప్లిమెంటేషన్ ఉంది. మేము Converse APIని ఉపయోగిస్తున్నాము ఎందుకంటే ఇది వివిధ మోడల్ ప్రొవైడర్లు ఆశించే రా (raw) JSON ఫార్మాటింగ్‌ను సులభతరం చేస్తుంది. మీరు కేవలం మెసేజ్‌ల జాబితా మరియు ఇన్ఫరెన్స్ సెట్టింగ్‌లను (inference settings) పంపితే సరిపోతుంది.

import boto3

def summarize_document(text: str) -> str:
    client = boto3.client("bedrock-runtime")
    
    model_id = "anthropic.claude-3-haiku-20240307-v1:0"
    
    messages = [
        {
            "role": "user",
            "content": [
                {
                    "text": (
                        "Provide a concise summary of the following document. "
                        "Focus on the main points and avoid unnecessary detail:\n\n"
                        f"{text}"
                    )
                }
            ]
        }
    ]
    
    response = client.converse(
        modelId=model_id,
        messages=messages,
        inferenceConfig={
            "temperature": 0.3,
            "maxTokens": 512
        }
    )
    
    summary = response["output"]["message"]["content"][0]["text"]
    return summary.strip()


if __name__ == "__main__":
    with open("document.txt", "r", encoding="utf-8") as f:
        document_text = f.read()
    
    result = summarize_document(document_text)
    print("\n--- Summary ---\n")
    print(result)

ఇక్కడ గమనించదగ్గ కొన్ని ఆచరణాత్మక వివరాలు:

  • boto3.client("bedrock-runtime") అనేది ఇన్ఫరెన్స్‌ను హ్యాండిల్ చేసే రన్‌టైమ్ ఎండ్‌పాయింట్‌ను టార్గెట్ చేస్తుంది. మీ ~/.aws/config లోని AWS రీజియన్ Bedrockకు సపోర్ట్ చేస్తుందో లేదో మరియు మీరు అదే రీజియన్‌లో Haikuని ఎనేబుల్ చేశారో లేదో సరిచూసుకోండి.
  • Model ID anthropic.claude-3-haiku-20240307-v1:0 అనేది Bedrock ఆశించే ఖచ్చితమైన ఐడెంటిఫైయర్. దీనిని ఖచ్చితంగా కాపీ చేయండి.
  • Temperature 0.3 కి సెట్ చేయడం వల్ల అవుట్‌పుట్ వాస్తవానికి దగ్గరగా ఉంటుంది. సమ్మరైజేషన్ కోసం, మీకు మూల టెక్స్ట్‌కు అనుగుణంగా స్థిరత్వం మరియు విశ్వసనీయత కావాలి, సృజనాత్మక అలంకరణ కాదు. మీరు టెంపరేచర్‌ను 1.0 వైపు పెంచితే, మోడల్ పదజాలంతో ఆడుకోవడం ప్రారంభిస్తుంది మరియు అప్పుడప్పుడు వివరాలను సొంతంగా సృష్టిస్తుంది.
  • ప్రాంప్ట్ (prompt) చాలా స్పష్టంగా ఉంటుంది. మోడల్‌కు కేవలం "దీనిని సమ్మరైజ్ చేయి" అని అస్పష్టమైన టెక్స్ట్‌ను ఇచ్చే బదులు, మేము ప్రధాన అంశాలను అడుగుతాము మరియు అనవసరమైన విషయాలను (fluff) వదిలేయమని సూచిస్తాము. అటువంటి స్పష్టత వల్ల ఉపయోగపడని అవుట్‌పుట్‌కు మరియు మీరు నిజంగా ఉపయోగించగల అవుట్‌పుట్‌కు మధ్య తేడా తెలుస్తుంది.

మీరు సమ్మరైజ్ చేయాలనుకుంటున్న ఏదైనా టెక్స్ట్ ఫైల్‌ను అదే డైరెక్టరీలో ఉంచి, దానికి document.txt అని పేరు పెట్టండి.

స్టెప్ 4: రన్ చేయండి

మీ వర్చువల్ ఎన్విరాన్‌మెంట్ యాక్టివ్‌గా ఉన్నప్పుడు, ఈ కమాండ్‌ను ఎగ్జిక్యూట్ చేయండి:

python summarize.py

మీ క్రెడెన్షియల్స్ మరియు మోడల్ యాక్సెస్ సరిగ్గా ఉంటే, కొన్ని సెకన్లలోపు మీ టెర్మినల్‌లో ఒక చక్కని సమ్మరీ ప్రింట్ అవ్వాలి. మీకు యాక్సెస్ ఎర్రర్ వస్తే, మీ IAM పర్మిషన్లను మళ్ళీ తనిఖీ చేయండి మరియు కన్సోల్‌లో Claude 3 Haikuని ఎనేబుల్ చేశారో లేదో నిర్ధారించుకోండి.

స్క్రిప్ట్ కంటే మించి...

ఈ పైప్‌లైన్ ఉద్దేశపూర్వకంగా సరళంగా రూపొందించబడింది, కానీ ఇది నిజమైన ఆటోమేషన్ కోసం పునాది. ఎటువంటి అనవసరమైన సంక్లిష్టతను జోడించకుండా దీనిని మీరు ఎలా విస్తరించవచ్చో ఇక్కడ ఉంది.

Batch processing. ఒకే ఫైల్‌ను చదవడం బదులుగా, ఒక డైరెక్టరీలోని ఫైల్‌లపై లూప్ (loop) చేసేలా మార్చండి. ఇన్‌పుట్ ఫోల్డర్‌లో యాభై PDFలు లేదా టెక్స్ట్ ఫైల్‌లను వేసి, వాటిని ఒక్కొక్కటిగా ప్రాసెస్ చేస్తూ, సమ్మరీలను అవుట్‌పుట్ ఫోల్డర్‌లో సేవ్ చేయండి. మీరు నేరుగా PDFలను ఉపయోగించాలనుకుంటే, Bedrock కి పంపే ముందు PyPDF2 లేదా pdfplumber వంటి లైబ్రరీని ఉపయోగించి టెక్స్ట్‌ను సంగ్రహించే (extract) ప్రీ-ప్రాసెసింగ్ దశ అవసరమవుతుంది.

Chunking strategy. చాలా పొడవైన డాక్యుమెంట్లు మోడల్ యొక్క కాంటెక్స్ట్ లిమిట్‌ను మించవచ్చు. అలా జరిగినప్పుడు, టెక్స్ట్‌ను పేరాగ్రాఫ్ లేదా సెక్షన్ల వారీగా లాజికల్ చంక్స్‌గా విభజించి, ప్రతి చంక్‌ను విడివిడిగా సమ్మరైజ్ చేయండి. ఆపై, తుది సమ్మరీ కోసం ఆ మధ్యంతర సమ్మరీలను మళ్ళీ మోడల్‌కు పంపండి. ఈ రెండు దశల విధానం పూర్తి డాక్యుమెంట్‌లోని సమాచారాన్ని కోల్పోకుండా, టోకెన్ పరిమితుల లోపలే ఉండేలా చేస్తుంది.

Error handling. ప్రొడక్షన్ కోడ్ ప్రత్యేకంగా boto3.exceptions.ClientErrorను గుర్తించేలా ఉండాలి. మీరు APIని అతిగా ఉపయోగిస్తే, AWS మీ రిక్వెస్ట్‌లను పరిమితం (throttle) చేయవచ్చు. మీ converse కాల్‌ను ఎక్స్‌పోనెన్షియల్ బ్యాక్‌ఆఫ్ (exponential backoff) తో కూడిన రీట్రై లూప్‌లో ఉంచండి, లేదా రేట్ లిమిట్‌లను సమర్థవంతంగా నిర్వహించడానికి tenacity వంటి లైబ్రరీని ఉపయోగించండి.

Prompt engineering. ఒక సాధారణ సమ్మరీకి మరియు ఉపయోగకరమైన సమ్మరీకి మధ్య తేడా తరచుగా ప్రాంప్ట్ (prompt) పైనే ఆధారపడి ఉంటుంది. సమాచారాన్ని త్వరగా చదవాలనుకుంటే బుల్లెట్ పాయింట్లు అడగండి. ఆడియన్స్ సీనియర్ లీడర్‌షిప్ అయితే ఒక పేరాగ్రాఫ్ ఎగ్జిక్యూటివ్ సమ్మరీని అడగండి. మీరు ఫార్మాటింగ్ పరిమితులను కూడా ఇవ్వవచ్చు, ఉదాహరణకు "సమ్మరీని మూడు వాక్యాలకు పరిమితం చేయండి" లేదా "topic, key_points, మరియు action_items కీలతో JSON రూపంలో అవుట్‌పుట్‌ను ఇవ్వండి."

ముఖ్యమైన సారాంశం

చాట్ ప్లేగ్రౌండ్ నుండి పని చేసే స్క్రిప్ట్‌గా మారడం అనేది AI మౌలిక సదుపాయంగా (infrastructure) మారే కీలక దశ. ఈ పైప్‌లైన్ లోకల్‌గా నడక ప్రారంభమైన తర్వాత, మీరు దీనిని S3 అప్‌లోడ్‌ల ద్వారా ట్రిగ్గర్ అయ్యే AWS Lambda ఫంక్షన్‌గా మార్చవచ్చు, ECS Fargateలో షెడ్యూల్ చేయవచ్చు లేదా ఇప్పటికే ఉన్న డేటా వర్క్‌ఫ్లోలోకి అనుసంధానించవచ్చు. API కాల్ చేయడం సులభమైన భాగం. ఫైల్‌లు, ఎర్రర్స్ మరియు ఫార్మాటింగ్‌ను నిర్వహించే లాజిక్‌తో ఆ కాల్‌ను జోడించడం వల్ల వచ్చే ఇంజనీరింగ్ విలువ అసలైనది; దీనివల్ల మీరు మళ్ళీ ఎప్పుడూ టెక్స్ట్‌ను బ్రౌజర్‌లోకి కాపీ చేసి పేస్ట్ చేయాల్సిన అవసరం ఉండదు.

ఈ సెటప్‌కు సంబంధించిన మరిన్ని వివరాలు మరియు వైవిధ్యాల కోసం, Dev.to లోని అసలు వాక్‌త్రూ చూడండి. మీరు బిల్డర్స్ కమ్యూనిటీతో కలిసి AWS ఆర్కిటెక్చర్స్, LLM పైప్‌లైన్స్ లేదా ప్రాంప్ట్ ఇంజనీరింగ్ గురించి చర్చించాలనుకుంటే, GyaanSetu AI on Telegram లో చర్చలో పాల్గొనండి.