Spaces:
Sleeping
Sleeping
| // ─── Web & network tools — web_search, read_page, weather, currency, github, fetch, wikipedia, news, translate, npm, stock, browser ─────────────────────────────────────────────────────────── | |
| // P3-4 split da toolDefinitions.ts — DO NOT edit toolDefinitions.ts directly | |
| // Tools (14): web_search, read_page, get_weather, get_currency, search_github, fetch_url, search_wikipedia, get_news, translate, search_npm, get_stock, clone_url_to_vfs, browser_session_open, browser_session_act | |
| import type { ChatCompletionTool } from "openai/resources/chat/completions"; | |
| export const WEB_TOOLS: (ChatCompletionTool | undefined)[] = [ | |
| { | |
| type: "function", | |
| function: { | |
| name: "web_search", | |
| description: "Ricerca web (Brave → Tavily → DDG → HackerNews → StackOverflow). USA SOLO per: notizie di OGGI, eventi live, prezzi/quote in tempo reale, versioni software uscite dopo il 2024. NON USARE MAI per: costanti fisiche (velocità luce, gravità, Planck), matematica, formule, logica, definizioni, storia, geografia, persone famose, fatti stabili che non cambiano — rispondi DIRETTAMENTE da training. REGOLA: se la domanda aveva la stessa risposta 5 anni fa, NON cercare.", | |
| parameters: { type: "object", properties: { query: { type: "string", description: "Query concisa di massimo 8 parole" }, focus: { type: "string", enum: ["general","technical","code","news"], description: "Opzionale: technical=SO/GitHub, news=notizie recenti" } }, required: ["query"] } | |
| } | |
| }, | |
| { | |
| type: "function", | |
| function: { | |
| name: "read_page", | |
| description: "Leggi il contenuto completo di una pagina web o URL (usa proxy CORS automaticamente). Ottimo per leggere documentazione, articoli, README.", | |
| parameters: { type: "object", properties: { url: { type: "string", description: "URL completo da leggere" } }, required: ["url"] } | |
| } | |
| }, | |
| { | |
| type: "function", | |
| function: { | |
| name: "get_weather", | |
| description: "Meteo attuale e previsioni 4 giorni (Open-Meteo). Usa solo se l'utente chiede esplicitamente meteo/previsioni di una citta' specifica.", | |
| parameters: { type: "object", properties: { city: { type: "string", description: "Nome città (es. 'Milano', 'New York')" } }, required: ["city"] } | |
| } | |
| }, | |
| { | |
| type: "function", | |
| function: { | |
| name: "get_currency", | |
| description: "Tasso di cambio e conversione valute in tempo reale (exchangerate-api, nessuna API key).", | |
| parameters: { type: "object", properties: { from: { type: "string", description: "Valuta sorgente (es. EUR)" }, to: { type: "string", description: "Valuta destinazione (es. USD)" }, amount: { type: "number", description: "Importo da convertire (default 1)" } }, required: ["from","to"] } | |
| } | |
| }, | |
| { | |
| type: "function", | |
| function: { | |
| name: "search_github", | |
| description: "Cerca repository GitHub per linguaggio, topic o keyword. Restituisce nome, descrizione, stelle, URL.", | |
| parameters: { type: "object", properties: { query: { type: "string", description: "Query di ricerca (es. 'react state management')" }, lang: { type: "string", description: "Linguaggio di programmazione (opzionale)" } }, required: ["query"] } | |
| } | |
| }, | |
| { | |
| type: "function", | |
| function: { | |
| name: "fetch_url", | |
| description: "Fetch HTTP di qualsiasi URL o API pubblica (con fallback CORS proxy automatico). Usa per API REST, webhook, dati JSON.", | |
| parameters: { type: "object", properties: { url: { type: "string", description: "URL da chiamare" }, method: { type: "string", enum: ["GET","POST","PUT","DELETE","PATCH"], description: "Metodo HTTP (default GET)" }, body: { type: "string", description: "Body JSON per POST/PUT" } }, required: ["url"] } | |
| } | |
| }, | |
| { | |
| type: "function", | |
| function: { | |
| name: "search_wikipedia", | |
| description: "Articolo Wikipedia. Usa solo se servono dati enciclopedici precisi (date esatte, numeri, biografia dettagliata) che potresti confondere a memoria.", | |
| parameters: { type: "object", properties: { query: { type: "string", description: "Termine di ricerca" } }, required: ["query"] } | |
| } | |
| }, | |
| { | |
| type: "function", | |
| function: { | |
| name: "get_news", | |
| description: "Ultime notizie italiane in tempo reale da ANSA, Corriere, Sole24Ore. Usa per eventi recenti, notizie del giorno.", | |
| parameters: { type: "object", properties: { query: { type: "string", description: "Argomento di interesse (opzionale)" } } } | |
| } | |
| }, | |
| { | |
| type: "function", | |
| function: { | |
| name: "translate", | |
| description: "Traduci testo in qualsiasi lingua via MyMemory (gratis). Usa per traduzioni singole o di paragrafi.", | |
| parameters: { | |
| type: "object", | |
| properties: { | |
| text: { type: "string", description: "Testo da tradurre (max 500 chars)" }, | |
| to: { type: "string", description: "Codice lingua destinazione (es. en, it, fr, de, es, pt, ja, zh, ar, ru, ko)" }, | |
| from: { type: "string", description: "Codice lingua sorgente (default: auto-detect)" } | |
| }, | |
| required: ["text", "to"] | |
| } | |
| } | |
| }, | |
| { | |
| type: "function", | |
| function: { | |
| name: "search_npm", | |
| description: "Cerca pacchetti nel registro npm. Usa per trovare librerie JavaScript/TypeScript, confrontare alternative, verificare versioni.", | |
| parameters: { type: "object", properties: { query: { type: "string", description: "Termine di ricerca (es. 'state management react', 'csv parser')" } }, required: ["query"] } | |
| } | |
| }, | |
| { | |
| type: "function", | |
| function: { | |
| name: "get_stock", | |
| description: "Quotazione borsa in tempo reale via Yahoo Finance (gratis). Prezzo attuale, variazione, ultime 5 sedute.", | |
| parameters: { type: "object", properties: { symbol: { type: "string", description: "Simbolo ticker (es. AAPL, TSLA, MSFT, NVDA, BTC-EUR, ETH-EUR, ENI.MI, UCG.MI)" } }, required: ["symbol"] } | |
| } | |
| }, | |
| { | |
| type: "function", | |
| function: { | |
| name: "clone_url_to_vfs", | |
| description: "Scarica qualsiasi file/risorsa da un URL e lo salva nel VFS. Supporta testo, JSON, immagini, binari. Usa CORS proxy automaticamente.", | |
| parameters: { type: "object", properties: { url: { type: "string", description: "URL da scaricare" }, save_path: { type: "string", description: "Percorso di destinazione nel VFS (es. /downloads/data.json)" }, format: { type: "string", enum: ["auto","text","binary"], description: "Formato: auto (default), text (forza testo), binary (forza base64)" } }, required: ["url","save_path"] } | |
| } | |
| }, | |
| { | |
| type: "function", | |
| function: { | |
| name: "browser_session_open", | |
| description: "Apre una sessione browser Playwright con stato persistente (cookie, localStorage, autenticazione). La sessione rimane aperta per azioni sequenziali. Usa quando devi navigare siti con login o scraping multi-step.", | |
| parameters: { | |
| type: "object", | |
| properties: { | |
| url: { type: "string", description: "URL iniziale da aprire" }, | |
| session_id: { type: "string", description: "ID sessione (default: auto-generato — usalo in browser_session_act)" }, | |
| headless: { type: "boolean", description: "Modalità headless (default: true)" }, | |
| viewport: { type: "object", description: "Dimensioni viewport {width, height} (default: 1280x720)" }, | |
| }, | |
| required: ["url"], | |
| }, | |
| }, | |
| }, | |
| { | |
| type: "function", | |
| function: { | |
| name: "browser_session_act", | |
| description: "Esegue un'azione in una sessione Playwright aperta con browser_session_open. Azioni: click, type, navigate, screenshot, get_text, select, hover, wait, scroll, evaluate.", | |
| parameters: { | |
| type: "object", | |
| properties: { | |
| session_id: { type: "string", description: "ID sessione da browser_session_open" }, | |
| action: { type: "string", enum: ["click","type","navigate","screenshot","get_text","select","hover","wait","scroll","evaluate"], description: "Azione da eseguire" }, | |
| selector: { type: "string", description: "Selettore CSS o XPath dell'elemento target" }, | |
| value: { type: "string", description: "Valore per type/select/navigate/evaluate" }, | |
| timeout: { type: "number", description: "Timeout ms (default: 5000)" }, | |
| }, | |
| required: ["session_id", "action"], | |
| }, | |
| }, | |
| }, | |
| { | |
| type: "function", | |
| function: { | |
| name: "deep_research", | |
| description: "Ricerca multi-round approfondita su argomenti complessi (ARL). " + | |
| "USA per: analisi comparative, report multi-fonte, argomenti tecnici che richiedono " + | |
| "confronto tra più fonti, ricerche dove web_search singolo è insufficiente. " + | |
| "Esegue fino a 3 round con raffinamento automatico della query (zero LLM aggiuntivo) " + | |
| "e navigazione dei link rilevanti. Budget fisso: ≤12 fetch · timeout 22s · safe su iPhone. " + | |
| "NON usare per domande rapide — usa web_search per query semplici.", | |
| parameters: { | |
| type: "object", | |
| properties: { | |
| goal: { | |
| type: "string", | |
| description: "Obiettivo di ricerca in linguaggio naturale, preciso e dettagliato " + | |
| "(es. 'Analisi delle prestazioni dei principali LLM open-source nel 2025: " + | |
| "benchmark, costi, limitazioni free tier')" | |
| } | |
| }, | |
| required: ["goal"] | |
| } | |
| } | |
| }, | |
| ]; | |