import {
type AthenaIntelligence,
AthenaIntelligenceClient,
AthenaIntelligenceError,
} from '@athenaintel/sdk';
async function runStructuredOutputExample() {
try {
const client = new AthenaIntelligenceClient({
apiKey: process.env.ATHENA_API_KEY,
// Optional: override baseUrl for custom environments
// baseUrl: 'https://your-custom-api.example.com',
});
// Step 1: Research
const researchRequest: AthenaIntelligence.ResearchAgentRequest = {
config: {
enabled_tools: ['search'],
model: 'gpt-4-turbo-preview',
},
messages: [
{
content: 'Research recent AI investment trends and find specific funding rounds from 2024',
role: 'user',
type: 'user',
},
],
};
console.log('π Running Research Agentβ¦');
const researchResponse = await client.agents.research.invoke(researchRequest);
const researchContent = researchResponse?.findings ?? '';
console.log('π Research summary obtained');
// Step 2: Define schema
const schema = {
investments: {
item_1: {
company: 'string',
amount_usd_millions: 'number',
country: 'string',
investors: 'string',
},
item_2: {
company: 'string',
amount_usd_millions: 'number',
country: 'string',
investors: 'string',
},
},
total_announced_usd_millions: 'number',
} as const;
// Step 3: Extract structured data
const extractorRequest: AthenaIntelligence.StructuredDataExtractorRequest = {
text_input: researchContent,
custom_type_dict: schema,
parsing_model: 'gpt-4-turbo-preview',
chunk_messages: [],
};
console.log('ποΈ Extracting structured dataβ¦');
const extractionResponse = await client.tools.structuredDataExtractor.invoke(extractorRequest);
console.log('β
Structured output:');
const structuredData = extractionResponse?.reduced_data;
console.log(JSON.stringify(structuredData, null, 2));
} catch (error) {
if (error instanceof AthenaIntelligenceError) {
console.error(`Athena API error (${error.statusCode}): ${error.message}`);
} else {
console.error('Unexpected error:', error);
}
}
}
runStructuredOutputExample();