Claude Haiku 4.5 بلاگ

ذیل میں Alexa اسکل میں Claude شامل کرنے کا مختصر، عملی طریقہ کار دیا گیا ہے۔ آپ دو راستوں میں سے ایک اختیار کریں:
- AWS Bedrock کے ذریعے (سفارش کردہ: AWS IAM، نیٹ ورکنگ اور لیٹنسی کے لحاظ سے ہموار)
- Anthropic Messages API براہِ راست

1) بنیادی سیٹ اپ
- Alexa Developer Console میں اسکل بنائیں (انٹینٹس/نمونے جملے طے کریں)۔
- بیک اینڈ کے لیے AWS Lambda منتخب کریں (Node.js یا Python) اور اسے اسکل سے لنک کریں۔
- لیٹنسی دھیان: Alexa کو 8 سیکنڈ کے اندر جواب درکار ہوتا ہے؛ طویل جنریشن کی صورت میں Progressive Response استعمال کریں۔

2) Bedrock کے ذریعے Claude (سفارش کردہ)
- AWS Console > Bedrock میں Anthropic ماڈلز ایکٹیویٹ کریں (مثلاً us-east-1)۔
- Lambda کے رول میں اجازتیں شامل کریں:
  - bedrock:InvokeModel
  - bedrock:InvokeModelWithResponseStream (اگر سٹریمنگ چاہیے)
- ماحول کے متغیرات: REGION، MODEL_ID وغیرہ (کوڈ میں ہارڈ کوڈ نہ کریں)۔

مثال (Node.js Lambda + Bedrock):
- پیکیجز: ask-sdk-core، @aws-sdk/client-bedrock-runtime

const Alexa = require('ask-sdk-core');
const { BedrockRuntimeClient, InvokeModelCommand } = require('@aws-sdk/client-bedrock-runtime');

const bedrock = new BedrockRuntimeClient({ region: process.env.AWS_REGION || 'us-east-1' });
const MODEL_ID = process.env.MODEL_ID || 'anthropic.claude-3-5-sonnet-20241022-v1:0';

async function askClaude(userText, history = []) {
  const messages = [
    ...history,
    { role: 'user', content: [{ type: 'text', text: userText }] }
  ];
  const body = JSON.stringify({
    anthropic_version: 'bedrock-2023-05-31',
    max_tokens: 400,
    temperature: 0.5,
    messages
  });
  const cmd = new InvokeModelCommand({
    modelId: MODEL_ID,
    contentType: 'application/json',
    accept: 'application/json',
    body
  });
  const res = await bedrock.send(cmd);
  const parsed = JSON.parse(new TextDecoder().decode(res.body));
  const text = parsed?.content?.[0]?.text || '';
  return text;
}

const LaunchRequestHandler = {
  canHandle(h) { return Alexa.getRequestType(h.requestEnvelope) === 'LaunchRequest'; },
  async handle(h) {
    const speak = 'آپ مجھ سے کوئی بھی سوال پوچھ سکتے ہیں۔';
    return h.responseBuilder.speak(speak).reprompt(speak).getResponse();
  }
};

