العودة إلى المدونة

الوكلاء والأتمتةدليل

Browser Use على نموذج رخيص: إعداد base_url وتكلفة التشغيل

اربط Browser Use بـ API متوافق مع OpenAI، وشغّل مهمة فحص سعر في متصفح حقيقي وقدّر تكلفة تشغيل واحد.

بواسطة CheapTokens Teamنُشر في 4 دقيقة قراءة

إعداد Browser Use: ChatOpenAI مع base_url ومعرّف نموذج مخصصين
في هذه الصفحة
  1. التثبيت والتوجيه إلى الـ API
  2. ما يفعله الوكيل فعليًا في صفحة سعر
  3. تكلفة تشغيل واحد
  4. إذا لم يعمل

يقبل Browser Use أي نقطة نهاية متوافقة مع OpenAI، لذا يتطلب ربطه بـ CheapTokens ثلاث قيم: base_url، ومفتاحك، ومعرّف النموذج الكامل. فيما يلي agent.py يفتح صفحة منتج، ويقرأ السعر ويبلّغ به، إضافة إلى تقدير لتكلفة تشغيل واحد بالأسعار الحية.

يعيد وكيل المتصفح إرسال نص الصفحة إلى النموذج في كل خطوة، لذا يأتي التقدير قبل الجدولة.

التثبيت والتوجيه إلى الـ API#

يثبّت ملف README الخاص بـ Browser Use (تم التحقق منه في 8 نوفمبر 2026) باستخدام uv؛ وتحتاج المكتبة إلى Python 3.11+ وهي مرخّصة بموجب MIT. تعرض صفحة النماذج المدعومة في الوثائق نمط نقاط النهاية المخصصة: ChatOpenAI مع base_url، ثم Agent(task=..., llm=llm).

bash
uv init --python 3.12
uv add browser-use

ضع المفتاح في ملف .env بجوار السكربت، وليس في الكود أبدًا:

bash
CHEAPTOKENS_API_KEY=your-key-here

ثم agent.py:

python
import asyncio
import os

from dotenv import load_dotenv
from browser_use import Agent, ChatOpenAI

load_dotenv()

llm = ChatOpenAI(
    model='deepseek-ai/DeepSeek-V4-Flash-0731',
    base_url='https://api.cheaptokens.dev/v1',
    api_key=os.getenv('CHEAPTOKENS_API_KEY'),
)

task = (
    'Open https://shop.example/laptop-x (replace with your product page). '
    'Find the current price and whether it is in stock. '
    'Reply with one line: price, currency, in stock yes/no. '
    'Do not click Buy or add anything to the cart.'
)

agent = Agent(task=task, llm=llm)
asyncio.run(agent.run())

شغّله باستخدام uv run agent.py. إذا اشتكى التشغيل الأول من متصفح مفقود، فثبّته كما يوضح Browser Use quickstart (uvx browser-use install، تم التحقق منه في 8 نوفمبر 2026).

كتلة ChatOpenAI مع base_url ومعرّف النموذج الخاصين بـ CheapTokens
الجزء الوحيد الذي يتغير مقارنةً بالإعداد الافتراضي: النموذج، وbase_url، والمفتاح.

لماذا هذا النموذج: تشغيل المتصفح عبارة عن استدعاءات كثيرة بسياق صفحة طويل. يمتلك DeepSeek-V4-Flash نافذة سياق تبلغ 380K، وحتى 32,768 رمز إخراج لكل إجابة، وسعرًا واحدًا في أي ساعة من اليوم. يجب أن يكون المعرّف هو deepseek-ai/DeepSeek-V4-Flash-0731 الكامل — فالأسماء المختصرة من جداول الأسعار لا يقبلها الـ API. تجد معرّفات أخرى وأساسيات الاتصال في وثائق CheapTokens.

ما يفعله الوكيل فعليًا في صفحة سعر#

لنفترض أن مهمتك هي "كم يبلغ سعر هذا الحاسوب المحمول اليوم". يشغّل الوكيل حلقة: يحصل على نص الصفحة، ويسأل النموذج عما يجب فعله تاليًا، وينفّذ الإجراء في المتصفح (فتح، تمرير، نقر)، ويستعيد نص الصفحة الجديد. يكرّر ذلك حتى يقرّر النموذج أنه حصل على الإجابة.

الحلقة: المهمة، استدعاء النموذج، إجراء المتصفح، نص الصفحة الجديد
كل مرور عبر الحلقة هو استدعاء واحد للنموذج، ويعاد إدخال نص الصفحة في كل مرة.

هذا السهم الأخير هو محرّك التكلفة. قد تحتوي صفحة منتج على آلاف الرموز من النص، وهي تنتقل مع كل استدعاء. أدرج منشور قناة في 6 نوفمبر Browser Use كطبقة المتصفح لوكيل تسوّق يقارن العروض ويتتبع انخفاضات الأسعار؛ وتناسب الفكرة نفسها فحصًا يوميًا لصفحة أو صفحتين، كما في المهمة أعلاه.

اختر حالتك

هل وكيل المتصفح هو الأداة المناسبة لفحصك؟

لا يظهر السعر إلا بعد النقرات

