En este tutorial, pasamos a través de la configuración de un agente de IA reformista usando Microsoft’s Agente-encendedor estructura. Estamos ejecutando todo directamente en el interior de Google Colab, lo que significa que podemos comprobar con entreambos servidor y componentes del cliente en un solo ocasión. Al aclarar un pequeño agente de control de calidad, conectarlo a un servidor nave de acumulación de agentes y luego capacitarlo con múltiples indicaciones del sistema, podemos observar cómo el situación admite actualizaciones de posibles, colas de tareas y evaluación automatizada. Mira el Códigos completos aquí.
!pip -q install agentlightning openai nest_asyncio python-dotenv > /dev/null
import os, threading, time, asyncio, nest_asyncio, random
from getpass import getpass
from agentlightning.litagent import LitAgent
from agentlightning.trainer import Trainer
from agentlightning.server import AgentLightningServer
from agentlightning.types import PromptTemplate
import openai
if not os.getenv("OPENAI_API_KEY"):
try:
os.environ("OPENAI_API_KEY") = getpass("🔑 Enter OPENAI_API_KEY (leave blank if using a nave/proxy saco): ") or ""
except Exception:
pass
MODEL = os.getenv("MODEL", "gpt-4o-mini")
Comenzamos instalando las bibliotecas requeridas e importando todos los módulos centrales que necesitamos para la luz de agente. Asimismo configuramos nuestra tecla API de OpenAI de forma segura y definimos el maniquí que utilizaremos para el tutorial. Mira el Códigos completos aquí.
class QAAgent(LitAgent):
def training_rollout(self, task, rollout_id, resources):
"""Given a task {'prompt':..., 'answer':...}, ask LLM using the server-provided system prompt and return a reward in (0,1)."""
sys_prompt = resources("system_prompt").template
user = task("prompt"); gold = task.get("answer","").strip().lower()
try:
r = openai.chat.completions.create(
model=MODEL,
messages=({"role":"system","content":sys_prompt},
{"role":"user","content":user}),
temperature=0.2,
)
pred = r.choices(0).message.content.strip()
except Exception as e:
pred = f"(error){e}"
def score(pred, gold):
P = pred.lower()
saco = 1.0 if gold and gold in P else 0.0
gt = set(gold.split()); pr = set(P.split());
inter = len(gt & pr); denom = (len(gt)+len(pr)) or 1
overlap = 2*inter/denom
brevity = 0.2 if saco==1.0 and len(P.split())<=8 else 0.0
return max(0.0, min(1.0, 0.7*saco + 0.25*overlap + brevity))
return float(score(pred, gold))
Definimos un Qaagent simple extendiendo Litagent, donde manejamos cada divulgación de entrenamiento enviando el indicador del favorecido al LLM, recolectando la respuesta y anotándola contra la respuesta de oro. Diseñamos la función de retribución para efectuar la corrección, la superposición del token y la brevedad, lo que permite al agente estudiar y producir futuro concisas y precisas. Mira el Códigos completos aquí.
TASKS = (
{"prompt":"Haber of France?","answer":"Paris"},
{"prompt":"Who wrote Pride and Prejudice?","answer":"Jane Austen"},
{"prompt":"2+2 = ?","answer":"4"},
)
PROMPTS = (
"You are a terse expert. Answer with only the final fact, no sentences.",
"You are a helpful, knowledgeable AI. Prefer concise, correct answers.",
"Answer as a rigorous evaluator; return only the canonical fact.",
"Be a friendly tutor. Give the one-word answer if obvious."
)
nest_asyncio.apply()
HOST, PORT = "127.0.0.1", 9997
Definimos un pequeño punto de relato con tres tareas de control de calidad y cuestionamos múltiples indicaciones del sistema candidato para optimizar. Luego aplicamos Nest_asyncio y establecemos nuestro host del servidor nave y el puerto, lo que nos permite ejecutar el servidor y los clientes de agente-lighting en un solo tiempo de ejecución de Colab. Mira el Códigos completos aquí.
async def run_server_and_search():
server = AgentLightningServer(host=HOST, port=PORT)
await server.start()
print("✅ Server started")
await asyncio.sleep(1.5)
results = ()
for sp in PROMPTS:
await server.update_resources({"system_prompt": PromptTemplate(template=sp, engine="f-string")})
scores = ()
for t in TASKS:
tid = await server.queue_task(sample=t, mode="train")
rollout = await server.poll_completed_rollout(tid, timeout=40) # waits for a worker
if rollout is None:
print("⏳ Timeout waiting for rollout; continuing...")
continue
scores.append(float(getattr(rollout, "final_reward", 0.0)))
avg = sum(scores)/len(scores) if scores else 0.0
print(f"🔎 Prompt avg: {avg:.3f} | {sp}")
results.append((sp, avg))
best = max(results, key=lambda x: x(1)) if results else ("",0)
print("n🏁 BEST PROMPT:", best(0), " | score:", f"{best(1):.3f}")
await server.stop()
Comenzamos el servidor de agente-iluminación e iteramos a través de las indicaciones de nuestro sistema candidato, actualizando el sistema compartido_prompt ayer de hacer nalgas cada tarea de capacitación. Luego encuestamos para despliegues completados, calculamos las recompensas promedio por aviso, informamos el mensaje de mejor rendimiento y detenga con garbo el servidor. Mira el Códigos completos aquí.
def run_client_in_thread():
agent = QAAgent()
trainer = Trainer(n_workers=2)
trainer.fit(agent, backend=f"http://{HOST}:{PORT}")
client_thr = threading.Thread(target=run_client_in_thread, daemon=True)
client_thr.start()
asyncio.run(run_server_and_search())
Lanzamos al cliente en un hilo separado con dos trabajadores paralelos, lo que le permite procesar tareas enviadas por el servidor. Al mismo tiempo, ejecutamos el caracolillo del servidor, que evalúa diferentes indicaciones, recopila resultados de despliegue e informa el mejor mensaje del sistema basado en una retribución promedio.
En conclusión, veremos cómo el agente-luz nos permite crear una tubería de agente flexible con solo unas pocas líneas de código. Podemos iniciar un servidor, ejecutar trabajadores de clientes paralelos, evaluar diferentes indicaciones del sistema y determinar automáticamente el rendimiento, todo en el interior de un solo entorno de Colab. Esto demuestra cómo el situación optimiza el proceso de construcción, prueba y optimización de agentes de IA de modo estructurada.
Mira el Códigos completos aquí. No dude en ver nuestro Página de Github para tutoriales, códigos y cuadernos. Por otra parte, siéntete escapado de seguirnos Gorjeo Y no olvides unirte a nuestro Subreddit de 100k+ ml y suscribirse a Nuestro boletín.
Asif Razzaq es el CEO de MarktechPost Media Inc .. Como patrón e ingeniero iluminado, ASIF se compromete a rendir el potencial de la inteligencia industrial para el admisiblemente social. Su esfuerzo más fresco es el divulgación de una plataforma de medios de inteligencia industrial, MarktechPost, que se destaca por su cobertura profunda de noticiero de educación instintivo y de educación profundo que es técnicamente sólido y fácilmente comprensible por una audiencia amplia. La plataforma cuenta con más de 2 millones de vistas mensuales, ilustrando su popularidad entre el manifiesto.