prebuilt.perplexity.base.stateΒΆ

Base state schemas for the Perplexity multi-agent system.

This module defines the core state schemas that are shared across all Perplexity agents, including search results, citations, and performance metrics.

ClassesΒΆ

BasicSearchState

State for basic search mode.

Citation

Represents a citation for a piece of information.

LabsState

State for Labs mode with project-based workflows.

ModelChoice

Available model choices for different tasks.

PerformanceMetrics

Tracks performance metrics for the system.

PerplexityBaseState

Base state schema for all Perplexity agents.

ProSearchState

State for Pro search mode with enhanced reasoning.

QueryAnalysis

Results of query analysis.

QueryType

Types of queries that can be processed.

ResearchState

State for deep research mode.

SearchMode

Search execution modes.

SearchResult

Represents a search result from web search or retrieval.

SourceTrustLevel

Trust levels for information sources.

Module ContentsΒΆ

class prebuilt.perplexity.base.state.BasicSearchState(/, **data: Any)ΒΆ

Bases: PerplexityBaseState

State for basic search mode.

class prebuilt.perplexity.base.state.Citation(/, **data: Any)ΒΆ

Bases: pydantic.BaseModel

Represents a citation for a piece of information.

relevance_score: float = NoneΒΆ
sentence_indices: list[int] = NoneΒΆ
snippet: str = NoneΒΆ
source_id: str = NoneΒΆ
timestamp: datetime.datetime = NoneΒΆ
title: str = NoneΒΆ
trust_level: SourceTrustLevel = NoneΒΆ
url: str | None = NoneΒΆ
class prebuilt.perplexity.base.state.LabsState(/, **data: Any)ΒΆ

Bases: PerplexityBaseState

State for Labs mode with project-based workflows.

actual_completion_time: float | None = NoneΒΆ
asset_dependencies: dict[str, list[str]] = NoneΒΆ
deliverables: list[dict[str, Any]] = NoneΒΆ
deployment_ready: bool = NoneΒΆ
estimated_completion_time: float | None = NoneΒΆ
generated_assets: dict[str, Any] = NoneΒΆ
integration_status: dict[str, bool] = NoneΒΆ
project_requirements: list[str] = NoneΒΆ
project_type: str = NoneΒΆ
required_tools: list[str] = NoneΒΆ
tool_execution_log: list[dict[str, Any]] = NoneΒΆ
class prebuilt.perplexity.base.state.ModelChoiceΒΆ

Bases: str, enum.Enum

Available model choices for different tasks.

CLAUDE_35_SONNET = 'claude-3.5-sonnet'ΒΆ
GPT_4O = 'gpt-4o'ΒΆ
MIXTRAL_8X22B = 'mixtral-8x22b'ΒΆ
SONAR_7B = 'sonar-7b'ΒΆ
class prebuilt.perplexity.base.state.PerformanceMetrics(/, **data: Any)ΒΆ

Bases: pydantic.BaseModel

Tracks performance metrics for the system.

calculate_latency() float | NoneΒΆ

Calculate latency if start and end times are available.

documents_processed: int = NoneΒΆ
end_time: datetime.datetime | None = NoneΒΆ
latency_ms: float | None = NoneΒΆ
model_calls: dict[str, int] = NoneΒΆ
start_time: datetime.datetime = NoneΒΆ
tokens_used: int = NoneΒΆ
total_searches: int = NoneΒΆ
class prebuilt.perplexity.base.state.PerplexityBaseState(/, **data: Any)ΒΆ

Bases: haive.core.schema.prebuilt.messages_state.MessagesState

Base state schema for all Perplexity agents.

This state extends MessagesState to provide conversation management while adding Perplexity-specific fields for search, retrieval, and quality assurance.

add_citation(citation: Citation) NoneΒΆ

Add a citation, avoiding duplicates.

add_search_result(result: SearchResult) NoneΒΆ

Add a search result to the state.

get_high_confidence_citations() list[Citation]ΒΆ

Get citations above the confidence threshold.

should_continue() boolΒΆ

Determine if searching should continue.

