api_server.py 1.8 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485
  1. """
  2. API Server - FastAPI 应用入口
  3. 聚合所有模块的 API 路由(step_tree、未来的 memory 等)
  4. """
  5. import logging
  6. from fastapi import FastAPI
  7. from fastapi.middleware.cors import CORSMiddleware
  8. import uvicorn
  9. from agent.trace import FileSystemTraceStore
  10. from agent.trace.api import router as api_router, set_trace_store as set_api_trace_store
  11. from agent.trace.websocket import router as ws_router, set_trace_store as set_ws_trace_store
  12. # ===== 日志配置 =====
  13. logging.basicConfig(
  14. level=logging.INFO,
  15. format="%(asctime)s [%(levelname)s] %(name)s: %(message)s"
  16. )
  17. logger = logging.getLogger(__name__)
  18. # ===== FastAPI 应用 =====
  19. app = FastAPI(
  20. title="Agent Step Tree API",
  21. description="Step 树可视化 API",
  22. version="1.0.0"
  23. )
  24. # CORS 配置(允许前端跨域访问)
  25. app.add_middleware(
  26. CORSMiddleware,
  27. allow_origins=["*"], # 生产环境应限制具体域名
  28. allow_credentials=True,
  29. allow_methods=["*"],
  30. allow_headers=["*"],
  31. )
  32. # ===== 初始化存储 =====
  33. # 使用文件系统存储(支持跨进程和持久化)
  34. trace_store = FileSystemTraceStore(base_path=".trace")
  35. # 注入到 step_tree 模块
  36. set_api_trace_store(trace_store)
  37. set_ws_trace_store(trace_store)
  38. # ===== 注册路由 =====
  39. # Step 树 RESTful API
  40. app.include_router(api_router)
  41. # Step 树 WebSocket
  42. app.include_router(ws_router)
  43. # ===== 健康检查 =====
  44. @app.get("/health")
  45. async def health_check():
  46. """健康检查"""
  47. return {
  48. "status": "ok",
  49. "service": "Agent Step Tree API",
  50. "version": "1.0.0"
  51. }
  52. # ===== 启动服务 =====
  53. if __name__ == "__main__":
  54. logger.info("Starting API server...")
  55. uvicorn.run(
  56. "api_server:app",
  57. host="0.0.0.0",
  58. port=8000,
  59. reload=True, # 开发模式
  60. log_level="info"
  61. )