Run Pipe Agent with Structured Output
This example demonstrates how to run a pipe agent with structured output.
Run Pipe Agent with Structured Output Example
Run Pipe Agent with Structured Output Example
import 'dotenv/config';
import {Langbase} from 'langbase';
import {z} from 'zod';
import {zodToJsonSchema} from 'zod-to-json-schema';
const langbase = new Langbase({
apiKey: process.env.LANGBASE_API_KEY!,
});
// Define the Strucutred Output JSON schema with Zod
const MathReasoningSchema = z.object({
steps: z.array(
z.object({
explanation: z.string(),
output: z.string(),
}),
),
final_answer: z.string(),
});
const jsonSchema = zodToJsonSchema(MathReasoningSchema, {target: 'openAi'});
async function main() {
if (!process.env.LANGBASE_API_KEY) {
console.error('❌ Missing LANGBASE_API_KEY in environment variables.');
process.exit(1);
}
await createMathTutorPipe();
await runMathTutorPipe('How can I solve 8x + 22 = -23?');
}
/**
* Create the pipe agent with the name 'math-tutor-agent'
* Set the model to 'openai:gpt-4o'
* Set the response_format to the JSON schema.
* Set the system message to 'You are a helpful math tutor. Guide the user through the solution step by step.'
*/
async function createMathTutorPipe() {
await langbase.pipes.create({
name: 'math-tutor-agent',
model: 'openai:gpt-4o',
upsert: true,
messages: [
{
role: 'system',
content: 'You are a helpful math tutor. Guide the user through the solution step by step.'
},
],
json: true,
response_format: {
type: 'json_schema',
json_schema: {
name: 'math_reasoning',
schema: jsonSchema,
},
},
});
}
/**
* Run the pipe agent with the name 'math-tutor-agent'
* Send the user message to the pipe agent.
* Parse the response using Zod and validate the response is correct.
* Display the response to the user.
**/
async function runMathTutorPipe(question: string) {
const {completion} = await langbase.pipes.run({
stream: false,
name: 'math-tutor-agent',
messages: [
{
role: 'user',
content: question
}
],
});
// Parse and validate the response using Zod
const solution = MathReasoningSchema.parse(JSON.parse(completion));
console.log('✅ Structured Output Response:', solution);
}
main();