[{"data":1,"prerenderedAt":57},["ShallowReactive",2],{"snippet-lambda-durable-ai-prompt-chaining":3},{"id":4,"title":5,"contributors":6,"description":8,"extension":9,"gitHub":10,"introBox":13,"languages":19,"meta":22,"resources":23,"services":28,"snippets":31,"stem":49,"tags":50,"type":55,"__hash__":56},"snippets\u002Fsnippets\u002Flambda-durable-ai-prompt-chaining.json","Prompt Chaining with AWS Lambda durable functions",[7],"content\u002Fcontributors\u002Fconnor-kirkpatrick.json","Sequential LLM calls where each step builds on the previous one using AWS Lambda durable functions","json",{"template":11},{"repoURL":12},"https:\u002F\u002Fgithub.com\u002Faws-samples\u002Fsample-ai-workflows-in-aws-lambda-durable-functions",{"headline":14,"text":15},"How it works",[16,17,18],"This pattern demonstrates prompt chaining with AWS Lambda durable functions. Each LLM call is checkpointed, enabling automatic retry on failure and deterministic replay.","The example generates a joke about a topic, then uses a second LLM call to review and rate the joke.","Benefits: Expensive retries are avoided by resuming from the last checkpoint. Replayed LLM calls return the same response each time. Failed workflows don't restart from scratch.",[20,21],"Python","TypeScript",{},{"bullets":24},[25],{"text":26,"link":27},"AWS Lambda durable functions","https:\u002F\u002Faws.amazon.com\u002Flambda\u002Flambda-durable-functions\u002F",[29,30],"lambda-event-functions","bedrock",[32],{"title":33,"codeTabs":34},"Runtimes",[35,42],{"id":20,"title":36,"description":37,"snippets":38},"Usage Example with Python:","Prompt chaining with Lambda durable functions using Python.",[39],{"language":40,"code":41},"py","import boto3\nfrom aws_durable_execution_sdk_python import DurableContext, durable_execution\n\nMODEL_ID = \"us.amazon.nova-lite-v1:0\"\nbedrock = boto3.client(\"bedrock-runtime\")\n\n\ndef converse(model_id: str, prompt: str) -&#62; str:\n    response = bedrock.converse(\n        modelId=model_id,\n        messages=[{\"role\": \"user\", \"content\": [{\"text\": prompt}]}],\n    )\n    return response[\"output\"][\"message\"][\"content\"][0][\"text\"]\n\n\n@durable_execution\ndef handler(event: dict, context: DurableContext):\n    topic = event.get(\"topic\", \"programming\")\n\n    joke = context.step(\n        lambda _: converse(MODEL_ID, f\"Make a joke about {topic}\"),\n        \"generate joke\",\n    )\n\n    review = context.step(\n        lambda _: converse(MODEL_ID, f'Rate this joke 1-10 and explain why: \"{joke}\"'),\n        \"review joke\",\n    )\n\n    return {\"joke\": joke, \"review\": review}\n",{"id":21,"title":43,"description":44,"snippets":45},"Usage Example with TypeScript:","Prompt chaining with Lambda durable functions using TypeScript.",[46],{"language":47,"code":48},"ts","import {\n  type DurableContext,\n  withDurableExecution,\n} from \"@aws\u002Fdurable-execution-sdk-js\";\nimport {\n  BedrockRuntimeClient,\n  ConverseCommand,\n} from \"@aws-sdk\u002Fclient-bedrock-runtime\";\n\nconst MODEL_ID = \"us.amazon.nova-lite-v1:0\";\nconst bedrock = new BedrockRuntimeClient({});\n\nasync function converse(modelId: string, prompt: string): Promise&#60;string&#62; {\n  const response = await bedrock.send(\n    new ConverseCommand({\n      modelId,\n      messages: [{ role: \"user\", content: [{ text: prompt }] }],\n    }),\n  );\n  return response.output?.message?.content?.[0].text ?? \"\";\n}\n\nexport const handler = withDurableExecution(\n  async (event: { topic?: string }, context: DurableContext) =&#62; {\n    const topic = event.topic ?? \"programming\";\n\n    const joke = await context.step(\"generate joke\", async () =&#62; {\n      return await converse(MODEL_ID, `Make a joke about ${topic}`);\n    });\n\n    const review = await context.step(\"review joke\", async () =&#62; {\n      return await converse(MODEL_ID, `Rate this joke 1-10 and explain why: \"${joke}\"`);\n    });\n\n    return { joke, review };\n  }\n);\n","snippets\u002Flambda-durable-ai-prompt-chaining",[51,52,30,53,54],"ai","durable-functions","genai","prompt-chaining","Integration","cocTOGprTXmXzNlTcPOsGPIxsoc01tzdZ0rq4Jk84nQ",1792578864387]