76 lines
3.1 KiB
Python
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()) |