Google AI ofrece una gama de modelos de chat avanzados que podemos usar en LangChain, permitiendo el uso de características como invocación de herramientas, streaming de tokens, y mucho más.
En esta clase, aprenderemos a utilizar los modelos de chat de Google AI con LangChain, específicamente los modelos Gemini.
Exploraremos cómo conectarnos a estos modelos, generar respuestas en diálogos, y cómo aprovechar las herramientas de Google para personalizar la seguridad y el rendimiento de nuestras aplicaciones de chat.
Google AI vs Google Cloud Vertex AI
Google ofrece acceso a los modelos Gemini a través de dos plataformas diferentes:
Google AI (Gemini): Requiere solo una cuenta de Google y una clave API. Esta opción es ideal para proyectos rápidos o personales.
Google Cloud Vertex AI: Ofrece características empresariales como claves de encriptación personalizadas y redes privadas. Requiere una cuenta de Google Cloud y facturación activa.
Para esta clase, utilizaremos Google AI, que es más sencillo y rápido de configurar.
Configuración de Google AI en LangChain
Paso 1: Crear una Cuenta en Google y Obtener una API Key
Para utilizar los modelos de Google AI, necesitas obtener una clave API siguiendo estos pasos:
Con la integración instalada y la API key configurada, podemos instanciar un modelo de Google AI y generar una respuesta. Aquí usaremos el modelo Gemini 1.5-pro:
from langchain_google_genai import ChatGoogleGenerativeAI
llm = ChatGoogleGenerativeAI( model="gemini-1.5-pro", temperature=0, max_tokens=None, timeout=None, max_retries=2,# other params...)
messages =[("system","You are a helpful assistant that translates English to French. Translate the user sentence.",),("human","I love programming."),]ai_msg = llm.invoke(messages)ai_msg
print(ai_msg.content)
Encadenar el Modelo con Plantillas de Prompts
Podemos mejorar la funcionalidad del modelo encadenándolo con plantillas de prompts. Esto permite adaptar el comportamiento del modelo de forma dinámica, por ejemplo, para traducciones entre diferentes idiomas.
from langchain_core.prompts import ChatPromptTemplate
# Crear una plantilla de prompt para traduccionesprompt = ChatPromptTemplate.from_messages([("system","Eres un asistente útil que traduce {input_language} a {output_language}.",),("human","{input}"),])# Encadenar la plantilla con el modelo de Google AIchain = prompt | llm
# Invocar la cadena con parámetros específicoschain.invoke({"input_language":"English","output_language":"German","input":"I love programming.",})
La respuesta generada será:
pythonCopiar código
"Ich liebe das Programmieren. \n"
Configuración de Seguridad en los Modelos Gemini
Los modelos Gemini de Google AI tienen configuraciones de seguridad por defecto que ayudan a prevenir la generación de contenido dañino. Sin embargo, estas configuraciones pueden ser ajustadas para adaptarse mejor a las necesidades de tu aplicación.
Por ejemplo, si estás recibiendo muchos "Safety Warnings" en tus respuestas, puedes modificar los umbrales de bloqueo para categorías específicas de contenido:
pythonCopiar código
from langchain_google_genai import( ChatGoogleGenerativeAI, HarmBlockThreshold, HarmCategory,)# Desactivar el bloqueo para contenido peligrosollm = ChatGoogleGenerativeAI( model="gemini-1.5-pro", safety_settings={ HarmCategory.HARM_CATEGORY_DANGEROUS_CONTENT: HarmBlockThreshold.BLOCK_NONE,},)
Este código ajusta la configuración de seguridad para permitir contenido que normalmente podría estar bloqueado por defecto.
Conclusión
Los modelos de Google ofrecen una solución robusta para construir aplicaciones de chat avanzadas, desde la configuración básica hasta la generación de respuestas y el uso de plantillas de prompts, hemos explorado cómo ajustar las configuraciones de seguridad para personalizar el comportamiento del modelo según las necesidades de tu aplicación.utilizando los modelos de Google AI con LangChain específicamente con Gemini.
Ejercicio Final:
Configura tu clave API de Google AI y genera una conversación básica con el modelo.
Modifica la configuración de seguridad del modelo para ajustar los umbrales de bloqueo y experimenta con diferentes respuestas.
Reflexiona sobre cómo podrías integrar los modelos de Google AI en un proyecto para mejorar la interacción con los usuarios.
from langchain_google_genai import ChatGoogleGenerativeAI
HARM_BLOCK_THRESHOLD_UNSPECIFIED (0): No se especifica un umbral de bloqueo; la configuración predeterminada es incierta.
BLOCK_LOW_AND_ABOVE (1): Bloquea contenido clasificado como de bajo riesgo y superior (medio y alto).
BLOCK_MEDIUM_AND_ABOVE (2): Bloquea contenido de riesgo medio y alto; permite contenido de bajo riesgo.
BLOCK_ONLY_HIGH (3): Solo bloquea contenido clasificado como de alto riesgo; permite contenido de bajo y medio riesgo.
BLOCK_NONE (4): No se bloquea ningún contenido; permite todo tipo de contenido.
OFF (5): Desactiva todas las configuraciones de seguridad; no se aplican restricciones.
se ve divertido.
Si en el modelo les sale error, miren bien que modelo les sale en su curl cuando ingresan para crear la API Key, ya que si en el caso del grupo es con "gemini-1.5-pro" y me fije en el curl que aparece y en mi caso es "gemini-1.5-flash" y funciono bien.
Si al intentar ejecutar la respuesta con Google AI les aparece un mensaje que comienza similar al siguiente:
WARNING:langchain_google_genai.chat_models:Retrying langchain_google_genai.chat_models._chat_with_retry.<locals>._chat_with_retry in 2.0 seconds as it raised ResourceExhausted: 429 You exceeded your current quota, please check your plan and billing details. For more information on this error, head to: . \violations {
quota_metric: "generativelanguage.googleapis.com/generate_content_free_tier_input_token_count"
quota_id: "GenerateContentInputTokensPerModelPerMinute-FreeTier"
A mi también me pasó y lo solucioné revisando el modelo en AI Studio (en donde obtuve mi API Key) [https://aistudio.google.com/apikey, en la guía aparece el modelo correspondiente (En mi caso, fue "gemini-2.0-flash". Lo reemplacé en el valor de "model" al crear la llm. Luego lo volví a ejecutar, y ya funciona!
La configuración de la API de Google AI puede resultar complicada si no se siguen todos los pasos. Asegúrate de haber obtenido correctamente tu clave API y de configurarla como variable de entorno en tu script Python. Utiliza el siguiente código:
import getpass
import os
os.environ["GOOGLE_API_KEY"]= getpass.getpass("Introduce tu clave API de Google AI: ")
También verifica que hayas instalado la integración con el comando:
pip install -qU langchain-google-genai
Si aún tienes problemas, revisa la documentación de LangChain para más detalles sobre la configuración.
este modelo:
gemini-1.5-pro
ya no existe, copien este:
gemini-2.5-flash
este si me corrio correctamente, eso si debe generar primero el api key en google ai studio
Aparentemente llm.invoke(messages) quedó desfasado. Ahora es model.invoke(messages)
Anthropic:
ok
Por lo que lei en los comentarios toca pagar para generar la API KEY me genera este error
RateLimitError: Error code: 429 - {'error': {'message': 'You exceeded your current quota, please check your plan and billing details. For more information on this error, read the docs: .', 'type': 'insufficient_quota', 'param': None, 'code': 'insufficient_quota'}}
Tengo el mismo error! :c
Lo solucioné revisando el modelo. En AI Studio, en donde obtienes tu API Key, aparece el modelo que se ajusta a tu clave. Y eso lo reemplazas en el valor de "model" al crear la llm. Luego lo vuelves a ejecutar, y ya funciona!
En Vertex AI, el detalle de la cuenta es que los proyectos se restablecen después de 24 horas si no cuentas con suficientes créditos para facturar.
por que me pide password?
Google AI (Gemini): Requiere solo una cuenta de Google y una clave API. Esta opción es ideal para proyectos rápidos o personales.
Sí, puedes utilizar los modelos de Google AI con LangChain en las aplicaciones que desees, siempre que cumplas con los requisitos de configuración de la API. Esto incluye la obtención de una clave API y la instalación del paquete de integración. La flexibilidad de LangChain permite adaptarlo a diversas necesidades, como automatizar tareas, mejorar la interacción de usuario o realizar análisis de datos.
En la sección encadenar El modelo, para poder obtener la respuesta que se nos muestra es necesario agregar chain.invoke a una variable. en mi caso lo hice con una variable llamada _messages_ y quedó así
# Invocar la cadena con parámetros específicosmessage = chain.invoke( { "input_language": "English", "output_language": "German", "input": "I love programming, though.", })# Visualizar la respuesta del modelo sin toda la información de respuestamessage.content
Y por respuesta obtengo lo que se muestra en el texto de la clase:
'Ich liebe das Programmieren aber. \n'
Si se quisiera obtener el texto solamente sin el utimo par de caracteres, se puede usar la función print:
print(message.content)
from langchain_google_genai importGoogleGenerativeAI# Inicializar el modelo de GoogleAIllm =GoogleGenerativeAI( model="gemini-1.5-pro", temperature=0, max_tokens=None, timeout=None, max_retries=2, # otros parámetros según sea necesario...)# Crear los mensajes para la traducción
messages =[("system","You are a helpful assistant that translates English to French. Translate the user sentence.",),("human","I love programming."),]# Invocar el modelo con los mensajes
ai_msg = llm.invoke(messages)# Imprimir el contenido de la respuesta
print(ai_msg)```Asi estructuramos los ejemplo anteriores con google Ai herramienta gratuita
Lo que hace chain = prompt | llm donde tengo entendido agrega como un pipeline para procesar la información, esperaría que igual se pudiera pasar mas template antes de un invoke como chain = promptGenerateContent | promptReviewContent | promptSelect | llm (?)
excelente para hacer mi profesor de ingles personal