Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
Ya estoy inscrito ¿Todavía no tienes acceso? Nuestros Planes
1
respuesta

Haga lo que hicimos: cadena completa para análisis de imagen y generación de resumen no iniciado

from langchain_google_genai import ChatGoogleGenerativeAI
from langchain_cohere import ChatCohere
from langchain_core.messages import HumanMessage
from my_models import GEMINI_FLASH
from my_keys import GEMINI_API_KEY, COHERE_API_KEY
from my_helper import encode_image
from langchain_core.prompts import ChatPromptTemplate, PromptTemplate
from langchain_core.output_parsers import StrOutputParser
from langchain_core.globals import set_debug

set_debug(True)

llm = ChatCohere(

cohere_api_key= COHERE_API_KEY

)

respuesta = llm.invoke([HumanMessage(content="Cuales canales colombianos de youtube me recomiendas para saber mas sobre telefonos inteligentes'?")])

print(f"Cohere: ", respuesta.content)

llm = ChatGoogleGenerativeAI(
api_key = GEMINI_API_KEY,
model = GEMINI_FLASH
)

respuesta = llm.invoke("Cuales canales colombianos de youtube me recomiendas para saber mas sobre telefonos inteligentes'?")

print(f"Gemini: ", respuesta.text)

imagen = encode_image("datos/ejemplo_grafico.jpg")

pregunta = "Describe la imagen: "

template_analisis = ChatPromptTemplate.from_messages(
[
(
"system",
"""
Asume que eres analista de imagenes. Tu principal tarea consiste en :
analizar una imagen para extraer as informaciones mas relevantes de manera objetiva.

        # FORMATO DE SALIDA
        Descripción de la imagen: Tu descripción de la imagen aqui.
        Etiquetas: Una lista con 3 palabras-clave separadas con comas.
        """
   ),
   (
       "user",
        [
            {
                "type":"texto", "text": "Describe la imagen: "
            },
            {
                "type": "image_url",
                "image_url": "data:image/jpeg;base64,{imagen_informada}"
            }

        ]
       
   )
]

)

cadena_analisis = template_analisis | llm | StrOutputParser()

respuesta_analisis = cadena_analisis.invoke({"imagen_informada": imagen})

print(respuesta_analisis)

llm_cohere = ChatCohere(cohere_api_key= COHERE_API_KEY)

template_respuesta = PromptTemplate(
template="""
Genera un resumen, utilizando un lenguaje claro y objetivo, enfocado en el publico colombiano.
La idea es que la comunicación del resultado sea lo mas sencilla posible, priorizando los registros para consultas posteriores.

        #RESULTADO DE LA IMAGEN
        {respuesta_analisis_imagen}
        """,
        input_variables=["respuesta_analisis_imagen"]

)

cadena_resumen = template_respuesta | llm_cohere | StrOutputParser()

cadena_compuesta = (cadena_analisis | cadena_resumen)

respuesta = cadena_compuesta.invoke({"imagen_informada": imagen})

R/{
"output": "Resumen del Gráfico: Adopción de Teléfonos Inteligentes en Colombia (2010-2020) \n\nEl gráfico muestra el aumento en el porcentaje de la población colombiana que utiliza teléfonos inteligentes entre 2010 y 2020. En 2010, solo el 15% de la población tenía un smartphone. Para 2020, este porcentaje creció de manera constante hasta alcanzar el 90%. La línea amarilla en el gráfico refleja un crecimiento sostenido durante la década, indicando una mayor adopción de esta tecnología en el país. \n\nDatos clave: \n- 2010: 15% \n- 2020: 90% \n\nEste registro es útil para consultas futuras sobre la evolución tecnológica en Colombia. \n\nEtiquetas: Gráfico, Tecnología, Estadísticas."
}

1 respuesta

Hola Estudiante, espero que estés teniendo un buen día.

Parece que estás intentando implementar una cadena completa para el análisis de imágenes y la generación de resúmenes utilizando LangChain, pero te has encontrado con algunos problemas. Vamos a intentar resolverlo juntos.

Por lo que veo en tu código, ya has configurado las API y los modelos necesarios. Sin embargo, parece que hay un problema en la ejecución de la cadena completa. Aquí hay algunos pasos que podrías considerar para solucionar el problema:

  1. Verifica las claves de API y modelos: Asegúrate de que las claves de API para Gemini y Cohere estén correctamente configuradas y que los modelos estén disponibles y funcionando. Puedes hacer una prueba simple para verificar que el modelo de Gemini está respondiendo correctamente, como ya has intentado con ChatGoogleGenerativeAI.

  2. Revisa el formato de la imagen: Asegúrate de que la imagen está siendo codificada correctamente. El método encode_image debería convertir la imagen en un formato que el modelo pueda interpretar. Verifica que el archivo de imagen existe y está accesible en la ruta especificada.

  3. Estructura del mensaje multimodal: Asegúrate de que el mensaje multimodal está siendo construido correctamente. En la plantilla template_analisis, verifica que la URL de la imagen está siendo correctamente insertada en el mensaje. Podrías imprimir el mensaje antes de enviarlo al modelo para asegurarte de que todo está en orden.

  4. Integración de las cadenas: Verifica que las cadenas de análisis y resumen están correctamente integradas. La variable cadena_compuesta debería combinar ambas cadenas de manera que el resultado del análisis de imagen sea pasado como entrada para la generación del resumen.

  5. Errores en la ejecución: Si hay algún error específico que aparece al ejecutar el código, intenta compartir el mensaje de error. Esto puede proporcionar pistas adicionales sobre lo que podría estar fallando.

Recuerda que este tipo de integraciones pueden requerir ajustes adicionales dependiendo de las respuestas del modelo y el formato de los datos que estás utilizando. Espero que estos consejos te sean útiles.

Espero haber ayudado y buenos estudios!