const AskIntentHandler = {
  canHandle(h) { return Alexa.getRequestType(h.requestEnvelope) === 'IntentRequest'
    && Alexa.getIntentName(h.requestEnvelope) === 'AskIntent'; },
  async handle(h) {
    const slots = h.requestEnvelope.request.intent.slots || {};
    const userText = slots.question?.value || 'Hello';
    const attrs = h.attributesManager.getSessionAttributes() || {};
    attrs.history = attrs.history || []; // مثال: آخری 2 تبادلے رکھیں
    // لیٹنسی کم کرنے کو Progressive Response
    try {
      const ds = h.serviceClientFactory.getDirectiveService();
      await ds.enqueue({
        header: { requestId: h.requestEnvelope.request.requestId },
        directive: {
          type: 'VoicePlayer.Speak',
          speech: 'ایک لمحہ، میں دیکھ رہا ہوں.'
        }
      });
    } catch (e) { /* optional */ }

    const reply = await askClaude(userText, attrs.history.slice(-4));
    // حد سے لمبا متن ہو تو مختصر کریں
    const speak = reply.length > 7500 ? reply.slice(0, 7400) + '...' : reply;

    // تاریخچہ اپڈیٹ
    attrs.history.push({ role: 'user', content: [{ type: 'text', text: userText }] });
    attrs.history.push({ role: 'assistant', content: [{ type: 'text', text: reply }] });
    attrs.history = attrs.history.slice(-6);
    h.attributesManager.setSessionAttributes(attrs);

    return h.responseBuilder
      .speak(speak)
      .reprompt('کیا آپ مزید جاننا چاہیں گے؟')
      .getResponse();
  }
};

exports.handler = Alexa.SkillBuilders.custom()
  .withApiClient(new Alexa.DefaultApiClient())
  .addRequestHandlers(LaunchRequestHandler, AskIntentHandler)
  .lambda();

اہم نوٹس (Bedrock):
- MODEL_ID علاقائی طور پر بدل سکتا ہے (مثلاً anthropic.claude-3-haiku-20240307-v1:0)، کنسول میں دستیاب شناخت چیک کریں۔
- جواب لمبا ہو تو تلخیص/کلیمپ کریں تاکہ Alexa کے 8000 حروف کے قریب حدود نہ ٹوٹیں۔
- CloudWatch لاگز سے ٹربل شوٹ کریں۔

3) Anthropic API براہِ راست (متبادل)
- API Key کو AWS Secrets Manager میں محفوظ رکھیں؛ Lambda میں سیکرٹ حاصل کریں۔
- HTTPS کال: https://api.anthropic.com/v1/messages
- ہیڈرز: x-api-key: YOUR_KEY، anthropic-version: 2023-06-01، content-type: application/json
- باڈی (مثال):
{
  "model": "claude-3-5-sonnet-20241022",
  "max_tokens": 400,
  "temperature": 0.5,
  "messages": [{ "role": "user", "content": "Hello Claude" }]
}
- جواب سے content[0].text نکالیں اور Alexa کی اسپیچ میں استعمال کریں۔
- لیٹنسی کم رکھنے کے لیے Progressive Response ضرور بھیجیں؛ ٹائم آؤٹ ہینڈلنگ شامل کریں۔

4) گفتگو کا سیاق و سباق (Memory)
- sessionAttributes میں آخری چند میسیجز رکھیں؛ ہر راؤنڈ میں Claude کو مختصر تاریخچہ دیں۔
- ذاتی معلومات کم سے کم بھیجیں؛ PII سے پرہیز کریں۔

5) ٹیسٹنگ اور تعیناتی
- Alexa Developer Console کے Test ٹیب میں آزمائیں۔
- مختلف سوالات/طویل جوابات/خاموشی کے کیسز ہینڈل کریں۔
- اسکل پرمیشنز، CloudWatch میٹرکس، اور خرچ (Bedrock/Anthropic) مانیٹر کریں۔

6) عام مسائل اور حل
- Timeout/8s: Progressive Response + max_tokens کم + جواب مختصر۔
- ریجن/ماڈل ایررز: Bedrock ریجن اور MODEL_ID درست رکھیں۔
- لمبا جواب/SSML ایررز: مخصوص حروف ہٹائیں، SSML ویلیڈ رکھیں، حروف حد کے اندر رکھیں۔

یہ ورک فلو آپ کو Alexa اسکل میں Claude کو محفوظ، کم لیٹنسی اور پروڈکشن کے قابل طریقے سے ضم کرنے میں مدد دے گا۔
Mar 30, 2026
Claude Haiku 4.5
claude opus 4.5
Claude Sonnet 4.5

