Import the existing local project snapshot. This commit organizes existing files; it does not represent newly developed functionality.
53 lines
1.5 KiB
Python
53 lines
1.5 KiB
Python
from fastapi import APIRouter
|
|
|
|
from axon.models import (
|
|
CrawlRequest,
|
|
ExtractRequest,
|
|
MapRequest,
|
|
SearchRequest,
|
|
TavilyExtractRequest,
|
|
TavilySearchRequest,
|
|
)
|
|
from axon.routers.crawl import crawl
|
|
from axon.routers.extract import extract
|
|
from axon.routers.map import map_site
|
|
from axon.routers.search import search
|
|
|
|
router = APIRouter(prefix="/tavily")
|
|
|
|
|
|
@router.post("/search")
|
|
async def tavily_search(request: TavilySearchRequest):
|
|
include_answer = request.include_answer not in (False, "false", "none", "basic")
|
|
response = await search(
|
|
SearchRequest(
|
|
query=request.query,
|
|
max_results=request.max_results,
|
|
search_depth=request.search_depth,
|
|
include_answer=include_answer,
|
|
include_raw_content=request.include_raw_content,
|
|
domains_whitelist=request.include_domains,
|
|
domains_blacklist=request.exclude_domains,
|
|
topic=request.topic,
|
|
time_range=request.time_range,
|
|
)
|
|
)
|
|
return response.model_dump()
|
|
|
|
|
|
@router.post("/extract")
|
|
async def tavily_extract(request: TavilyExtractRequest):
|
|
urls = [request.urls] if isinstance(request.urls, str) else request.urls
|
|
response = await extract(ExtractRequest(urls=urls, include_images=request.include_images))
|
|
return response.model_dump()
|
|
|
|
|
|
@router.post("/crawl")
|
|
async def tavily_crawl(request: CrawlRequest):
|
|
return (await crawl(request)).model_dump()
|
|
|
|
|
|
@router.post("/map")
|
|
async def tavily_map(request: MapRequest):
|
|
return (await map_site(request)).model_dump()
|