AI Analysis & Workflows

Updated

The portfolios namespace includes three methods for AI-powered analysis: analyse for asking questions about a specific portfolio, createSession for starting a new portfolio analysis session, and analyze for running portfolio workflow operations.

analyse(portfolioId, query?, clientRequestId?)

Ask the AI a question about a specific portfolio. This creates a conversational session with analysis results.

Signature:

analyse(portfolioId: string, query?: string, clientRequestId?: string): Promise<SessionData>
analyse-portfolio.ts
import { Chaos } from '@chaoslabs/ai-sdk';
 
const chaos = new Chaos({ apiKey: process.env.CHAOS_API_KEY! });
 
// Ask a question about a portfolio
const session = await chaos.portfolios.analyse(
  'portfolio-id',
  'What are my biggest risk exposures and how should I rebalance?'
);
 
console.log(`Session: ${session.sessionId}`);
console.log(`Title: ${session.title}`);
console.log(`Workflow: ${session.workflowName}`);
console.log(`Blocks: ${session.blocks.length}`);
 
// Without a query — runs default portfolio analysis
const defaultSession = await chaos.portfolios.analyse('portfolio-id');
 
// With a client request ID for idempotency
const trackedSession = await chaos.portfolios.analyse(
  'portfolio-id',
  'Show me my allocation breakdown',
  'req-abc-123'
);

Parameters

ParameterTypeRequiredDescription
portfolioIdstringYesPortfolio to analyze
querystringNoQuestion to ask the AI about this portfolio
clientRequestIdstringNoClient-side request ID for idempotency/tracking

createSession(params)

Create a new portfolio analysis session tied to a specific workflow.

Signature:

createSession(params: CreatePortfolioSessionParams): Promise<SessionData>
create-session.ts
import { Chaos } from '@chaoslabs/ai-sdk';
 
const chaos = new Chaos({ apiKey: process.env.CHAOS_API_KEY! });
 
const session = await chaos.portfolios.createSession({
  query: 'Analyze my DeFi exposure across all chains',
  workflow_id: 'portfolio-analysis-v2',
});
 
console.log(`Session: ${session.sessionId}`);
console.log(`Workflow: ${session.workflowId}`);
console.log(`Title: ${session.title}`);

CreatePortfolioSessionParams

FieldTypeRequiredDescription
querystringYesThe analysis question or prompt
workflow_idstringYesID of the portfolio workflow to use

analyze(params)

Run a portfolio analysis workflow. This is a lower-level method that accepts arbitrary workflow parameters.

Signature:

analyze(params: PortfolioWorkflowParams): Promise<PortfolioWorkflowResponse>
analyze-workflow.ts
import { Chaos } from '@chaoslabs/ai-sdk';
 
const chaos = new Chaos({ apiKey: process.env.CHAOS_API_KEY! });
 
const result = await chaos.portfolios.analyze({
  portfolioId: 'portfolio-id',
  action: 'risk-assessment',
});
 
console.log(result);
[@portabletext/react] Unknown block type "callout", specify a component for it in the `components.types` prop

SessionData

All analysis methods that return SessionData provide a full session object:

FieldTypeDescription
sessionIdstringUnique session identifier
userIdstringOwner of the session
createdAtnumberUnix timestamp of creation
updatedAtnumberUnix timestamp of last update
typestringSession type
workflowIdstringWorkflow that generated this session
workflowNamestringHuman-readable workflow name
titlestringAI-generated session title
isBookmarkedbooleanWhether the session is bookmarked
isPublishedbooleanWhether the session is published
blocksunknown[]Content blocks (analysis results, charts, etc.)
agentMessagesunknown[]Raw agent message history
Was this helpful?