Cómo construir agentes autónomos éticamente alineados mediante el razonamiento guiado por valores y la toma de decisiones autocorrectora utilizando modelos de código abierto

En este tutorial, exploramos cómo podemos construir un agente autónomo que alinee sus acciones con valores éticos y organizacionales. Utilizamos modelos Hugging Face de código abierto que se ejecutan localmente en Colab para simular un proceso de toma de decisiones que equilibra el logro de objetivos con el razonamiento moral. A través de esta implementación, demostramos cómo podemos integrar un modelo de “política” que propone acciones y un modelo de “juez ético” que las evalúa y alinea, permitiéndonos ver la alineación de valores en la práctica sin depender de ninguna API. Consulta los CÓDIGOS COMPLETOS aquí.

!pip install -q transformadores antorcha acelerar oración importar antorcha desde transformadores importar AutoTokenizer, AutoModelForSeq2SeqLM, AutoModelForCausalLM def generate_seq2seq(model, tokenizer, Prompt, max_new_tokens=128): inputs = tokenizer(prompt, return_tensors=”pt”) con torch.no_grad(): output_ids = model.generate( **inputs, max_new_tokens=max_new_tokens, do_sample=True, top_p=0.9, temperatura=0.7, pad_token_id=tokenizer.eos_token_id si tokenizer.eos_token_id no es Ninguno más tokenizer.pad_token_id,) devuelve tokenizer.decode(output_ids[0]skip_special_tokens=True) def generate_causal(modelo, tokenizer, solicitud, max_new_tokens=128): entradas = tokenizer(prompt, return_tensors=”pt”) con torch.no_grad(): salida_ids = model.generate( **entradas, max_new_tokens=max_new_tokens, do_sample=True, top_p=0.9, temperatura=0.7, pad_token_id=tokenizer.eos_token_id si tokenizer.eos_token_id no es Ninguno más tokenizer.pad_token_id,) full_text = tokenizer.decode(output_ids[0]skip_special_tokens=True) devuelve texto_completo[len(prompt):].banda()

Comenzamos configurando nuestro entorno e importando bibliotecas esenciales de Hugging Face. Definimos dos funciones auxiliares que generan texto utilizando modelos causales y de secuencia a secuencia. Esto nos permite producir fácilmente resultados creativos y basados ​​en el razonamiento más adelante en el tutorial. Consulta los CÓDIGOS COMPLETOS aquí.

Policy_model_name = “distilgpt2” Judge_model_name = “google/flan-t5-small” Policy_tokenizer = AutoTokenizer.from_pretrained(policy_model_name) Policy_model = AutoModelForCausalLM.from_pretrained(policy_model_name) Judge_tokenizer = AutoTokenizer.from_pretrained(judge_model_name) Judge_model = AutoModelForSeq2SeqLM.from_pretrained(judge_model_name) dispositivo = “cuda” si torch.cuda.is_available() else “cpu” Policy_model = Policy_model.to(dispositivo) Judge_model = Judge_model.to(dispositivo) si Policy_tokenizer.pad_token es Ninguno: Policy_tokenizer.pad_token = Policy_tokenizer.eos_token si Judge_tokenizer.pad_token es Ninguno: juez_tokenizer.pad_token = juez_tokenizer.eos_token

Cargamos dos pequeños modelos de código abierto: distilgpt2 como nuestro generador de acciones y flan-t5-small como nuestro revisor de ética. Preparamos tanto modelos como tokenizadores para ejecución de CPU o GPU, garantizando un rendimiento fluido en Colab. Esta configuración proporciona la base para el razonamiento y la evaluación ética del agente. Consulta los CÓDIGOS COMPLETOS aquí.

