> ## Documentation Index
> Fetch the complete documentation index at: https://docs.doconda.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Cómo generar un PowerPoint desde Amazon Bedrock

> Da a tu agente de Bedrock las herramientas de doconda.tools(): crea un .pptx editable en 16:9 con su PDF y devuelve el enlace.

Instala `@doconda/sdk` con el AI SDK (`@ai-sdk/amazon-bedrock`) o `doconda` con Strands Agents, y dale al modelo de
Bedrock las herramientas de `doconda.tools()`. Cuando le pides una presentación, llama a `create_document` con
`format: "pptx"` y recibes el PowerPoint y su PDF con sus enlaces de descarga.

## Pasos

1. Activa un modelo en tu cuenta de Bedrock y guarda su id en `BEDROCK_MODEL_ID`. Las credenciales de AWS salen de tu
   entorno (`AWS_REGION`, `AWS_ACCESS_KEY_ID`…).
2. Guarda tu API key de Doconda (panel → **API keys**) en `DOCONDA_API_KEY`.
3. Conecta las herramientas y pide la presentación:

<CodeGroup>
  ```ts TypeScript theme={"theme":{"light":"github-light","dark":"github-dark-dimmed"}}
  // npm install ai @ai-sdk/amazon-bedrock @doconda/sdk
  import { bedrock } from "@ai-sdk/amazon-bedrock"
  import { generateText, isStepCount, jsonSchema, tool } from "ai"
  import { Doconda } from "@doconda/sdk"

  const doconda = new Doconda()
  const tools = Object.fromEntries(
    doconda.tools().map((t) => [
      t.name,
      tool({ description: t.description, inputSchema: jsonSchema(t.inputSchema), execute: (input) => t.run(input as Record<string, unknown>) }),
    ]),
  )

  const { text } = await generateText({
    model: bedrock(process.env.BEDROCK_MODEL_ID!),
    tools,
    stopWhen: isStepCount(5),
    prompt: "Crea una presentación de 5 diapositivas sobre nuestros resultados del trimestre",
  })

  console.log(text)
  ```

  ```python Python (Strands) theme={"theme":{"light":"github-light","dark":"github-dark-dimmed"}}
  # pip install strands-agents doconda
  import json
  import os

  from doconda import Doconda
  from strands import Agent
  from strands.models import BedrockModel
  from strands.tools import PythonAgentTool


  def as_strands_tool(t):
      def run(tool_use, **_):
          out = t.run(tool_use["input"])
          return {"toolUseId": tool_use["toolUseId"], "status": "success", "content": [{"text": json.dumps(out)}]}

      spec = {"name": t.name, "description": t.description, "inputSchema": {"json": t.input_schema}}
      return PythonAgentTool(t.name, spec, run)


  agent = Agent(
      model=BedrockModel(model_id=os.environ["BEDROCK_MODEL_ID"]),
      tools=[as_strands_tool(t) for t in Doconda().tools()],
  )

  agent("Crea una presentación de 5 diapositivas sobre nuestros resultados del trimestre")
  ```
</CodeGroup>

El AI SDK hace el bucle de llamadas a herramientas por ti; Strands también. Si usas `boto3` directamente, el bucle de
la API Converse está en la [guía de Bedrock](/agents/bedrock#con-python).

## Qué devuelve

```json theme={"theme":{"light":"github-light","dark":"github-dark-dimmed"}}
{
  "id": "doc_01JAB3…",
  "format": "pptx",
  "status": "ready",
  "links": { "pptx": "https://…", "pdf": "https://…" },
  "links_note": "Links expire in 5 minutes: call get_document for fresh ones."
}
```

* Un PowerPoint editable en 16:9, con gráficos nativos y un tema que siguen las diapositivas que añadas, y su PDF.
* `status`: `ready`, `ready_with_warnings`, `needs_review` o `failed` (no se cobra).
* Los enlaces caducan a los 5 minutos; el agente pide otros con `get_document`.

## Preguntas frecuentes

<AccordionGroup>
  <Accordion title="¿Puede usar la plantilla de mi empresa?">
    Sí. Sube la presentación con `upload_file` y pide «con el diseño de nuestra plantilla»: el resultado parte de sus
    diapositivas (en calidad `standard` y `best`).
  </Accordion>

  <Accordion title="¿Puedo cambiar después una diapositiva?">
    Sí, con `edit_document`: añade, ordena o quita diapositivas manteniendo el diseño; lo demás queda igual.
  </Accordion>

  <Accordion title="¿Funciona en Amazon Bedrock AgentCore?">
    Sí. El agente de Strands es el mismo; guarda la clave de Doconda como secreto (`DOCONDA_API_KEY`), no en el código.
  </Accordion>

  <Accordion title="¿Cuánto cuesta?">
    Pagas por documento entregado, según el nivel de calidad. Ver [precios](/guides/account#precios).
  </Accordion>
</AccordionGroup>

## Sigue leyendo

* [Amazon Bedrock](/agents/bedrock) y [Strands Agents](/agents/strands): las guías completas.
* [Quickstart](/quickstart).


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.