ذیل میں Alexa اسکل میں Claude شامل کرنے کا مختصر، عملی طریقہ کار دیا گیا ہے۔ آپ دو راستوں میں سے ایک اختیار کریں: - AWS Bedrock کے ذریعے (سفارش کردہ: AWS IAM، نیٹ ورکنگ اور لیٹنسی کے لحاظ سے ہموار) - Anthropic Messages API براہِ راست 1) بنیادی سیٹ اپ - Alexa Developer Console میں اسکل بنائیں (انٹینٹس/نمونے جملے طے کریں)۔ - بیک اینڈ کے لیے AWS Lambda منتخب کریں (Node.js یا Python) اور اسے اسکل سے لنک کریں۔ - لیٹنسی دھیان: Alexa کو 8 سیکنڈ کے اندر جواب درکار ہوتا ہے؛ طویل جنریشن کی صورت میں Progressive Response استعمال کریں۔ 2) Bedrock کے ذریعے Claude (سفارش کردہ) - AWS Console > Bedrock میں Anthropic ماڈلز ایکٹیویٹ کریں (مثلاً us-east-1)۔ - Lambda کے رول میں اجازتیں شامل کریں: - bedrock:InvokeModel - bedrock:InvokeModelWithResponseStream (اگر سٹریمنگ چاہیے) - ماحول کے متغیرات: REGION، MODEL_ID وغیرہ (کوڈ میں ہارڈ کوڈ نہ کریں)۔ مثال (Node.js Lambda + Bedrock): - پیکیجز: ask-sdk-core، @aws-sdk/client-bedrock-runtime const Alexa = require('ask-sdk-core'); const { BedrockRuntimeClient, InvokeModelCommand } = require('@aws-sdk/client-bedrock-runtime'); const bedrock = new BedrockRuntimeClient({ region: process.env.AWS_REGION || 'us-east-1' }); const MODEL_ID = process.env.MODEL_ID || 'anthropic.claude-3-5-sonnet-20241022-v1:0'; async function askClaude(userText, history = []) { const messages = [ ...history, { role: 'user', content: [{ type: 'text', text: userText }] } ]; const body = JSON.stringify({ anthropic_version: 'bedrock-2023-05-31', max_tokens: 400, temperature: 0.5, messages }); const cmd = new InvokeModelCommand({ modelId: MODEL_ID, contentType: 'application/json', accept: 'application/json', body }); const res = await bedrock.send(cmd); const parsed = JSON.parse(new TextDecoder().decode(res.body)); const text = parsed?.content?.[0]?.text || ''; return text; } const LaunchRequestHandler = { canHandle(h) { return Alexa.getRequestType(h.requestEnvelope) === 'LaunchRequest'; }, async handle(h) { const speak = 'آپ مجھ سے کوئی بھی سوال پوچھ سکتے ہیں۔'; return h.responseBuilder.speak(speak).reprompt(speak).getResponse(); } }; const AskIntentHandler = { canHandle(h) { return Alexa.getRequestType(h.requestEnvelope) === 'IntentRequest' && Alexa.getIntentName(h.requestEnvelope) === 'AskIntent'; }, async handle(h) { const slots = h.requestEnvelope.request.intent.slots || {}; const userText = slots.question?.value || 'Hello'; const attrs = h.attributesManager.getSessionAttributes() || {}; attrs.history = attrs.history || []; // مثال: آخری 2 تبادلے رکھیں // لیٹنسی کم کرنے کو Progressive Response try { const ds = h.serviceClientFactory.getDirectiveService(); await ds.enqueue({ header: { requestId: h.requestEnvelope.request.requestId }, directive: { type: 'VoicePlayer.Speak', speech: 'ایک لمحہ، میں دیکھ رہا ہوں.' } }); } catch (e) { /* optional */ } const reply = await askClaude(userText, attrs.history.slice(-4)); // حد سے لمبا متن ہو تو مختصر کریں const speak = reply.length > 7500 ? reply.slice(0, 7400) + '...' : reply; // تاریخچہ اپڈیٹ attrs.history.push({ role: 'user', content: [{ type: 'text', text: userText }] }); attrs.history.push({ role: 'assistant', content: [{ type: 'text', text: reply }] }); attrs.history = attrs.history.slice(-6); h.attributesManager.setSessionAttributes(attrs); return h.responseBuilder .speak(speak) .reprompt('کیا آپ مزید جاننا چاہیں گے؟') .getResponse(); } }; exports.handler = Alexa.SkillBuilders.custom() .withApiClient(new Alexa.DefaultApiClient()) .addRequestHandlers(LaunchRequestHandler, AskIntentHandler) .lambda(); اہم نوٹس (Bedrock): - MODEL_ID علاقائی طور پر بدل سکتا ہے (مثلاً anthropic.claude-3-haiku-20240307-v1:0)، کنسول میں دستیاب شناخت چیک کریں۔ - جواب لمبا ہو تو تلخیص/کلیمپ کریں تاکہ Alexa کے 8000 حروف کے قریب حدود نہ ٹوٹیں۔ - CloudWatch لاگز سے ٹربل شوٹ کریں۔ 3) Anthropic API براہِ راست (متبادل) - API Key کو AWS Secrets Manager میں محفوظ رکھیں؛ Lambda میں سیکرٹ حاصل کریں۔ - HTTPS کال: https://api.anthropic.com/v1/messages - ہیڈرز: x-api-key: YOUR_KEY، anthropic-version: 2023-06-01، content-type: application/json - باڈی (مثال): { "model": "claude-3-5-sonnet-20241022", "max_tokens": 400, "temperature": 0.5, "messages": [{ "role": "user", "content": "Hello Claude" }] } - جواب سے content[0].text نکالیں اور Alexa کی اسپیچ میں استعمال کریں۔ - لیٹنسی کم رکھنے کے لیے Progressive Response ضرور بھیجیں؛ ٹائم آؤٹ ہینڈلنگ شامل کریں۔ 4) گفتگو کا سیاق و سباق (Memory) - sessionAttributes میں آخری چند میسیجز رکھیں؛ ہر راؤنڈ میں Claude کو مختصر تاریخچہ دیں۔ - ذاتی معلومات کم سے کم بھیجیں؛ PII سے پرہیز کریں۔ 5) ٹیسٹنگ اور تعیناتی - Alexa Developer Console کے Test ٹیب میں آزمائیں۔ - مختلف سوالات/طویل جوابات/خاموشی کے کیسز ہینڈل کریں۔ - اسکل پرمیشنز، CloudWatch میٹرکس، اور خرچ (Bedrock/Anthropic) مانیٹر کریں۔ 6) عام مسائل اور حل - Timeout/8s: Progressive Response + max_tokens کم + جواب مختصر۔ - ریجن/ماڈل ایررز: Bedrock ریجن اور MODEL_ID درست رکھیں۔ - لمبا جواب/SSML ایررز: مخصوص حروف ہٹائیں، SSML ویلیڈ رکھیں، حروف حد کے اندر رکھیں۔ یہ ورک فلو آپ کو Alexa اسکل میں Claude کو محفوظ، کم لیٹنسی اور پروڈکشن کے قابل طریقے سے ضم کرنے میں مدد دے گا۔

وائس اسسٹنٹس بڑھتی ہوئی تعداد میں بڑے لسانی ماڈلز سے تقویت پا رہے ہیں۔ اگر آپ Anthropic کا Claude API کسی Alexa اسکل میں شامل کرنا چاہتے ہیں جسے آپ برقرار رکھتے ہیں یا بنا رہے ہیں، تو یہ گائیڈ آپ کو درکار عملی آرکیٹیکچر، ٹھوس کوڈ پیٹرنز، اور عملیاتی پہلوؤں سے گزارے گی — تیز Proof‑of‑Concept سے لے کر پروڈکشن گریڈ اسکل تک۔