Logo

dev-resources.site

for different kinds of informations.

Potenciando Aplicaciones de IA con AWS Bedrock y Streamlit

Published at
12/17/2024
Categories
bedrock
langchain
aws
community
Author
fernandosilvot
Categories
4 categories in total
bedrock
open
langchain
open
aws
open
community
open
Author
14 person written this
fernandosilvot
open
Potenciando Aplicaciones de IA con AWS Bedrock y Streamlit

Este blog detalla cómo construir una aplicación de inteligencia artificial utilizando AWS Bedrock y Streamlit, en la que puedes realizar tareas como el procesamiento de lenguaje natural y la generación de imágenes. Este proyecto se basa en AWS Bedrock para interactuar con modelos de IA avanzados como Claude 3 y modelos de generación de imágenes como Stability AI.

1. Configuración de AWS Credentials

Para que tu aplicación de Streamlit se conecte a los servicios de AWS, necesitas configurar correctamente las credenciales de AWS. A continuación te explico cómo obtener y configurar las claves de acceso necesarias: AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY, y AWS_DEFAULT_REGION.

Paso a Paso para Obtener las Credenciales de AWS:

console

  • En el menú superior derecho, haz clic en tu nombre de usuario y selecciona "My Security Credentials".

My Security Credentials

  • En la sección "Access keys (access key ID and secret access key)", haz clic en "Create New Access Key".

Create New Access Key

  • Se generará una nueva clave de acceso. Descarga el archivo de claves, ya que solo podrás ver la AWS_ACCESS_KEY_ID y AWS_SECRET_ACCESS_KEY una vez.

clave de acceso

  • Asegúrate de guardar esta información en un lugar seguro.

Para completar la configuración de las credenciales, deberás colocar las variables obtenidas en un archivo .env, de manera que tu aplicación de Python pueda acceder a ellas sin exponer las claves directamente en el código.

Ejemplo de archivo .env:

AWS_ACCESS_KEY_ID=tu_aws_access_key_id
AWS_SECRET_ACCESS_KEY=tu_aws_secret_access_key
AWS_DEFAULT_REGION=us-west-2
Enter fullscreen mode Exit fullscreen mode

2. Explicación del Código

El código de esta aplicación utiliza varios servicios y librerías importantes para interactuar con AWS Bedrock y generar imágenes utilizando IA. A continuación explicamos las partes más esenciales del código:

2.1 Cargar las Variables de Entorno
from dotenv import load_dotenv

# Cargar las variables de entorno desde un archivo .env
load_dotenv()
Enter fullscreen mode Exit fullscreen mode

La librería dotenv permite cargar las credenciales desde un archivo .env, protegiendo las claves de acceso.

2.2 Conexión a AWS Bedrock
import boto3

# Crear un cliente para el servicio Bedrock de AWS
aws_bedrock = boto3.client('bedrock-runtime', 
    aws_access_key_id=os.getenv("AWS_ACCESS_KEY_ID"),
    aws_secret_access_key=os.getenv("AWS_SECRET_ACCESS_KEY"),
    region_name=os.getenv("AWS_DEFAULT_REGION")
)
Enter fullscreen mode Exit fullscreen mode

Con boto3, la biblioteca oficial de AWS para Python, nos conectamos al servicio de Bedrock de AWS, que proporciona acceso a modelos como Claude 3 para procesamiento de texto y Stable Diffusion XL para generación de imágenes.

2.3 Generación de Imágenes
def generate_image(prompt, style):
    request_payload = json.dumps({
        "text_prompts": [{"text": f"{style} {prompt}"}],
        "cfg_scale": 9,
        "steps": 50,
    })
    model_response = aws_bedrock.invoke_model(body=request_payload, modelId=image_model_id)
    return decode_image_from_response(model_response)
Enter fullscreen mode Exit fullscreen mode

Esta función envía un prompt al modelo de generación de imágenes de AWS Bedrock y obtiene una imagen como respuesta, la cual luego se decodifica y se muestra al usuario.

2.4 Análisis de Imágenes
def analizar_imagen(ruta_imagen, texto=""):
    """Invoca Claude 3 para el análisis de imágenes y devuelve un texto normal."""
    tipo_archivo, imagen_base64 = codificador_base64_imagen(ruta_imagen)
    prompt_sistema = "Describe cada detalle que puedas sobre esta imagen, sé extremadamente minucioso."

    prompt = {
        "anthropic_version": "bedrock-2023-05-31",
        "max_tokens": 1000,
        "temperature": 0.5,
        "system": prompt_sistema,
        "messages": [
            {
                "role": "user",
                "content": [
                    {"type": "image", "source": {"type": "base64", "media_type": tipo_archivo, "data": imagen_base64}},
                    {"type": "text", "text": texto or "Usa el prompt del sistema"}
                ]
            }
        ]
    }

    respuesta = aws_bedrock.invoke_model(
        body=json.dumps(prompt), 
        modelId="anthropic.claude-3-sonnet-20240229-v1:0",
        accept="application/json", 
        contentType="application/json"
    )

    salida_llm = json.loads(respuesta.get('body').read())['content'][0]['text']
    return salida_llm  # Devuelve el texto normal
Enter fullscreen mode Exit fullscreen mode

