- Código Google parte 1 ver siguiente cometario:
import os
from google import genai
from google.genai import errors
from dotenv import load_dotenv
import json
load_dotenv()
client = genai.Client(api_key=os.getenv("GOOGLE_API_KEY"))
modelo = "gemini-2.5-flash-lite"
def carga(nombre_archivo):
try:
with open(nombre_archivo, "r", encoding="utf-8") as archivo:
return archivo.read()
except IOError as e:
print(f"Error al leer: {e}")
return None
def guardar(nombre_archivo, contenido):
try:
with open(nombre_archivo, "w", encoding="utf-8") as archivo:
archivo.write(contenido)
except IOError as e:
print(f"Error al guardar: {e}")
def limpiar_json(texto):
"""Lógica centralizada para limpiar bloques de código Markdown"""
if "```json" in texto:
texto = texto.split("```json")[1].split("```")[0].strip()
elif "```" in texto:
texto = texto.split("```")[1].split("```")[0].strip()
return texto.strip()
def generar_informe(transaccion):
print(f"2. Generando el informe para la transacción: {transaccion['ID Transacción']}")
prompt_sistema = """
Para la siguiente transacción, proporciona un parecer, solo si su estado es de "Posible Fraude". Indica en el informe una justificación por la cual fue identificada como un fraude.
# Formato Salida
"ID Transacción": "id",
"Tipo de Transacción": "Crédito o Débito",
"Establecimiento": "nombre del establecimiento",
"Horario": "aaaa-mm-dd hh: mm: ss"
"Producto": "nome producto"
"Ciudad - Estado": "Ciudad - Departamento (País)",
"Valor (USD)": valor número entero,
"Estado": "Aprobado o Posible Fraude"
"Informe": "informe con las posibles indicaciones"
"""
try:
respuesta = client.models.generate_content(
model = modelo,
contents = f"Transacción para analizar: {json.dumps(transaccion)}",
config = {
"system_instruction" : prompt_sistema
}
)
return respuesta.text
except errors.ClientError as e:
# CORRECCIÓN: Acceso correcto al código de error en 2025
# El código numérico suele venir en e.args[0] o dentro del mensaje
error_msg = str(e)
if "404" in error_msg:
print(f"Error 404: El modelo '{modelo}' no existe. Usa 'gemini-2.0-flash' o 'gemini-3-flash-preview'.")
elif "400" in error_msg:
print("Error 400: Llave API inválida o error en los datos enviados.")
elif "429" in error_msg:
print("Error 429: Cuota agotada. Espera unos segundos. Usa 'gemini-2.0-flash' o 'gemini-3-flash-preview'.")
else:
print(f"Error de cliente: {e}")
except errors.APIError as e:
print(f"Error de servidor de Google: {e}")
except Exception as e:
print(f"Error inesperado: {type(e).__name__} - {e}")
def analizador_transacciones(lista_transacciones):
print(f"1. Realizando el análisis pas las transacciones: {lista_transacciones}")
prompt_sistema = """
Analiza las transacciones financieras a continuación e identifica si cada una de ellas es un "Posible Fraude" o debe ser "Aprobada".
Agrega un atributo "Estado" con uno de los valores: "Posible Fraude" o "Aprobado" .
Cada nueva transacción debe ser insertada dentro de la lista del JSON.
# Posibles indicaciones de fraude
- Transacciones con valores muy discrepantes
- Transacciones que ocurren en lugares muy distantes entre sí
Adopta el formato de respuesta a continuación para componer tu respuesta.
# Formato Salida
{
"transacciones": [
{
"ID Transacción": "id",
"Tipo de Transacción": "Crédito o Débito",
"Establecimiento": "nombre del establecimiento",
"Horario": "aaaa-mm-dd hh:mm:ss",
"Producto": "nome producto",
"Ciudad - Estado": "Ciudad - Departamento (Pais)",
"Valor (USD)": valor numero entero,
"Estado": "Posible Fraude o Aprobado"
},
]
}
"""
