30 lines
805 B
Python
30 lines
805 B
Python
from typing import Any
|
|
|
|
from fastapi import APIRouter, HTTPException, status
|
|
|
|
from app.services.web_search import (
|
|
BochaSearchAPIError,
|
|
BochaSearchConfigError,
|
|
WebSearchRequest,
|
|
search_bocha_web,
|
|
)
|
|
|
|
router = APIRouter()
|
|
|
|
|
|
@router.post(
|
|
"/web-search",
|
|
summary="Web Search",
|
|
description="调用 Bocha Web Search API 获取实时网页搜索结果",
|
|
)
|
|
async def web_search(request: WebSearchRequest) -> dict[str, Any]:
|
|
try:
|
|
return await search_bocha_web(request)
|
|
except BochaSearchConfigError as exc:
|
|
raise HTTPException(
|
|
status_code=status.HTTP_503_SERVICE_UNAVAILABLE,
|
|
detail=str(exc),
|
|
) from exc
|
|
except BochaSearchAPIError as exc:
|
|
raise HTTPException(status_code=exc.status_code, detail=exc.detail) from exc
|