Spaces:
Running
Running
File size: 3,544 Bytes
6a0e448 |
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 |
import argparse
import asyncio
import base64
import os
from pathlib import Path
from proxy_lite import Runner, RunnerConfig
from proxy_lite.gif_maker import create_run_gif
from proxy_lite.logger import logger
def update_config_from_env(config: RunnerConfig) -> RunnerConfig:
if os.getenv("PROXY_LITE_API_BASE"):
config.solver.agent.client.api_base = os.getenv("PROXY_LITE_API_BASE")
if os.getenv("PROXY_LITE_MODEL"):
config.solver.agent.client.model_id = os.getenv("PROXY_LITE_MODEL")
if os.getenv("PROXY_LITE_VIEWPORT_WIDTH"):
config.environment.viewport_width = int(os.getenv("PROXY_LITE_VIEWPORT_WIDTH"))
if os.getenv("PROXY_LITE_VIEWPORT_HEIGHT"):
config.environment.viewport_height = int(os.getenv("PROXY_LITE_VIEWPORT_HEIGHT"))
return config
def do_command(args):
do_text = " ".join(args.task)
logger.info("🤖 Let me help you with that...")
# Take default config from YAML
config = RunnerConfig.from_yaml(args.config)
# Update config from environment variables
config = update_config_from_env(config)
# Update config from command-line arguments
if args.api_base:
config.solver.agent.client.api_base = args.api_base
if args.model:
config.solver.agent.client.model_id = args.model
if args.homepage:
config.environment.homepage = args.homepage
if args.viewport_width:
config.environment.viewport_width = args.viewport_width
if args.viewport_height:
config.environment.viewport_height = args.viewport_height
o = Runner(config=config)
result = asyncio.run(o.run(do_text))
final_screenshot = result.observations[-1].info["original_image"]
folder_path = Path(__file__).parent.parent.parent / "screenshots"
folder_path.mkdir(parents=True, exist_ok=True)
path = folder_path / f"{result.run_id}.png"
with open(path, "wb") as f:
f.write(base64.b64decode(final_screenshot))
logger.info(f"🤖 Final screenshot saved to {path}")
gif_folder_path = Path(__file__).parent.parent.parent / "gifs"
gif_folder_path.mkdir(parents=True, exist_ok=True)
gif_path = gif_folder_path / f"{result.run_id}.gif"
create_run_gif(result, gif_path, duration=1500)
logger.info(f"🤖 GIF saved to {gif_path}")
def main():
parser = argparse.ArgumentParser(description="Proxy-Lite")
parser.add_argument(
"task",
type=str,
help="The task you want to accomplish",
nargs="*",
)
parser.add_argument(
"--model",
type=str,
default=None,
help="The model to use.",
)
parser.add_argument(
"--api_base",
type=str,
default=None,
help="The API base URL to use.",
)
# New option for setting a homepage URL:
parser.add_argument(
"--homepage",
type=str,
default=None,
help="The homepage URL to use.",
)
# New viewport controls:
parser.add_argument(
"--viewport-width",
type=int,
default=None,
help="Viewport width in pixels.",
)
parser.add_argument(
"--viewport-height",
type=int,
default=None,
help="Viewport height in pixels.",
)
parser.add_argument(
"--config",
type=Path,
default=Path(__file__).parent / "configs/default.yaml",
help="Path to config file (default: configs/default.yaml)",
)
args = parser.parse_args()
do_command(args)
if __name__ == "__main__":
main()
|