En este tutorial, exploramos cómo podemos construir un agente autónomo que alinee sus acciones con títulos éticos y organizacionales. Utilizamos modelos Hugging Face de código campechano que se ejecutan localmente en Colab para fingir un proceso de toma de decisiones que equilibra el logro de objetivos con el razonamiento ético. A través de esta implementación, demostramos cómo podemos integrar un maniquí de “política” que propone acciones y un maniquí de “árbitro ético” que las evalúa y alinea, permitiéndonos ver la columna de títulos en la experiencia sin acatar de ninguna API. Mira el CÓDIGOS COMPLETOS aquí.
!pip install -q transformers torch accelerate sentencepiece
import torch
from transformers import AutoTokenizer, AutoModelForSeq2SeqLM, AutoModelForCausalLM
def generate_seq2seq(model, tokenizer, prompt, max_new_tokens=128):
inputs = tokenizer(prompt, return_tensors="pt")
with torch.no_grad():
output_ids = model.generate(
**inputs,
max_new_tokens=max_new_tokens,
do_sample=True,
top_p=0.9,
temperature=0.7,
pad_token_id=tokenizer.eos_token_id if tokenizer.eos_token_id is not None else tokenizer.pad_token_id,
)
return tokenizer.decode(output_ids(0), skip_special_tokens=True)
def generate_causal(model, tokenizer, prompt, max_new_tokens=128):
inputs = tokenizer(prompt, return_tensors="pt")
with torch.no_grad():
output_ids = model.generate(
**inputs,
max_new_tokens=max_new_tokens,
do_sample=True,
top_p=0.9,
temperature=0.7,
pad_token_id=tokenizer.eos_token_id if tokenizer.eos_token_id is not None else tokenizer.pad_token_id,
)
full_text = tokenizer.decode(output_ids(0), skip_special_tokens=True)
return full_text(len(prompt):).strip()
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 delante en el tutorial. Mira el 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)
device = "cuda" if torch.cuda.is_available() else "cpu"
policy_model = policy_model.to(device)
judge_model = judge_model.to(device)
if policy_tokenizer.pad_token is None:
policy_tokenizer.pad_token = policy_tokenizer.eos_token
if judge_tokenizer.pad_token is None:
judge_tokenizer.pad_token = judge_tokenizer.eos_token
Cargamos dos pequeños modelos de código campechano: distilgpt2 como nuestro productor 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 colchoneta para el razonamiento y la evaluación ética del agente. Mira el CÓDIGOS COMPLETOS aquí.
class EthicalAgent:
def __init__(self, policy_model, policy_tok, judge_model, judge_tok):
self.policy_model = policy_model
self.policy_tok = policy_tok
self.judge_model = judge_model
self.judge_tok = judge_tok
def propose_actions(self, user_goal, context, n_candidates=3):
base_prompt = (
"You are an autonomous operations agent. "
"Given the goal and context, list a specific next action you will take:nn"
f"Goal: {user_goal}nContext: {context}nAction:"
)
candidates = ()
for _ in range(n_candidates):
action = generate_causal(self.policy_model, self.policy_tok, base_prompt, max_new_tokens=40)
action = action.split("n")(0)
candidates.append(action.strip())
return list(dict.fromkeys(candidates))
def judge_action(self, action, org_values):
judge_prompt = (
"You are the Ethics & Compliance Reviewer.n"
"Evaluate the proposed agent action.n"
"Return fields:n"
"RiskLevel (LOW/MED/HIGH),n"
"Issues (short bullet-style text),n"
"Recommendation (approve / modify / reject).nn"
f"ORG_VALUES:n{org_values}nn"
f"ACTION:n{action}nn"
"Answer in this format:n"
"RiskLevel: ...nIssues: ...nRecommendation: ..."
)
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 = (
"You are an Ethics Alignment Assistant.n"
"Your job is to FIX the proposed action so it follows ORG_VALUES.n"
"Keep it effective but safe, permitido, and respectful.nn"
f"ORG_VALUES:n{org_values}nn"
f"ORIGINAL_ACTION:n{action}nn"
f"VERDICT_FROM_REVIEWER:n{verdict}nn"
"Rewrite ONLY IF NEEDED. If diferente is fine, return it unchanged. "
"Return just the final aligned action:"
)
aligned = generate_seq2seq(self.judge_model, self.judge_tok, align_prompt, max_new_tokens=128)
return aligned.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 títulos. Esta estructura nos ayuda a modularizar el razonamiento, el inteligencia y la corrección en pasos funcionales claros. Mira el CÓDIGOS COMPLETOS aquí.
def decide(self, user_goal, context, org_values, n_candidates=3):
proposals = self.propose_actions(user_goal, context, n_candidates=n_candidates)
scored = ()
for act in proposals:
verdict = self.judge_action(act, org_values)
aligned_act = self.align_action(act, verdict, org_values)
scored.append({"original_action": act, "review": verdict, "aligned_action": aligned_act})
def extract_risk(vtext):
for line in vtext.splitlines():
if "RiskLevel" in line:
lvl = line.split(":", 1)(-1).strip().upper()
if "LOW" in lvl:
return 0
if "MED" in lvl:
return 1
if "HIGH" in lvl:
return 2
return 3
scored_sorted = sorted(scored, key=lambda x: extract_risk(x("review")))
final_choice = scored_sorted(0)
report = {
"goal": user_goal,
"context": context,
"org_values": org_values,
"candidates_evaluated": scored,
"final_plan": final_choice("aligned_action"),
"final_plan_rationale": final_choice("review"),
}
return report
Implementamos el proceso completo de toma de decisiones que vincula procreación, inteligencia y columna. Asignamos puntuaciones de peligro a cada entusiasmo candidata y elegimos automáticamente la más alineada éticamente. Esta sección captura cómo el agente puede autoevaluar y mejorar sus opciones antaño de finalizar una entusiasmo. Mira el CÓDIGOS COMPLETOS aquí.
org_values_text = (
"- Respect privacy; do not access personal data without consent.n"
"- Follow all laws and safety policies.n"
"- Avoid discrimination, harassment, or harmful manipulation.n"
"- Be transparent and truthful with stakeholders.n"
"- Prioritize user well-being and long-term trust over short-term gain."
)
demo_goal = "Increase customer adoption of the new financial product."
demo_context = (
"The agent works for a bank outreach team. The target customers are small family businesses. "
"Regulations require honest disclosure of risks and fees. Cold-calling minors or lying about terms is illegal."
)
agent = 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("=== ETHICAL DECISION REPORT ===")
print(f"Goal: {r('goal')}n")
print(f"Context: {r('context')}n")
print("Org Values:")
print(r("org_values"))
print("n--- Candidate Evaluations ---")
for i, cand in enumerate(r("candidates_evaluated"), 1):
print(f"nCandidate {i}:")
print("Flamante Action:")
print(" ", cand("original_action"))
print("Ethics Review:")
print(cand("review"))
print("Aligned Action:")
print(" ", cand("aligned_action"))
print("n--- Final Plan Selected ---")
print(r("final_plan"))
print("nWhy this plan is acceptable (review snippet):")
print(r("final_plan_rationale"))
pretty_report(report)
Definimos los títulos organizacionales, creamos un círculo del mundo existente y ejecutamos el agente ético para suscitar su plan final. Finalmente, imprimimos un crónica detallado que muestra las acciones de los candidatos, las revisiones y la osadía é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 además 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 prueba nos ayuda a darnos cuenta de que la columna de títulos 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.
Mira el CÓDIGOS COMPLETOS aquí. No dudes en consultar nuestra Página de GitHub para tutoriales, códigos y cuadernos. Por otra parte, no dudes en seguirnos en Gorjeo y no olvides unirte a nuestro SubReddit de más de 100.000 ml y suscríbete a nuestro boletín. ¡Esperar! estas en telegrama? Ahora además puedes unirte a nosotros en Telegram.
Asif Razzaq es el director ejecutor de Marktechpost Media Inc.. Como emprendedor e ingeniero quimérico, Asif está comprometido a exprimir el potencial de la inteligencia químico para el acertadamente social. Su esfuerzo más nuevo es el emanación de una plataforma de medios de inteligencia químico, Marktechpost, que se destaca por su cobertura en profundidad del formación forzoso y las parte sobre formación 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 divulgado.