En este bloque de código, la función analizar_imagen utiliza Claude 3 (un modelo de lenguaje de AWS) para analizar una imagen y devolver una descripción detallada de su contenido.

3. Configuración de Streamlit

Streamlit facilita la creación de interfaces web interactivas con Python. En este caso, hemos configurado un panel lateral para elegir entre diferentes tareas de IA. Dependiendo de la opción seleccionada, el usuario puede generar imágenes, realizar análisis de texto o más.

import streamlit as st

st.set_page_config(page_title="Potenciando Aplicaciones de IA con AWS Bedrock y Streamlit", page_icon=icon, layout="wide")
st.sidebar.title("Menú de Opciones")
option = st.sidebar.selectbox("Selecciona la tarea de IA", ["Inicio","Procesamiento de Lenguaje", "Generación de imágenes", "Descripción de Imágenes"])

if option == "Inicio":
    st.image(icon, width=50, output_format="SVG")
    st.title("Potenciando Aplicaciones de IA con AWS Bedrock y Streamlit")
    st.markdown(
        """
        Esta aplicación web permite interactuar con modelos de inteligencia artificial para realizar tareas de procesamiento de lenguaje natural y generación de imágenes.
        """
    )
Enter fullscreen mode Exit fullscreen mode

Este fragmento configura el título y las opciones de la interfaz, permitiendo al usuario interactuar con las distintas funcionalidades de la aplicación.

Mi Proyecto

He trabajado en este proyecto como una forma de integrar poderosos servicios de AWS con Streamlit para crear aplicaciones de inteligencia artificial accesibles y fáciles de usar. Si deseas ver el código fuente o probar la aplicación en vivo, puedes hacerlo a través del siguiente enlace:

Ver el proyecto en GitHub

My proyecto

¿Qué puedes encontrar en el proyecto?

  • Generación de imágenes utilizando AWS Bedrock
  • Análisis de imágenes usando el modelo Claude 3 de AWS.
  • Ejemplo de cómo integrar Streamlit con los servicios de AWS.
  • Instrucciones detalladas sobre cómo configurar el entorno de desarrollo.

No dudes en explorar el código y hacer preguntas o sugerencias sobre cómo mejorar la aplicación. ¡Estaré encantado de recibir tu feedback!

Conclusión

Este proyecto demuestra cómo utilizar los servicios de AWS Bedrock para potenciar aplicaciones de inteligencia artificial con Streamlit. La configuración correcta de las credenciales de AWS es crucial para garantizar el acceso a los servicios de AWS, y con las herramientas de Python como boto3 y langchain_aws, puedes integrar fácilmente modelos avanzados de procesamiento de lenguaje y generación de imágenes.

bedrock Article's
30 articles in total
Favicon
Unlocking AI Potential: Simplifying Generative AI with AWS Bedrock
Favicon
Amazon Bedrock: Advanced Enterprise Implementation in 2024
Favicon
Prompt Engineering Techniques - AWS BedRock
Favicon
Building a Friends-Themed Chatbot: Exploring Amazon Bedrock for Dialogue Refinement
Favicon
AWS Bedrock Knowledge Base - An overview
Favicon
AWS workshop #2: Leveraging Amazon Bedrock to enhance customer service with AI-powered Automated Email Response
Favicon
Primeros pasos con AWS PartyRock
Favicon
Introduction to Amazon Bedrock: Building Generative AI Applications
Favicon
The Case against AGI
Favicon
Agentic AI Tools in AWS: What You Should Know
Favicon
Use Amazon Bedrock Models with OpenAI SDKs with a Serverless Proxy Endpoint - Without Fixed Cost!
Favicon
Gen-AI Powered Healthcare Queries with AWS Kendra & Bedrock
Favicon
Unveiling Amazon Nova Models: The Future of Generative AI 🚀
Favicon
How to use rerank models in Amazon Bedrock
Favicon
Creating Smart AI Agents with AWS Bedrock
Favicon
Potenciando Aplicaciones de IA con AWS Bedrock y Streamlit
Favicon
Testing LLM Speed Across Cloud Providers: Groq, Cerebras, AWS & More
Favicon
AWS Serverless Generative AI: Amazon Nova Reel Foundation Model with Bedrock and Lambda
Favicon
AWS Serverless and Generative AI with Lambda and Bedrock!
Favicon
Amazon Bedrock Flows: Now Generally Available with Enhanced Safety and Traceability
Favicon
Understanding Amazon Bedrock's New Feature - "Flows"
Favicon
Building a movie suggestion Bot using AWS Bedrock, Amazon Lex, and OpenSearch
Favicon
Save time with the Amazon Bedrock Converse API!
Favicon
Fine-Tuning and Deploying Custom AI Models on Amazon Bedrock: A Practical Guide
Favicon
Building smarter RSS feeds for my newsletter subscriptions with SES and Bedrock
Favicon
Unlocking the Power of AWS GenAI: A Comprehensive Journey
Favicon
Understanding Amazon Bedrock: Components, Pricing and Cost Optimization Strategies
Favicon
Build a Chatbot to streamline customer queries and automate tasks integrating amazon Lex and Bedrock
Favicon
CloudFormation template generator with LLMs/GenAI
Favicon
New features in Amazon Bedrock Prompt Management

Featured ones: