Files
liqiang b119135836
Build latest book artifacts / build (push) Canceled after 0s
dependency resolution / resolve (3.11) (push) Canceled after 0s
dependency resolution / resolve (3.13) (push) Canceled after 0s
deploy-pages / build (push) Canceled after 0s
deploy-pages / deploy (push) Canceled after 0s
i18n consistency check / check (push) Canceled after 0s
provider adoption tests / test (chapter2/context-compression) (push) Canceled after 0s
provider adoption tests / test (chapter2/prompt-injection) (push) Canceled after 0s
provider adoption tests / test (chapter2/system-hint) (push) Canceled after 0s
provider adoption tests / test (chapter3/log-sanitization) (push) Canceled after 0s
web-search-agent tests / test (push) Canceled after 0s
web-search-agent tests / agentbook (push) Canceled after 0s
ai-agent-book 精选快照(<2MB 代码与文档,来自 github.com/bojieli/ai-agent-book)
2026-08-20 13:12:50 +00:00

88 lines
2.2 KiB
Python

"""
To use it, you'll need to install streamlit, and run with:
python -m streamlit run streamlit_demo.py
"""
import asyncio
import os
import sys
sys.path.append(os.path.dirname(os.path.dirname(os.path.dirname(os.path.abspath(__file__)))))
from dotenv import load_dotenv
load_dotenv()
import streamlit as st # type: ignore
from browser_use import Agent
from browser_use.browser import BrowserSession
from browser_use.tools.service import Tools
if os.name == 'nt':
asyncio.set_event_loop_policy(asyncio.WindowsProactorEventLoopPolicy())
# Function to get the LLM based on provider
def get_llm(provider: str):
if provider == 'anthropic':
from browser_use.llm import ChatAnthropic
api_key = os.getenv('ANTHROPIC_API_KEY')
if not api_key:
st.error('Error: ANTHROPIC_API_KEY is not set. Please provide a valid API key.')
st.stop()
return ChatAnthropic(model='claude-3-5-sonnet-20240620', temperature=0.0)
elif provider == 'openai':
from browser_use import ChatOpenAI
api_key = os.getenv('OPENAI_API_KEY')
if not api_key:
st.error('Error: OPENAI_API_KEY is not set. Please provide a valid API key.')
st.stop()
return ChatOpenAI(model='gpt-4.1', temperature=0.0)
else:
st.error(f'Unsupported provider: {provider}')
st.stop()
return None # Never reached, but helps with type checking
# Function to initialize the agent
def initialize_agent(query: str, provider: str):
llm = get_llm(provider)
tools = Tools()
browser_session = BrowserSession()
return Agent(
task=query,
llm=llm, # type: ignore
tools=tools,
browser_session=browser_session,
use_vision=True,
max_actions_per_step=1,
), browser_session
# Streamlit UI
st.title('Automated Browser Agent with LLMs 🤖')
query = st.text_input('Enter your query:', 'go to reddit and search for posts about browser-use')
provider = st.radio('Select LLM Provider:', ['openai', 'anthropic'], index=0)
if st.button('Run Agent'):
st.write('Initializing agent...')
agent, browser_session = initialize_agent(query, provider)
async def run_agent():
with st.spinner('Running automation...'):
await agent.run(max_steps=25)
st.success('Task completed! 🎉')
asyncio.run(run_agent())
st.button('Close Browser', on_click=lambda: asyncio.run(browser_session.kill()))