jbilcke-hf's picture
jbilcke-hf HF Staff
upgraded to @aitube /client 0.0.12
f24ad59
import { NextResponse, NextRequest } from "next/server"
import queryString from "query-string"
import { BasicSearchResult, ExtendedSearchResult } from "./types"
import { extend, search } from "."
import { parsePrompt } from "../../parsers/parsePrompt"
import { parseLatentSearchMode } from "../../parsers/parseLatentSearchMode"
import { parseBasicSearchResult } from "../../parsers/parseBasicSearchResults"
export type LatentSearchMode =
| "basic"
| "extended"
// we hide/wrap the micro-service under a unified AiTube API
export async function GET(req: NextRequest, res: NextResponse) {
const qs = queryString.parseUrl(req.url || "")
const query = (qs || {}).query
const mode = parseLatentSearchMode(query?.m)
if (mode === "basic") {
const prompt = parsePrompt(query?.p)
const basicSearchResults: BasicSearchResult[] = await search({
prompt,
nbResults: 4
})
console.log(`[api/v1/search] found ${basicSearchResults.length} basic search results`)
console.log(`[api/v1/search]`, basicSearchResults)
return NextResponse.json(basicSearchResults, {
status: 200,
statusText: "OK",
})
} else if (mode === "extended") {
const basicResults = parseBasicSearchResult(query?.e)
const extendedSearchResults: ExtendedSearchResult[] = await extend({
basicResults
})
console.log(`[api/v1/search] extended ${extendedSearchResults.length} search results`)
console.log(`[api/v1/search]`, extendedSearchResults)
return NextResponse.json(extendedSearchResults, {
status: 200,
statusText: "OK",
})
} else {
/*
return NextResponse.json([], {
status: 200,
statusText: "OK",
})
*/
throw new Error(`Please specify the mode.`)
}
}