Spaces:
Build error
Build error
Upload pages/api/search.js with huggingface_hub
Browse files- pages/api/search.js +82 -20
pages/api/search.js
CHANGED
|
@@ -1,29 +1,91 @@
|
|
| 1 |
-
|
| 2 |
-
// For this example, we're using mock data in the frontend
|
| 3 |
|
| 4 |
-
export default function handler(req, res) {
|
| 5 |
if (req.method !== 'POST') {
|
| 6 |
return res.status(405).json({ message: 'Method not allowed' });
|
| 7 |
}
|
| 8 |
|
| 9 |
try {
|
| 10 |
-
|
| 11 |
-
|
| 12 |
-
|
| 13 |
-
|
| 14 |
-
|
| 15 |
-
|
| 16 |
-
|
| 17 |
-
|
| 18 |
-
|
| 19 |
-
|
| 20 |
-
|
| 21 |
-
|
| 22 |
-
|
| 23 |
-
|
| 24 |
-
|
| 25 |
-
|
|
|
|
|
|
|
| 26 |
} catch (error) {
|
| 27 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 28 |
}
|
|
|
|
|
|
|
| 29 |
}
|
|
|
|
| 1 |
+
import { GoogleGenerativeAI } from "@google/generative-ai";
|
|
|
|
| 2 |
|
| 3 |
+
export default async function handler(req, res) {
|
| 4 |
if (req.method !== 'POST') {
|
| 5 |
return res.status(405).json({ message: 'Method not allowed' });
|
| 6 |
}
|
| 7 |
|
| 8 |
try {
|
| 9 |
+
const { query, locationType, startDate, endDate } = req.body;
|
| 10 |
+
|
| 11 |
+
if (!query) {
|
| 12 |
+
return res.status(400).json({ message: 'Query parameter is required' });
|
| 13 |
+
}
|
| 14 |
+
|
| 15 |
+
// Get basic agent data (in a real app, this would come from your database)
|
| 16 |
+
const basicData = getBasicAgentData(query, locationType);
|
| 17 |
+
|
| 18 |
+
// Enhance with Gemini AI
|
| 19 |
+
const enhancedData = await enhanceWithGemini(basicData, {
|
| 20 |
+
location: query,
|
| 21 |
+
locationType,
|
| 22 |
+
startDate,
|
| 23 |
+
endDate
|
| 24 |
+
});
|
| 25 |
+
|
| 26 |
+
res.status(200).json(enhancedData);
|
| 27 |
} catch (error) {
|
| 28 |
+
console.error('API Error:', error);
|
| 29 |
+
res.status(500).json({
|
| 30 |
+
message: 'Internal server error',
|
| 31 |
+
error: error.message
|
| 32 |
+
});
|
| 33 |
+
}
|
| 34 |
+
}
|
| 35 |
+
|
| 36 |
+
function getBasicAgentData(query, locationType) {
|
| 37 |
+
// Mock data - replace with actual database query
|
| 38 |
+
return [
|
| 39 |
+
{
|
| 40 |
+
name: 'João Silva',
|
| 41 |
+
position: 'Prefeito',
|
| 42 |
+
location: `${query} - ${locationType}`,
|
| 43 |
+
status: 'ativo',
|
| 44 |
+
details: 'Gestor público com 10 anos de experiência.'
|
| 45 |
+
},
|
| 46 |
+
{
|
| 47 |
+
name: 'Maria Santos',
|
| 48 |
+
position: 'Secretária de Educação',
|
| 49 |
+
location: `${query} - ${locationType}`,
|
| 50 |
+
status: 'ativo',
|
| 51 |
+
details: 'Especialista em políticas educacionais.'
|
| 52 |
+
}
|
| 53 |
+
];
|
| 54 |
+
}
|
| 55 |
+
|
| 56 |
+
async function enhanceWithGemini(agents, context) {
|
| 57 |
+
if (!process.env.NEXT_PUBLIC_GEMINI_API_KEY) {
|
| 58 |
+
throw new Error('Gemini API key not configured');
|
| 59 |
+
}
|
| 60 |
+
|
| 61 |
+
const genAI = new GoogleGenerativeAI(process.env.NEXT_PUBLIC_GEMINI_API_KEY);
|
| 62 |
+
const model = genAI.getGenerativeModel({ model: "gemini-pro" });
|
| 63 |
+
|
| 64 |
+
const enhancedAgents = [];
|
| 65 |
+
|
| 66 |
+
for (const agent of agents) {
|
| 67 |
+
const prompt = `
|
| 68 |
+
Analyze this public agent for potential irregularities:
|
| 69 |
+
|
| 70 |
+
Name: ${agent.name}
|
| 71 |
+
Position: ${agent.position}
|
| 72 |
+
Location: ${agent.location}
|
| 73 |
+
Status: ${agent.status}
|
| 74 |
+
Details: ${agent.details}
|
| 75 |
+
|
| 76 |
+
Provide a brief forensic analysis and risk assessment.
|
| 77 |
+
`;
|
| 78 |
+
|
| 79 |
+
const result = await model.generateContent(prompt);
|
| 80 |
+
const response = await result.response;
|
| 81 |
+
const analysis = response.text();
|
| 82 |
+
|
| 83 |
+
enhancedAgents.push({
|
| 84 |
+
...agent,
|
| 85 |
+
analysis,
|
| 86 |
+
riskScore: Math.floor(Math.random() * 100) // In real app, this would come from analysis
|
| 87 |
+
});
|
| 88 |
}
|
| 89 |
+
|
| 90 |
+
return enhancedAgents;
|
| 91 |
}
|