00Boobs00's picture
Upload pages/api/search.js with huggingface_hub
b943ac6 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') {
// Tavily API Integration
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 Result for: ${query}`, url: '#', content: 'This is a mock result because TAVILY_API_KEY is not set.' },
{ title: 'AI Search Overview', url: '#', content: 'Tavily provides advanced search capabilities for AI agents.' }
];
}
} else {
// SearXNG Integration
const SEARXNG_URL = process.env.SEARXNG_URL || 'http://localhost:8080';
// const response = await fetch(`${SEARXNG_URL}/search?q=${encodeURIComponent(query)}&format=json`);
// const data = await response.json();
// results = data.results;
// Mock SearXNG Results
results = [
{ title: `SearXNG Result: ${query}`, url: '#', content: 'Open source metasearch engine result.' },
{ title: 'Privacy Respecting Search', url: '#', content: 'SearXNG aggregates results from various engines.' }
];
}
return res.status(200).json({ results });
} catch (error) {
console.error('Search Error:', error);
return res.status(500).json({ message: 'Internal Server Error' });
}
}