Examples
This section provides practical examples of using BRAID-DSPy.
Basic Usage
Learn how to use BRAID-DSPy for basic reasoning tasks.
Basic Usage
Simple Problem Solving
import dspy
from braid import BraidReasoning
# Configure DSPy
lm = dspy.OpenAI(model="gpt-4", api_key="your-api-key")
dspy.configure(lm=lm)
# Create BRAID module
braid = BraidReasoning()
# Solve a problem
result = braid(problem="If a train travels 120 km in 2 hours, what is its speed?")
print(f"Answer: {result.answer}")
print(f"\nGRD:\n{result.grd}")
print(f"\nReasoning Steps:")
for step in result.reasoning_steps:
print(f" {step['step_number']}. {step['label']}: {step['result']}")
Using Pre-generated GRD
from braid import BraidReasoning
braid = BraidReasoning()
pre_generated_grd = """```mermaid
flowchart TD
Start[Problem Analysis] --> Identify[Identify values]
Identify --> Calculate[Calculate]
Calculate --> Answer[Final Answer]
```"""
result = braid(problem="Your problem", grd=pre_generated_grd)
print(result.answer)
Custom Configuration
from braid import BraidReasoning
braid = BraidReasoning(
use_generator=True,
max_execution_steps=15,
validate_grd=True
)
GSM8K Benchmark
See how BRAID-DSPy performs on GSM8K math problems.
GSM8K Benchmark Example
This example shows how to use BRAID-DSPy with GSM8K grade school math problems.
import dspy
from braid import BraidReasoning
# Configure DSPy
lm = dspy.OpenAI(model="gpt-4")
dspy.configure(lm=lm)
# Sample GSM8K problems
gsm8k_examples = [
{
"problem": "Natalia sold clips to 48 of her friends in April, and then she sold half as many clips in May. How many clips did Natalia sell altogether in April and May?",
"answer": "72"
},
{
"problem": "A train travels 120 km in 2 hours. What is its speed in km/h?",
"answer": "60"
}
]
# Create BRAID module
braid = BraidReasoning(use_generator=True)
# Evaluate on examples
for example in gsm8k_examples:
result = braid(problem=example["problem"])
print(f"Problem: {example['problem']}")
print(f"Expected: {example['answer']}")
print(f"Got: {result.answer}")
print(f"Valid: {result.valid}\n")
Optimization
Learn how to optimize BRAID modules for better performance.
Optimization Example
This example shows how to optimize BRAID modules for better performance.
Basic Optimization
import dspy
from braid import BraidReasoning, BraidOptimizer
# Configure DSPy
lm = dspy.OpenAI(model="gpt-4")
dspy.configure(lm=lm)
# Create module
braid = BraidReasoning()
# Training examples
trainset = [
{"problem": "Problem 1", "answer": "Answer 1"},
{"problem": "Problem 2", "answer": "Answer 2"},
]
# Create optimizer
optimizer = BraidOptimizer()
# Optimize
optimized_braid = optimizer.optimize(braid, trainset)
# Evaluate
testset = [{"problem": "Test problem", "answer": "Test answer"}]
metrics = optimizer.evaluate(optimized_braid, testset)
print(metrics)
Using with Base Optimizer
from dspy.teleprompt import MIPROv2
from braid import BraidReasoning, BraidOptimizer
# Create base optimizer
base_optimizer = MIPROv2()
# Create BRAID optimizer
braid_optimizer = BraidOptimizer(base_optimizer=base_optimizer)
# Optimize
optimized_braid = braid_optimizer.optimize(braid, trainset)
Custom Metrics
from braid import BraidReasoning, BraidOptimizer
def custom_metric(result, expected_answer):
score = 0.0
if result.answer and expected_answer:
if expected_answer.lower() in result.answer.lower():
score += 0.5
if result.parsed_grd:
score += 0.3
if len(result.reasoning_steps) >= 2:
score += 0.2
return score
optimizer = BraidOptimizer()
optimized = optimizer.optimize(braid, trainset, metric=custom_metric)