| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091 |
- """
- Search Agent 统一入口
- 简化为薄壳,所有逻辑委托给 application 层。
- """
- from __future__ import annotations
- import asyncio
- import logging
- import os
- from uuid import uuid4
- from dotenv import load_dotenv
- from src.config.settings import get_config
- from src.application import ApplicationRunner
- from src.harness.search_agent import (
- finalize_search_agent_log,
- log_environment_profile,
- load_environment_profile,
- print_run_plan,
- setup_search_agent_logging,
- validate_prerequisites,
- )
- load_dotenv()
- setup_search_agent_logging()
- logging.getLogger("agent").setLevel(logging.CRITICAL)
- logger = logging.getLogger(__name__)
- async def main() -> None:
- """主入口"""
- # 前置检查
- validate_prerequisites()
- # 加载配置
- config = get_config()
- environment = load_environment_profile()
- log_environment_profile(environment)
- # 读取参数
- query = os.getenv("PIPELINE_QUERY", "当谈到毛主席的生平、丰功伟绩、伟人伟绩、老年人会关注什么?")
- demand_id = os.getenv("PIPELINE_DEMAND_ID", "1")
- trace_id = str(uuid4())
- logger.info("Trace ID: %s", trace_id)
- # 打印运行计划
- from src.application.runner import AgentBudget
- budget = AgentBudget.from_config(config)
- budget.validate()
- run_plan = print_run_plan(query=query, demand_id=demand_id, budget=budget, trace_id=trace_id)
- run_plan["environment"] = {
- "env_name": environment.env_name,
- "use_db_policy": environment.use_db_policy,
- "strategy_source": environment.strategy_source,
- }
- # 执行
- runner = ApplicationRunner(config)
- summary = await runner.run(
- query=query,
- demand_id=demand_id,
- trace_id=trace_id,
- use_db_policy=environment.use_db_policy,
- policy_override=environment.strategy_override,
- )
- # 输出摘要
- summary.log()
- finalize_search_agent_log(trace_id)
- # 自动触发知识总结
- if os.getenv("ENABLE_KNOWLEDGE_SUMMARY", "false").lower() == "true":
- try:
- from agent.llm.openrouter import openrouter_llm_call
- from src.knowledge import trigger_knowledge_summary
- logger.info("触发知识总结...")
- await trigger_knowledge_summary(llm_call=openrouter_llm_call)
- except Exception as exc:
- logger.warning("知识总结失败: %s", exc)
- if not summary.success:
- raise SystemExit(1)
- if __name__ == "__main__":
- asyncio.run(main())
|