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.

langchain Article's
30 articles in total
Favicon
Get More Done with LangChain’s AI Email Assistant (EAIA)
Favicon
[Boost]
Favicon
Unlocking AI-Powered Conversations: Building a Retrieval-Augmented Generation (RAG) Chatbot
Favicon
AI Innovations to Watch in 2024: Transforming Everyday Life
Favicon
Calling LangChain from Go (Part 1)
Favicon
LangChain vs. LangGraph
Favicon
Mastering Real-Time AI: A Developer’s Guide to Building Streaming LLMs with FastAPI and Transformers
Favicon
Integrating LangChain with FastAPI for Asynchronous Streaming
Favicon
AI Agents + LangGraph: The Winning Formula for Sales Outreach Automation
Favicon
Building Talk-to-Page: Chat or Talk with Any Website
Favicon
AI Agents: The Future of Intelligent Automation
Favicon
Boost Customer Support: AI Agents, LangGraph, and RAG for Email Automation
Favicon
Using LangChain to Search Your Own PDF Documents
Favicon
Lang Everything: The Missing Guide to LangChain's Ecosystem
Favicon
How to make an AI agent with OpenAI, Langgraph, and MongoDB 💡✨
Favicon
Novita AI API Key with LangChain
Favicon
7 Cutting-Edge AI Frameworks Every Developer Should Master in 2024
Favicon
My 2025 AI Engineer Roadmap List
Favicon
AI Agents Architecture, Actors and Microservices: Let's Try LangGraph Command
Favicon
How to integrate pgvector's Docker image with Langchain?
Favicon
A Practical Guide to Reducing LLM Hallucinations with Sandboxed Code Interpreter
Favicon
LangGraph with LLM and Pinecone Integration. What is LangGraph
Favicon
Choosing a Vector Store for LangChain
Favicon
Roadmap for Gen AI dev in 2025
Favicon
AI-Powered Graph Exploration with LangChain's NLP Capabilities, Question Answer Using Langchain
Favicon
Potenciando Aplicaciones de IA con AWS Bedrock y Streamlit
Favicon
How Spring Boot and LangChain4J Enable Powerful Retrieval-Augmented Generation (RAG)
Favicon
Get Started with LangChain: A Step-by-Step Tutorial for Beginners
Favicon
Building RAG-Powered Applications with LangChain, Pinecone, and OpenAI
Favicon
What is Chunk Size and Chunk Overlap

Featured ones: