QwenPaw è un framework potente per il costruire e testare agenti di intelligenza artificiale. Seguendo questo tutorial, si implementa un flusso di lavoro pratico e si utilizza QwenPaw per creare e testare un assistente basato sull’agente.
Configurazione Iniziale e Ambiente
Innanzitutto importiamo i moduli Python necessari e impostiamo le directory principali per lo spazio di lavoro QwenPaw su Colab. Configuriamo le variabili d'ambiente per l’autenticazione, i registri, i percorsi di lavoro e l'accesso sicuro alla Console QwenPaw.
Creiamo funzioni di supporto per eseguire comandi shell, controllare le porte, arrestare i processi dell’app esistenti e leggere le chiavi API da Colab secrets o da variabili d'ambiente.
Installazione e Inizializzazione
Prima di procedere, verifichiamo se la directory di lavoro è già inizializzata. Se no, eseguiamo il comando:
run(qwenpaw_cmd("init", "--defaults"), check=False)
Altrimenti, stampiamo un messaggio che indica che la directory di lavoro è già preparata.
Provider di Modelli
Per rendere QwenPaw compatibile con vari provider, forniamo una lista di candidati per i provider:
- OpenAI con
env: OPENAIAPIKEY - OpenRouter con
env: OPENROUTERAPIKEY - DashScope con
env: DASHSCOPEAPIKEY - DeepSeek con
env: DEEPSEEKAPIKEY - Google Gemini con
env: GEMINIAPIKEYoenv: GOOGLEAPIKEY
Se un'API key è disponibile, selezioniamo quel provider con una serie di informazioni.
Accesso e Configurazione
Utilizziamo funzioni per leggere e scrivere file JSON, fondamentali per la configurazione personalizzata.
def read_json(path, default):
try:
if path.exists():
return json.loads(path.read_text(encoding="utf-8"))
except Exception:
pass
return default
def write_json(path, data):
path.parent.mkdir(parents=True, exist_ok=True)
path.writetext(json.dumps(data, indent=2, ensureascii=False), encoding="utf-8")
Configuriamo quindi il file di configurazione:
configpath = WORKINGDIR / "config.json"
config = readjson(configpath, {})
config.setdefault("agents", {})
config["agents"].setdefault("active_agent", "default")
config["agents"].setdefault("agent_order", ["default"])
config["agents"].setdefault("profiles", {})
config["agents"]["profiles"].setdefault("default", {})
Installazione e Test
Il codice include l’installazione di QwenPaw con:
pip install -q -U pip setuptools wheel
Seguito da:
pip install -q -U qwenpaw
Eseguiamo il test di importazione:
try:
import requests
except:
pip install -q -U requests
Creazione dell'Environment
Vengono configurate le directory e le variabili d’ambiente per gestire:
- La directory di lavoro principale
- La protezione con password
- Il registro degli accessi
- L'abilitazione alla loggatura
- L’analisi delle competenze (skills)
Aggiunta di Skill e Conoscenza Locale
Con queste impostazioni, possiamo aggiungere abilità definite e file di conoscenza che QwenPaw utilizzerà per completare le richieste degli utenti.
Esecuzione della Console QwenPaw
Il comando iniziale per avviare il server locale è:
run(["qwenpaw", "run", "--port", "8088"], check=True)
Protezione e Sicurezza
Vengono create password temporanee utilizzando:
passwordfile = SECRETDIR / ".colabuipassword"
password = "qpw-" + secrets.token_urlsafe(18)
Per garantire la riservatezza, si imposta un accesso protetto con:
os.environ["QWENPAWAUTHPASSWORD"] = passwordfile.readtext(encoding="utf-8").strip()
Collaboratività ed Estensione del Server
Se desideriamo condividere l’applicazione esternamente, usiamo:
ngrok_url = "https://qwenpaw.ngrok.io"
requests.get(ngrok_url)
Test API Streaming
Per testare l'API in streaming usiamo:
requests.post(f"{ngrok_url}/v1/chat/completions", json={
"model": "gpt-4o-mini",
"messages": [{"role": "user", "content": "Elabora testo."}]}))
Gestione e Arresto Applicazione
Se necessario, arrestiamo l’app esistente con:
if PID_FILE.exists():
try:
pid = int(PIDFILE.readtext().strip())
os.kill(pid, signal.SIGTERM)
except Exception:
pass
PIDFILE.unlink(missingok=True)
Conclusione
Con queste operazioni, si ha un ambiente completamente funzionante per lo sviluppo e il test di agenti potenziati con competenze personalizzate. L’applicazione ha la flessibilità di essere utilizzata sia come assistente interattivo che come framework agente API-centrico.
Ci si assicura anche di testare il collegamento con diversi provider di modelli di AI, di gestire porte e password, e di integrare l’accesso locale ed esterno.