"""
PubMed 文献智能分析模块

基于 Pydantic AI 的文献分析功能，提供论文总结、领域判定等智能分析能力。

相比旧版 LangChain 实现的优势：
- 强类型输出解析：输出自动通过 Pydantic 模型验证，无需手动解析 JSON
- 依赖注入：通过 AnalysisDeps 管理依赖，便于测试和扩展
- Token 追踪：自动追踪 LLM token 使用量，支持成本分析
- 类型安全：充分利用 Python 类型提示，减少运行时错误

基本用法：
    >>> from information_composer.pubmed.analyzer import PaperAnalyzer, AnalysisConfig
    >>> config = AnalysisConfig(
    ...     analysis_types=["summary", "domain"],
    ...     llm_provider="openai",
    ...     llm_model="gpt-4o-mini",
    ... )
    >>> analyzer = PaperAnalyzer(config)
    >>> result = await analyzer.analyze_paper(paper)

支持多种 LLM 提供商：
- Ollama (本地模型)
- OpenAI (GPT 系列，包括兼容 API 如 DashScope)

主要组件：
- PaperAnalyzer: 主分析器类
- AnalysisConfig: 配置类
- PaperInput: 输入数据模型
- analyze_summary / analyze_domain: 底层 Agent 函数
"""

from .agents import SYSTEM_PROMPTS, analyze_domain, analyze_summary
from .analyzer import PaperAnalyzer
from .dependencies import (
    AnalysisDeps,
    ModelConfig,
    create_model_config_from_analysis_config,
    create_model_from_config,
    create_pydantic_ai_model,
)
from .models import (
    AnalysisConfig,
    AnalysisResult,
    DomainResult,
    PaperInput,
    ProcessingMetadata,
    SummaryResult,
)


__all__ = [
    "SYSTEM_PROMPTS",
    "AnalysisConfig",
    "AnalysisDeps",
    "AnalysisResult",
    "DomainResult",
    "ModelConfig",
    "PaperAnalyzer",
    "PaperInput",
    "ProcessingMetadata",
    "SummaryResult",
    "analyze_domain",
    "analyze_summary",
    "create_model_config_from_analysis_config",
    "create_model_from_config",
    "create_pydantic_ai_model",
]
