Views
No views yet

git clone https://github.com/convergence-ai/proxy-lite.git
make proxy
proxy "Find some markets near Kings Cross and tell me their ratings."
1vllm serve convergence-ai/proxy-lite-3b \
2 --trust-remote-code \
3 --enable-auto-tool-choice \
4 --tool-call-parser hermes \
5 --port 8008 \Important: Qwen-2.5-VL Support intransformersis not yet available in the latest release so be sure to install from source.
1message_history = [
2 {
3 "role": "system",
4 "content": "You are Proxy Lite...", # Full system prompt in src/proxy_lite/agents/proxy_lite_agent.py
5 }, # System prompt
6 {
7 "role": "user",
8 "content": "Find some markets near Kings Cross and tell me their ratings.",
9 }, # Set the task
10 {
11 "role": "user",
12 "content": [
13 {"type": "image_url", "image_url": {base64_encoded_screenshot} },
14 {"type": "text", "text": "URL: https://www.google.com/ \n- [0] <a>About</a> \n- [1] <a>Store</a>...."}
15 ] # This is the observation from the environment
16 },
17]Context-Window Management: When making calls to the model, all the observations other than the current one are discarded in order to reduce the large number of image tokens required. Since the model responses include reflection on the observations and are all included in the message history, the model is still aware of the entire history when planning new actions.
Tools that the model has access to, these will define the action space available to the model. You can do this with transformers:1from qwen_vl_utils import process_vision_info
2from transformers import AutoProcessor
3
4from proxy_lite.tools import ReturnValueTool, BrowserTool
5from proxy_lite.serializer import OpenAICompatableSerializer
6
7processor = AutoProcessor.from_pretrained("convergence-ai/proxy-lite-3b")
8tools = OpenAICompatableSerializer().serialize_tools([ReturnValueTool(), BrowserTool(session=None)])
9
10templated_messages = processor.apply_chat_template(
11 message_history, tokenize=False, add_generation_prompt=True, tools=tools
12)
13
14image_inputs, video_inputs = process_vision_info(message_history)
15
16batch = processor(
17 text=[templated_messages],
18 images=image_inputs,
19 videos=video_inputs,
20 padding=True,
21 return_tensors="pt",
22)1from openai import OpenAI
2
3client = OpenAI(base_url="http://convergence-ai-demo-api.hf.space/v1")
4
5response = client.chat.completions.create(
6 model="convergence-ai/proxy-lite-3b",
7 messages=message_history,
8 tools=tools,
9 tool_choice="auto",
10)| web_name | Success Rate (%) | Finish Rate (%) | Avg. Steps |
|---|---|---|---|
| Allrecipes | 87.8 | 95.1 | 10.3 |
| Amazon | 70.0 | 90.0 | 7.1 |
| Apple | 82.1 | 89.7 | 10.7 |
| ArXiv | 60.5 | 79.1 | 16.0 |
| BBC News | 69.4 | 77.8 | 15.9 |
| Booking | 70.0 | 85.0 | 24.8 |
| Cambridge Dict. | 86.0 | 97.7 | 5.7 |
| Coursera | 82.5 | 97.5 | 4.7 |
| ESPN | 53.8 | 87.2 | 14.9 |
| GitHub | 85.0 | 92.5 | 10.0 |
| Google Flights | 38.5 | 51.3 | 34.8 |
| Google Map | 78.9 | 94.7 | 9.6 |
| Google Search | 71.4 | 92.9 | 6.0 |
| Huggingface | 68.6 | 74.3 | 18.4 |
| Wolfram Alpha | 78.3 | 93.5 | 6.1 |
1@article{proxy-lite,
2 title={Proxy Lite - A Mini, Open-weights, Autonomous Assistant},
3 author={Convergence AI},
4 year={2025}
5}