يناسب وكيل المتصفح. يفتح الصفحة في متصفح حقيقي، ويختار مقاسًا أو لونًا، ويمرّر ويقرأ ما يظهر. كتابة ذلك كسكربت تعني صيانة محدّدات لكل متجر.

عنوان URL ثابت واحد وعنصر سعر ثابت واحد

السكربت العادي بمحدّد أرخص: لا استدعاء للنموذج على الإطلاق. ضع الخطوات الثابتة في الكود واحتفظ بالنموذج للأجزاء التي تتغير. المزيد عن ذلك في do agents need the model at every step.

متجران أو ثلاثة بتخطيطات مختلفة

يناسب وكيل المتصفح. يغطي نص مهمة واحد عدة تخطيطات صفحات، وتقارن الإجابات المكوّنة من سطر واحد بعد ذلك.

تحذير واحد قبل أن تجدول أي شيء: يقرأ الوكيل كل ما تقوله الصفحة، وقد تحتوي الصفحة على تعليمات موجّهة إلى الوكيل. تغطي قائمة التحقق من حقن المطالبات ما يجب فعله حيال ذلك، والمهمة أعلاه تحظر الشراء للسبب نفسه.

تكلفة تشغيل واحد#

لا تخمّن؛ افترض. لنفترض أن التشغيل يستغرق 15 خطوة. ترسل كل خطوة المهمة والسجل والصفحة الحالية: نحو 12,000 رمز إدخال، ويجيب النموذج بإجراء قصير من نحو 600 رمز.

15 × 12,000 = 180,000 رمز إدخال و15 × 600 = 9,000 رمز إخراج لكل تشغيل. على DeepSeek-V4-Flash يكلّف ذلك التشغيل $0.0036، والإدخال بسعر $0.015 لكل مليون رمز. الإدخال هنا 20 ضعف الإخراج، وهو أمر معتاد في عمل المتصفح، ومحسوبًا معًا في الإجمالي، فإن السعر أقل من مرجع OpenRouter لهذا النموذج.

يستخدم الجدول أدناه أرقام كل خطوة نفسها لـ 15 خطوة، لترى كل نموذج جنبًا إلى جنب:

النموذج لكل طلب 15 طلبات OpenRouter، 15 طلبات
GLM-5.3-Flash $0.00026 $0.004 $0.0068
DeepSeek-V4-Flash $0.00024 $0.0036 $0.0139
MiniMax-M2.7 $0.00069 $0.0104 $0.124

12,000 رمز إدخال و600 رمز إخراج لكل طلب. الأسعار لكل مليون رمز حالية وتتغير مع تعريفاتنا؛ يعرض عمود OpenRouter أسعارًا مرجعية لنفس حجم العمل.

ثم قسّه على جدولك. فحص ثلاث صفحات مرة واحدة يوميًا هو 45 خطوة؛ اسحب أشرطة التمرير إلى أرقامك الخاصة.

حاسبة التكلفة

يوم واحد من فحوصات الأسعار: 3 صفحات، 15 خطوة لكل منها

رموز الإدخال لكل طلب: 12,000 · رموز الإخراج لكل طلب: 600 · الطلبات يوميًا: 45

النموذجيوميًاشهريًا
GLM-5.3-Flash$0.0119$0.356
DeepSeek-V4-Flash$0.0108$0.324
MiniMax-M2.7$0.0311$0.932

توجد نسخة الخمسين خطوة من هذه الحسابات على ثلاثة نماذج في agent session cost. إذا كنت تفضّل GLM-5.3-Flash (سياق 390K، وحتى 8,192 رمز إخراج)، فصفّه موجود في الجدول أعلاه؛ وإجابات الإجراءات القصيرة هنا تقع جيدًا تحت ذلك الحد. الأسعار الحالية لكل نموذج موجودة في صفحة الأسعار.

إذا لم يعمل#

ابدأ بنص الخطأ. هذه الثلاثة هي المشتبه بهم المعتادون:

طابق الأزواج

طابق العَرَض مع سببه

  • 401 Unauthorizedالمفتاح مفقود من .env أو به خطأ مطبعي
  • 404 model not foundتم استخدام معرّف النموذج المختصر بدلًا من deepseek-ai/DeepSeek-V4-Flash-0731
  • {"navigate": "google.com"} بدلًا من {"navigate": {"url": ...}}أعاد النموذج مخطط إجراء خاطئًا

الأخير موصوف في صفحة النماذج المدعومة في Browser Use (تم التحقق منها في 8 نوفمبر 2026) لنماذج Qwen الأصغر: قد تعيد مخطط إجراء خاطئًا. الإصلاح الذي تقترحه الوثائق هو وضع أمثلة على تنسيق الإجراء الصحيح في المطالبة. أضفها إلى نص المهمة، على سبيل المثال:

text
Actions are JSON objects like {"navigate": {"url": "https://..."}}.
Always put the url inside the object.

إذا استمر التشغيل في الدوران في حلقات، فاجعل المهمة أضيق: صفحة واحدة، سؤال واحد، إجابة من سطر واحد. تنتهي المهام القصيرة في خطوات أقل، والخطوات الأقل هي أرخص إصلاح على الإطلاق.

التالي: LangChain with a custom base_url يستخدم فكرة base_url نفسها إذا بنيت سلاسلك الخاصة حول وكيل المتصفح.