import wandb
import weave
import random
# Initialize both W&B and Weave with the same project
project = "my-workspace-project"
weave.init(project)
@weave.op
def evaluate_model(model_state, epoch):
# Simulate evaluation metrics
accuracy = 0.7 + epoch * 0.02 + random.uniform(-0.05, 0.05)
# Track specific model behaviors
test_responses = {
"conciseness_check": "Model generated 500 words for simple question",
"accuracy_check": "Model answered 8/10 questions correctly",
"hallucination_check": "No factual errors detected"
}
return {
"accuracy": accuracy,
"diagnostic_results": test_responses
}
@weave.op
def training_step(epoch, lr):
# Simulate Training logic
loss = 1.0 / (epoch + 1) + random.uniform(-0.1, 0.1)
# Evaluation with traces
eval_results = evaluate_model(f"checkpoint_{epoch}", epoch)
return {
"loss": loss,
"accuracy": eval_results["accuracy"],
"diagnostics": eval_results["diagnostic_results"]
}
# Training loop
with wandb.init(project=project, config={"lr": 0.01}) as run:
for epoch in range(5):
# Execute training with Weave tracing
results = training_step(epoch, run.config.lr)
# Log to W&B - creates the integration point
run.log({
"epoch": epoch,
"loss": results["loss"],
"accuracy": results["accuracy"]
})