api.ts 1.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445
  1. import { montarContexto, buscarDocumentosSimilares } from "./busca";
  2. async function main() {
  3. const port = process.env.PORT ? parseInt(process.env.PORT) : 3000;
  4. const server = Bun.serve({
  5. port: port,
  6. async fetch(req) {
  7. if (
  8. req.url.endsWith("/api/embeddings") &&
  9. req.method === "POST" &&
  10. req.headers.get("Content-Type")?.includes("application/json")
  11. ) {
  12. try {
  13. // Here you would handle the embeddings API logic
  14. const body = await req.json() as { prompt?: string; topK?: number; limiarSimilaridade?: number };
  15. let { prompt, topK ,limiarSimilaridade} = body;
  16. if (!prompt) {
  17. return new Response("Faltando o campo 'prompt' no corpo da requisição", { status: 400 });
  18. }
  19. if (!topK) {
  20. topK = 3;
  21. }
  22. if (!limiarSimilaridade) {
  23. limiarSimilaridade=0.5;
  24. }
  25. const resultados = await buscarDocumentosSimilares(prompt, topK, limiarSimilaridade);
  26. const contexto = montarContexto(resultados);
  27. console.log('Contexto montado:', contexto);
  28. return new Response(JSON.stringify({ contexto, resultados }), { headers: { "Content-Type": "application/json" } });
  29. } catch (error) {
  30. console.error('Erro ao processar requisição:', error);
  31. return new Response("Erro ao processar JSON: " + (error instanceof Error ? error.message : String(error)), { status: 400 });
  32. }
  33. }
  34. return new Response("Embedding API is running");
  35. },
  36. });
  37. console.log(`Server running on http://:${port}`);
  38. }
  39. main().catch(error => {console.error(error);process.exit(1);});