Spaces:
Sleeping
Sleeping
File size: 9,770 Bytes
95eb75a | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 | // ─── 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"]
}
}
},
];
|