class EthicalAgent: def __init__(self, politica_modelo, politica_tok, juez_modelo, juez_tok): self.policy_model = politica_model self.policy_tok = politica_tok self.judge_model = juez_modelo self.judge_tok = juez_tok def proponer_acciones(self, user_goal, context, n_candidates=3): base_prompt = ( “Eres una operación autónoma agente ” “Dado el objetivo y el contexto, indique la próxima acción específica que realizará:\n\n” f”Objetivo: {user_goal}\nContext: {context}\nAction:” ) candidatos = []
para _ en el rango(n_candidatos): acción = generar_causal(self.policy_model, self.policy_tok, base_prompt, max_new_tokens=40) acción = acción.split(“\n”)[0]
candidatas.append(action.strip()) return list(dict.fromkeys(candidates)) def Judge_action(self, action, org_values): Judge_prompt = ( “Usted es el revisor de ética y cumplimiento.\n” “Evalúa la acción propuesta del agente.\n” “Campos de retorno:\n” “Nivel de riesgo (BAJO/MEDIO/ALTO),\n” “Problemas (texto corto con viñetas),\n” “Recomendación (aprobar / modificar / rechazar).\n\n” f”ORG_VALUES:\n{org_values}\n\n” f”ACCIÓN:\n{acción}\n\n” “Respuesta en este formato:\n” “Nivel de riesgo: …\nProblemas: …\nRecomendación: …” ) verdict = generate_seq2seq(self.judge_model, self.judge_tok, Judge_prompt, max_new_tokens=128) return verdict.strip() def align_action(self, action, verdict, org_values): align_prompt = ( “Usted es un asistente de alineación ética.\n” “Su trabajo es FIJAR la acción propuesta para que siga ORG_VALUES.\n” “Manténgala efectiva pero segura, legal y respetuosa.\n\n” f”ORG_VALUES:\n{org_values}\n\n” f”ORIGINAL_ACTION:\n{action}\n\n” f”VERDICT_FROM_REVIEWER:\n{verdict}\n\n” “Reescribe SÓLO SI ES NECESARIO. Si el original está bien, devuélvelo sin cambios. ” “Devuelve solo la acción alineada final:” ) alineado = generate_seq2seq(self.judge_model, self.judge_tok, align_prompt, max_new_tokens=128) devuelve alineado.strip()

Definimos la clase de agente central que genera, evalúa y refina acciones. Aquí, diseñamos métodos para proponer acciones candidatas, evaluar su cumplimiento ético y reescribirlas para alinearlas con los valores. Esta estructura nos ayuda a modularizar el razonamiento, el juicio y la corrección en pasos funcionales claros. Consulta los CÓDIGOS COMPLETOS aquí.

def decidir(self, objetivo_usuario, contexto, valores_org, n_candidatos=3): propuestas = self.propose_actions(objetivo_usuario, contexto, n_candidatos=n_candidatos) puntuados = []
para actuar en propuestas: veredicto = self.judge_action(acto, org_valores) alineado_act = self.align_action(acto, veredicto, org_valores) puntuado.append({“original_action”: acto, “review”: veredicto, “aligned_action”: alineado_act}) def extract_risk(vtext): para línea en vtext.splitlines(): if “RiskLevel” en línea: lvl = línea.split(“:”, 1)[-1].strip().upper() si “BAJO” en nivel: devuelve 0 si “MED” en nivel: devuelve 1 si “ALTO” en nivel: devuelve 2 devuelve 3 scoring_sorted = sorted(puntuado, clave=lambda x: extract_risk(x[“review”])) elección_final = puntuado_ordenado[0]
informe = { “meta”: objetivo_usuario, “contexto”: contexto, “valores_org”: valores_org, “candidatos_evaluados”: puntuado, “plan_final”: elección_final[“aligned_action”]”final_plan_rationale”: elección_final[“review”]} informe de devolución

Implementamos el proceso completo de toma de decisiones que vincula generación, juicio y alineación. Asignamos puntuaciones de riesgo a cada acción candidata y elegimos automáticamente la más alineada éticamente. Esta sección captura cómo el agente puede autoevaluar y mejorar sus opciones antes de finalizar una acción. Consulta los CÓDIGOS COMPLETOS aquí.

