Council
NewUpdated
The chaos.council namespace provides a multi-LLM consensus decision-making system. Define AI members backed by different language models, configure consensus algorithms, form councils, resolve queries through multi-model deliberation, and audit the results.
The namespace is organized into four sub-namespaces and one top-level method:
| Sub-namespace | Access | Description |
|---|---|---|
| Members | chaos.council.members | Discover models, create and manage AI council members |
| Consensus | chaos.council.consensus | Explore and configure consensus algorithms |
| Councils | chaos.council.councils | Group members into councils with consensus config |
| Resolutions | chaos.council.resolutions | Browse resolution history and audit decisions |
| resolve | chaos.council.resolve() | Submit a query for multi-LLM resolution |
import { Chaos } from '@chaoslabs/ai-sdk';
const chaos = new Chaos({ apiKey: process.env.CHAOS_API_KEY! });
// 1. Discover available models
const { models } = await chaos.council.members.models();
// 2. Create members with different perspectives
const { created } = await chaos.council.members.bulkCreate({
members: [
{
name: 'Risk Analyst',
provider: 'anthropic',
model_id: 'claude-sonnet-4-20250514',
system_prompt: 'You are a conservative DeFi risk analyst. Prioritize safety.',
},
{
name: 'Growth Strategist',
provider: 'openai',
model_id: 'gpt-4o',
system_prompt: 'You are a growth-oriented strategist. Focus on upside potential.',
},
{
name: 'Quant Researcher',
provider: 'anthropic',
model_id: 'claude-sonnet-4-20250514',
system_prompt: 'You are a quantitative researcher. Base decisions on data.',
},
],
});
// 3. Form a council
const council = await chaos.council.councils.create({
name: 'DeFi Advisory Board',
member_ids: created.map(m => m.id),
consensus_algorithm: 'majority_vote',
});
// 4. Resolve a query
const resolution = await chaos.council.resolve({
query: 'Should we increase the AAVE WETH collateral factor from 80% to 85%?',
council_id: council.id,
answer_options: ['Yes, increase to 85%', 'No, keep at 80%', 'Increase to 82.5% as compromise'],
});
console.log(`Session: ${resolution.session_id}`);
console.log(`Status: ${resolution.status}`);
// 5. Audit the decision
const audit = await chaos.council.resolutions.audit(resolution.session_id);
for (const vote of audit.memberVotes) {
console.log(`${vote.model_name}: ${vote.choice} (confidence: ${vote.confidence})`);
}Copy code
Open in Cursor
Open in VS Code
Open in v0
Open in Claude
Open in ChatGPT
Method Reference
All methods across the council namespace.
Members
| Method | Returns |
|---|---|
council.members.models() | AvailableModelsResponse |
council.members.create(params) | CouncilMember |
council.members.bulkCreate(params) | BulkCreateResult |
council.members.list(includeInactive?) | CouncilMember[] |
council.members.get(memberId) | CouncilMember |
council.members.update(memberId, params) | CouncilMember |
council.members.delete(memberId) | void |
Consensus
| Method | Returns |
|---|---|
council.consensus.algorithms() | AvailableConsensusResponse |
council.consensus.get() | ConsensusConfig |
council.consensus.set(params) | ConsensusConfig |
Councils
| Method | Returns |
|---|---|
council.councils.create(params) | Council |
council.councils.list() | Council[] |
council.councils.get(councilId) | Council |
council.councils.update(councilId, params) | Council |
council.councils.delete(councilId) | void |
Resolve
| Method | Returns |
|---|---|
council.resolve(params) | CouncilResolveResponse |
Resolutions
| Method | Returns |
|---|---|
council.resolutions.list(params?) | CouncilResolutionsListResponse |
council.resolutions.get(sessionId) | CouncilResolutionDetail |
council.resolutions.audit(sessionId) | AuditResponse |
Core Types
interface AvailableModel {
provider: string;
model_id: string;
}
interface AvailableModelsResponse {
models: AvailableModel[];
}
interface CouncilMember {
id: string;
name: string;
provider: string;
model_id: string;
description?: string | null;
system_prompt?: string | null;
status: string;
council_count?: number;
}
interface CreateCouncilMemberParams {
name: string;
provider: string;
model_id: string;
description?: string;
system_prompt?: string;
}
interface UpdateCouncilMemberParams {
name?: string;
provider?: string;
model_id?: string;
description?: string;
system_prompt?: string;
status?: string;
}
interface BulkCreateCouncilMembersParams {
members: CreateCouncilMemberParams[];
}
interface BulkCreateFailure {
index: number;
request: CreateCouncilMemberParams;
error: string;
}
interface BulkCreateResult {
created: CouncilMember[];
failed: BulkCreateFailure[];
}
interface AlgorithmParameter {
name: string;
type: string;
description?: string;
required?: boolean;
default?: unknown;
}
interface ConsensusAlgorithmInfo {
algorithm: string;
name: string;
description: string;
parameters?: AlgorithmParameter[] | null;
}
interface AvailableConsensusResponse {
algorithms: ConsensusAlgorithmInfo[];
default_algorithm: string;
}
interface ConsensusParameter {
name: string;
value: unknown;
}
interface ConsensusConfig {
algorithm: string;
parameters?: ConsensusParameter[] | null;
modified_at?: string | null;
}
interface SetConsensusConfigParams {
algorithm: string;
parameters?: Array<{ name: string; value: unknown }>;
}
interface Council {
id: string;
name: string;
consensus_algorithm: string;
consensus_parameters?: ConsensusParameter[] | null;
members: CouncilMember[];
resolution_count: number;
created_at: string;
updated_at: string;
}
interface CreateCouncilParams {
name: string;
member_ids: string[];
consensus_algorithm: string;
consensus_parameters?: Array<{ name: string; value: unknown }>;
}
interface UpdateCouncilParams {
name?: string;
member_ids?: string[];
consensus_algorithm?: string;
consensus_parameters?: Array<{ name: string; value: unknown }>;
}
interface CouncilResolveParams {
query: string;
council_id?: string;
consensus_algorithm?: string;
consensus_algorithm_kwargs?: Record<string, unknown>;
council_members?: Array<{
member_id: string;
provider: string;
model_id: string;
model_name: string;
system_prompt?: string;
}>;
answer_options?: string[];
}
interface CouncilResolveResponse {
session_id: string;
status: string;
message: string;
}
interface CouncilResolution {
session_id: string;
query: string;
status: string;
final_result?: string | null;
council_id?: string | null;
council_name?: string | null;
created_at: string;
}
interface CouncilResolutionsListParams {
page?: number;
pageSize?: number;
status?: string;
finalResult?: string;
councilId?: string;
}
interface CouncilResolutionsListResponse {
resolutions: CouncilResolution[];
total: number;
page: number;
page_size: number;
}
type VoteStatus = 'completed' | 'failed' | 'pending';
interface ModelVote {
provider: string;
model_id: string;
model_name?: string | null;
member_id?: string | null;
status: VoteStatus;
choice?: string | null;
reasoning?: string | null;
confidence?: number | null;
elapsed_ms?: number | null;
}
interface VoteTally {
total_votes: number;
completed_votes: number;
failed_votes: number;
choices: Record<string, number>;
}
interface AuditDissent {
member_id: string;
choice: string;
reasoning: string;
}
interface AuditResponse {
sessionId: string;
query: string;
status: string;
createdAt: string;
completedAt?: string | null;
memberVotes: ModelVote[];
contextSources: unknown[];
dissentSummary: AuditDissent[];
voteTally: VoteTally;
}
interface CouncilResolutionDetail extends AuditResponse {
councilId?: string | null;
councilName?: string | null;
finalResult?: string | null;
answerOptions?: string[] | null;
}Copy code
Open in Cursor
Open in VS Code
Open in v0
Open in Claude
Open in ChatGPT
Was this helpful?