agent_api_v0.py 3.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. # -*- coding: utf-8 -*-
  2. from fastapi import APIRouter
  3. from fastapi.responses import JSONResponse, StreamingResponse
  4. from digitalHuman.utils import config
  5. from digitalHuman.agent import AgentPool
  6. from digitalHuman.server.reponse import Response, streamInteralError
  7. from digitalHuman.server.header import HeaderInfo
  8. from digitalHuman.server.models import *
  9. from digitalHuman.server.core.api_agent_v0_impl import *
  10. router = APIRouter(prefix="/agent/v0")
  11. agentPool = AgentPool()
  12. # ========================= 获取agent支持列表 ===========================
  13. @router.get("/engine", response_model=EngineListResp, summary="Get Agent Engine List")
  14. def api_get_agent_list():
  15. """
  16. 获取agent支持引擎列表
  17. """
  18. response = Response()
  19. try:
  20. response.data = get_agent_list()
  21. except Exception as e:
  22. response.data = []
  23. response.error(str(e))
  24. return JSONResponse(content=response.validate(EngineListResp), status_code=200)
  25. # ========================= 获取agent默认引擎 ===========================
  26. @router.get("/engine/default", response_model=EngineDefaultResp, summary="Get Default Agent Engine")
  27. def api_get_agent_default():
  28. """
  29. 获取默认agent引擎
  30. """
  31. response = Response()
  32. try:
  33. response.data = get_agent_default()
  34. except Exception as e:
  35. response.data = ""
  36. response.error(str(e))
  37. return JSONResponse(content=response.validate(EngineDefaultResp), status_code=200)
  38. # ========================= 获取agent引擎参数列表 ===========================
  39. @router.get("/engine/{engine}", response_model=EngineParam, summary="Get Agent Engine Param")
  40. def api_get_agent_param(engine: str):
  41. """
  42. 获取agent引擎配置参数列表
  43. """
  44. response = Response()
  45. try:
  46. response.data = get_agent_param(engine)
  47. except Exception as e:
  48. response.data = []
  49. response.error(str(e))
  50. return JSONResponse(content=response.validate(EngineParam), status_code=200)
  51. # ========================= 创建agent会话 ===========================
  52. @router.post("/engine/{engine}", response_model=ConversationIdResp, summary="Create Agent Conversation")
  53. async def api_create_agent_conversation(engine: str, item: ConversationInput):
  54. """
  55. 创建agent会话
  56. """
  57. response = Response()
  58. try:
  59. response.data = await create_agent_conversation(engine, item.data)
  60. except Exception as e:
  61. response.data = ""
  62. response.error(str(e))
  63. return JSONResponse(content=response.validate(ConversationIdResp), status_code=200)
  64. # ========================= 执行agent引擎 ===========================
  65. @router.post("/engine", summary="AI Agent Inference")
  66. async def api_agent_infer(items: AgentEngineInput, header: HeaderInfo):
  67. if items.engine.lower() == "default":
  68. items.engine = config.SERVER.AGENTS.DEFAULT
  69. response = Response()
  70. try:
  71. streamContent = agent_infer_stream(header, items)
  72. return StreamingResponse(streamContent, media_type="text/event-stream")
  73. except Exception as e:
  74. response.error(str(e))
  75. return StreamingResponse(streamInteralError("Interal Error"), media_type="text/event-stream")