wcag_AI_validation/scripts/browser-use/webagent-ollama.py

76 lines
3.1 KiB
Python

#pip install browser-use langchain-openai langchain-ollama playwright
#playwright install
"""import asyncio
from browser_use import Agent
from langchain_ollama import ChatOllama
async def run_local_agent():
# Inizializziamo il modello locale tramite Ollama
# Impostiamo num_ctx a 32000 perché l'albero visivo/DOM consuma molti token
llm = ChatOllama(
model="gemma4:e2b",
num_ctx=32000,
temperature=0.0
)
agent = Agent(
task="Naviga su wikipedia, cerca la pagina dell'intelligenza artificiale e dimmi l'anno di nascita del termine.",#"Vai su google.it, cerca 'meteo Roma' e leggi la temperatura attuale.",
llm=llm
)
result = await agent.run(max_steps=20)
print("\n[Risultato Finale Ollama]:\n", result)
if __name__ == "__main__":
asyncio.run(run_local_agent())"""
import asyncio
from browser_use import Agent, ChatOpenAI
from langchain_ollama import ChatOllama
async def run_remote_ollama_agent():
# Poiché l'istanza Ollama è protetta da un Bearer Token, usiamo la classe ChatOpenAI
# che è nativamente progettata per gestire base_url custom ed header di autenticazione.
llm = ChatOpenAI(
model="ministral-3:3b",#"gemma3:4b",#"gemma4:e4b",#"ministral-3:3b",#"gemma4:e2b", # Inserisci il nome esatto del modello presente sul tuo server remoto
base_url="https://vgpu.hiis.cloud.isti.cnr.it/v1", # L'endpoint v1 del tuo proxy/gateway
api_key="", # Il tuo token di autenticazione va inserito qui
# Parametri critici per far funzionare i modelli Open Source locali con browser-use:
temperature=0.0,
# Sovrascriviamo il comportamento di default dicendo al client OpenAI
# di effettuare la chiamata POST puntando alla rotta esatta richiesta dal tuo server
default_headers={
"Authorization": "Bearer your_api_key"
},
)
# FORZATURA DIRETTA: Iniettiamo num_ctx direttamente nei model_kwargs dell'oggetto appena creato.
# Questo bypassa i controlli del costruttore __init__() e scrive direttamente nella configurazione di rete.
llm.model_kwargs = { #SEMBRA CHE NON SI APPLICHI
"extra_body": {
"num_ctx": 32000
}
}
# Inizializzazione dell'agente
agent = Agent(
#task="Naviga su wikipedia, cerca la pagina dell'intelligenza artificiale e dimmi l'anno di nascita del termine.",#"Vai su google.it, cerca 'meteo Roma' e leggi la temperatura attuale.",
task="Open the URL https://github.com/rasbt and check if the page offers an alternative function to the interactive map of content in the year (contribution heatmap data visualization). 'Equivalent' is to be interpreted according to the WCAG Success Criterion 2.5.8 Target Size (Minimum): 'The function can be achieved through a different control on the same page that meets this criterion' - Answer YES or NO and justify your answer.",
llm=llm
)
# Esecuzione del workflow
result = await agent.run(max_steps=20)
print("\n[Risultato Finale]:\n", result)
if __name__ == "__main__":
asyncio.run(run_remote_ollama_agent())