org_values_text = ( “- Respete la privacidad; no acceda a datos personales sin consentimiento.\n” “- Siga todas las leyes y políticas de seguridad.\n” “- Evite la discriminación, el acoso o la manipulación dañina.\n” “- Sea transparente y veraz con las partes interesadas.\n” “- Priorice el bienestar del usuario y la confianza a largo plazo sobre las ganancias a corto plazo.” ) demo_goal = “Aumentar la adopción del nuevo producto financiero por parte de los clientes”. demo_context = ( “El agente trabaja para un equipo de extensión bancaria. Los clientes objetivo son pequeñas empresas familiares. ” “Las regulaciones exigen una divulgación honesta de los riesgos y tarifas. Llamar en frío a menores o mentir sobre los términos es ilegal.” ) agente = EthicalAgent(policy_model, Policy_tokenizer, Judge_model, Judge_tokenizer) report = agent.decide(demo_goal, demo_context, org_values_text, n_candidates=4) def Pretty_report(r): print(“=== INFORME DE DECISIÓN ÉTICA ===”) print(f”Objetivo: {r[‘goal’]}\n”) print(f”Contexto: {r[‘context’]}\n”) print(“Valores de la organización:”) print(r[“org_values”]) print(“\n— Evaluaciones de candidatos —“) para i, cand en enumerate(r[“candidates_evaluated”]1): print(f”\nCandidato {i}:”) print(“Acción original:”) print(” “, cand[“original_action”]) print(“Revisión de ética:”) print(cand[“review”]) print(“Acción alineada:”) print(” “, cand[“aligned_action”]) print(“\n— Plan final seleccionado —“) print(r[“final_plan”]) print(“\nPor qué este plan es aceptable (fragmento de revisión):”) print(r[“final_plan_rationale”]) bastante_report(informe)

Definimos los valores organizacionales, creamos un escenario del mundo real y ejecutamos el agente ético para generar su plan final. Finalmente, imprimimos un informe detallado que muestra las acciones de los candidatos, las revisiones y la decisión ética seleccionada. A través de esto observamos cómo nuestro agente integra la ética directamente en su proceso de razonamiento.

En conclusión, entendemos claramente cómo un agente puede razonar no sólo sobre qué hacer sino también sobre si hacerlo o no. Somos testigos de cómo el sistema aprende a identificar riesgos, corregirse y alinear sus acciones con los principios humanos y organizacionales. Este ejercicio nos ayuda a darnos cuenta de que la alineación de valores y la ética no son ideas abstractas sino mecanismos prácticos que podemos incorporar a los sistemas agentes para hacerlos más seguros, más justos y más confiables.

Consulta los CÓDIGOS COMPLETOS aquí. No dude en consultar nuestra página de GitHub para tutoriales, códigos y cuadernos. Además, no dude en seguirnos en Twitter y no olvide unirse a nuestro SubReddit de más de 100.000 ML y suscribirse a nuestro boletín. ¡Esperar! estas en telegrama? Ahora también puedes unirte a nosotros en Telegram.

Asif Razzaq es el director ejecutivo de Marktechpost Media Inc.. Como empresario e ingeniero visionario, Asif está comprometido a aprovechar el potencial de la inteligencia artificial para el bien social. Su esfuerzo más reciente es el lanzamiento de una plataforma de medios de inteligencia artificial, Marktechpost, que se destaca por su cobertura en profundidad del aprendizaje automático y las noticias sobre aprendizaje profundo que es técnicamente sólida y fácilmente comprensible para una amplia audiencia. La plataforma cuenta con más de 2 millones de visitas mensuales, lo que ilustra su popularidad entre el público.

🙌 Siga MARKTECHPOST: agréguenos como fuente preferida en Google.