🤖 AI Agent Tools - Function Calling
Overview
Vartovii now includes Function Calling integration with the configured Gemini model profile (with automatic fallback), enabling the AI assistant to fetch real database data instead of generic responses.
Доступні Tools
1. search_company
Пошук компанії в базі даних.
Параметри:
company_name(required) - Назва компаніїcountry(optional) - Код країни (de, at, ch)
Приклад:
User: "Знайди компанію BMW"
→ Tool call: search_company({"company_name": "BMW"})
→ Response: Trust Score 71, 5621 відгуків, рейтинг 3.97
2. get_trust_score
Детальний Trust Score з breakdown.
Параметри:
company_name(required) - Назва компанії
Response:
{
"company_name": "BMW",
"trust_score": 71,
"risk_level": "MEDIUM",
"breakdown": {
"rating_quality": 23.8,
"sentiment": 12.5,
"volume": 20,
"consistency": 10,
"recency": 5
}
}
3. list_companies
Список топ роботодавців.
Параметри:
country(optional) - Фільтр по країніlimit(optional, default: 10) - Кількість компанійsort_by(optional) - trust_score, review_count, avg_rating
Приклад:
User: "Покажи топ 5 компаній"
→ Tool call: list_companies({"limit": 5})
→ Response: SAP, BMW, Bosch, Lidl, Amazon
4. compare_companies
Порівняння двох роботодавців.
Параметри:
company1(required) - Перша компаніяcompany2(required) - Друга компанія
Приклад:
User: "Порівняй BMW та Audi"
→ Tool call: compare_companies({"company1": "BMW", "company2": "Audi"})
→ Response: BMW wins (71 vs 57)
5. run_analysis 🚀
Запуск збору та аналізу даних для НОВОЇ компанії (Magic Search).
Параметри:
company_name(required) - Назва компаніїcountry(optional, default: "de") - Код країни
Логіка:
- Шукає компанію на Kununu
- Створює scraping jobs (Kununu, Google, Reddit, Vacancies)
- Повертає job IDs для tracking
Приклад:
User: "Проаналізуй компанію Spotify"
→ Tool call: search_company({"company_name": "Spotify"}) → not found
→ Tool call: run_analysis({"company_name": "Spotify"})
→ Response: "🚀 Аналіз запущено! 4 jobs створено. Результат за 5-10 хв."
6. get_company_reviews 💬 NEW
Показує sample відгуки працівників про компанію.
Параметри:
company_name(required) - Назва компаніїsentiment(optional) - positive, negative, all (default: all)limit(optional) - Кількість відгуків (default: 5, max: 10)
Приклад:
User: "Покажи відгуки про BMW"
→ Tool call: get_company_reviews({"company_name": "BMW"})
→ Response: 5 reviews з ratings та джерелами
Response:
{
"company_name": "BMW",
"reviews": [
{
"text": "👍 Great work-life balance...",
"rating": 4.5,
"sentiment": "POSITIVE",
"source": "kununu"
}
],
"summary": {
"total": 5,
"positive": 3,
"negative": 2
}
}
🍕 Pizza Tracker
Візуалізація статусу AI Agent в реальному часі:
┌─────────────────────────────────────────┐
│ 🤔 ─────── 🔍 ─────── 📊 ─────── ✍️ │
│ Думаю Шукаю дані Аналізую Готую │
│ │
│ 🏢 Шукаю компанію... │
│ 📊 Аналізую Trust Score... │
└─────────────────────────────────────────┘
Steps:
- 🤔 Думаю... - AI обробляє запит
- 🔍 Шукаю дані... - Пошук в базі
- 📊 Аналізую... - Виконання tools
- ✍️ Готую відповідь... - Формування
🔐 API Security
Agent Endpoints (Secured)
Всі /api/agent/* endpoints захищені API Key:
# Without key - 401
curl https://vartovii.com/api/agent/search-company
# With key - 200 OK
curl -H "X-API-Key: YOUR_KEY" \
https://vartovii.com/api/agent/search-company \
-d '{"company_name": "BMW"}'
Config:
AGENT_API_KEY- зберігається в Secret Manager- Health check
/api/agent/health- public (no auth)
Technical Implementation
Architecture
User Message → ChatWidget → /api/ai/chat
↓
Routing adapter decision
↓
Gemini model profile + FunctionDeclarations
↓
_execute_tool_call_sync()
↓
Shared adapters / services
↓
Final Response with Real Data
Key Files
backend/ai/services/chat_service.py- Function Calling logic (6 tools)backend/api/agent_tools.py- Standalone API endpoints + securitybackend/services/smart_search.py- Magic Search servicedashboard_app/src/components/ChatWidget.jsx- Pizza Tracker UI
Completed Tools ✅
-
search_company- Search company in database -
get_trust_score- Detailed Trust Score breakdown -
list_companies- Top employers ranking -
compare_companies- Compare two employers -
run_analysis- Start Magic Search for new companies -
get_company_reviews- Sample reviews from company
Future Tools (Planned)
-
get_industry_stats- Industry comparison statistics -
track_analysis- Check status of running analysis -
get_job_openings- Current vacancies from Indeed