citations: list[Citation] = NoneΒΆ
confidence_threshold: float = NoneΒΆ
current_search_query: str | None = NoneΒΆ
draft_response: str | None = NoneΒΆ
final_response: str | None = NoneΒΆ
max_iterations: int = NoneΒΆ
metadata: dict[str, Any] = NoneΒΆ
needs_clarification: bool = NoneΒΆ
performance_metrics: PerformanceMetrics = NoneΒΆ
query: str = NoneΒΆ
query_analysis: QueryAnalysis | None = NoneΒΆ
search_iteration: int = NoneΒΆ
search_mode: SearchMode = NoneΒΆ
search_results: list[SearchResult] = NoneΒΆ
should_continue_searching: bool = NoneΒΆ
verified_facts: list[dict[str, Any]] = NoneΒΆ
class prebuilt.perplexity.base.state.ProSearchState(/, **data: Any)ΒΆ

Bases: PerplexityBaseState

State for Pro search mode with enhanced reasoning.

code_results: list[dict[str, Any]] = NoneΒΆ
code_snippets: list[dict[str, Any]] = NoneΒΆ
cross_references: list[dict[str, Any]] = NoneΒΆ
current_step: int = NoneΒΆ
execution_plan: list[dict[str, Any]] = NoneΒΆ
follow_up_queries: list[str] = NoneΒΆ
model_selection_rationale: str | None = NoneΒΆ
reasoning_traces: list[str] = NoneΒΆ
selected_model: ModelChoice | None = NoneΒΆ
class prebuilt.perplexity.base.state.QueryAnalysis(/, **data: Any)ΒΆ

Bases: pydantic.BaseModel

Results of query analysis.

clarifying_questions: list[str] = NoneΒΆ
complexity_score: float = NoneΒΆ
decomposed_steps: list[str] = NoneΒΆ
original_query: str = NoneΒΆ
query_type: QueryType = NoneΒΆ
requires_real_time: bool = NoneΒΆ
requires_reasoning: bool = NoneΒΆ
requires_tools: bool = NoneΒΆ
suggested_mode: SearchMode = NoneΒΆ
class prebuilt.perplexity.base.state.QueryTypeΒΆ

Bases: str, enum.Enum

Types of queries that can be processed.

COMPLEX_REASONING = 'complex_reasoning'ΒΆ
CONVERSATIONAL = 'conversational'ΒΆ
MATHEMATICAL = 'mathematical'ΒΆ
MULTI_STEP = 'multi_step'ΒΆ
PROJECT = 'project'ΒΆ
REAL_TIME = 'real_time'ΒΆ
RESEARCH = 'research'ΒΆ
SIMPLE_FACTUAL = 'simple_factual'ΒΆ
class prebuilt.perplexity.base.state.ResearchState(/, **data: Any)ΒΆ

Bases: PerplexityBaseState

State for deep research mode.

contradictions: list[dict[str, Any]] = NoneΒΆ
coverage_completeness: float = NoneΒΆ
patterns: list[dict[str, Any]] = NoneΒΆ
report_outline: dict[str, Any] | None = NoneΒΆ
report_sections: dict[str, str] = NoneΒΆ
research_roadmap: list[dict[str, Any]] = NoneΒΆ
research_topic: str = NoneΒΆ
source_coverage: dict[str, list[str]] = NoneΒΆ
source_diversity_score: float = NoneΒΆ
subtopics: list[str] = NoneΒΆ
visual_elements: list[dict[str, Any]] = NoneΒΆ
class prebuilt.perplexity.base.state.SearchModeΒΆ

Bases: str, enum.Enum

Search execution modes.

BASIC = 'basic'ΒΆ
DEEP_RESEARCH = 'deep_research'ΒΆ
LABS = 'labs'ΒΆ
PRO = 'pro'ΒΆ
class prebuilt.perplexity.base.state.SearchResult(/, **data: Any)ΒΆ

Bases: pydantic.BaseModel

Represents a search result from web search or retrieval.

documents: list[langchain_core.documents.Document] = NoneΒΆ
metadata: dict[str, Any] = NoneΒΆ
query: str = NoneΒΆ
raw_results: list[dict[str, Any]] = NoneΒΆ
search_type: str = NoneΒΆ
timestamp: datetime.datetime = NoneΒΆ
class prebuilt.perplexity.base.state.SourceTrustLevelΒΆ

Bases: str, enum.Enum

Trust levels for information sources.

STANDARD = 'standard'ΒΆ
TRUSTED = 'trusted'ΒΆ
UNVERIFIED = 'unverified'ΒΆ
VERIFIED = 'verified'ΒΆ