00Boobs00's picture
Upload pages/api/search.js with huggingface_hub
e7249bb verified
// API Proxy for SearXNG and Tavily
export default async function handler(req, res) {
if (req.method !== 'POST') {
return res.status(405).json({ message: 'Method not allowed' });
}
const { query, engine } = req.body;
try {
let results = [];
if (engine === 'tavily') {
const TAVILY_API_KEY = process.env.TAVILY_API_KEY;
if (TAVILY_API_KEY) {
const response = await fetch('https://api.tavily.com/search', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
api_key: TAVILY_API_KEY,
query: query,
search_depth: "basic",
max_results: 5
}),
});
const data = await response.json();
results = data.results || [];
} else {
// Mock Tavily Results
results = [
{
title: `Tavily Search Result: ${query}`,
url: 'https://tavily.com',
content: 'This is a simulated result from Tavily. To see real results, please add the TAVILY_API_KEY to your environment variables.'
},
{
title: 'Understanding AI Search',
url: '#',
content: 'Tavily is a search engine built specifically for AI agents (LLMs), providing real-time, accurate, and factual results at speed.'
}
];
}
} else {
// SearXNG Integration
const SEARXNG_URL = process.env.SEARXNG_URL || 'http://localhost:8080';
// Mock SearXNG Results
results = [
{
title: `SearXNG Result: ${query}`,
url: 'https://searxng.org',
content: 'SearXNG is a free metasearch engine which aggregates results from more than 70 search services.'
},
{
title: 'Privacy Respecting Search',
url: '#',
content: 'SearXNG does not track or profile its users. Configure your own instance to ensure maximum privacy.'
}
];
}
return res.status(200).json({ results });
} catch (error) {
console.error('Search Error:', error);
return res.status(500).json({ message: 'Internal Server Error' });
}
}