عاملی که کد مینویسد فقط وقتی به کار میآید که چیزی آن کد را امن اجرا کند و نتیجه را گزارش دهد. این راهنما آن حلقه را از ابتدا تا انتها میسازد: مدل یک اسکریپت پایتون مینویسد، سندباکس آن را اجرا میکند و اگر شکست خورد، خطا به مدل برمیگردد. سپس همین کار بدون حتی یک خط کد، از طریق MCP.
به پایتون ۳٫۸+، توکن حساب EQVPS (نگاه کنید به اتصال حساب) و کلید API یک مدل نیاز دارید.
۱. اول سقف هزینه بگذارید
عامل خودش سندباکس میسازد، پس پیش از شروع برایش سقف تعیین کنید. روزی دو دلار و ماهی بیست دلار برای آزمایش بیش از کافی است:
curl -X PUT https://api.eqvps.com/api/v1/eqvps/sandboxes/budget \
-H "Authorization: Bearer $EQVPS_API_KEY" -H "Content-Type: application/json" \
-d '{"daily_usd": 2, "monthly_usd": 20}'
با رسیدن به سقف، سندباکسهای تازه پاسخ 429 budget_exceeded میگیرند و سندباکسهای موقتِ در حال اجرا حذف میشوند. جزئیات در محدودیتها و صورتحساب سندباکس است.
۲. دو کتابخانه را نصب کنید
pip install eqvps anthropic
export EQVPS_API_KEY="your-eqvps-token"
export ANTHROPIC_API_KEY="your-model-key"
مثال از یک ارائهدهندهٔ مدل استفاده میکند، اما هیچ چیز به آن وابسته نیست. فقط تابع ask() با مدل حرف میزند.
۳. حلقهٔ بنویس، اجرا کن، اصلاح کن
این را با نام agent.py ذخیره کنید:
import re
import anthropic
from eqvps import Sandbox
TASK = "Count the prime numbers below 1,000,000 and print only the number."
client = anthropic.Anthropic()
def ask(messages):
msg = client.messages.create(model="claude-sonnet-5", max_tokens=2000, messages=messages)
return msg.content[0].text
def extract_code(text):
m = re.search(r"`{3}(?:python)?\n(.*?)`{3}", text, re.S)
return m.group(1) if m else text
messages = [{"role": "user", "content": "Write a Python 3 script for this task. "
"Reply with a single code block and nothing else.\n\nTask: " + TASK}]
with Sandbox.create(tariff="small", idle_timeout=120) as sb:
for attempt in range(1, 4):
reply = ask(messages)
r = sb.run(extract_code(reply), timeout=55)
print(f"attempt {attempt}: exit code {r.exit_code}")
if r.ok:
print(r.stdout.strip())
break
messages += [
{"role": "assistant", "content": reply},
{"role": "user", "content": f"The script failed with exit code {r.exit_code}.\n"
f"stderr:\n{r.stderr[-3000:]}\nFix it. Reply with a single code block."},
]
اجرایش کنید:
python3 agent.py
یک اجرای معمول attempt 1: exit code 0 و سپس 78498 را چاپ میکند. اگر اسکریپت اول شکست بخورد، تلاش دوم را با خطای برطرفشده میبینید.
هر بخش چه میکند:
Sandbox.create(..., idle_timeout=120)در حدود یک ثانیه یک microVM بالا میآورد. اگر اسکریپت شما وسط کار بمیرد، سندباکس به هر حال بعد از ۲ دقیقه بیکاری خودش را حذف میکند.sb.run(code, timeout=55)کد را اجرا میکند و کد خروج، stdout و stderr را برمیگرداند. از کار افتادن کد یک نتیجهٔ عادی است نه استثنا، پس حلقه میتواند آن را به مدل نشان دهد.r.stderr[-3000:]فقط انتهای خطا را میفرستد. traceback کامل یک اسکریپت بزرگ میتواند بخش زیادی از بافت مدل را هدر دهد.- سه تلاش یک محدودیت عمدی است. مدلی که در سه بار اسکریپت را درست نکرده، معمولاً به توصیف بهتری از کار نیاز دارد، نه به تلاش چهارم.
۴. وقتی کار بیش از ۵۵ ثانیه لازم دارد
یک فراخوانی همزمان حداکثر ۵۵ ثانیه طول میکشد. کار طولانیتر را در پسزمینه شروع کنید و منتظر بمانید:
task = sb.run(code, background=True)
result = task.wait(timeout=1800)
حتی اگر wait شما به مهلتش برسد، کار ادامه پیدا میکند و میتوانید با sb.task(task_id) دوباره سراغش بروید.
۵. همین کار از طریق MCP، بدون کد
اگر از یک کلاینت MCP مثل Claude Desktop یا Cursor با سرور MCP EQVPS استفاده میکنید، عامل از قبل ابزارهای سندباکس را دارد: create_sandbox، run_code، exec_command، upload_file، download_file و kill_sandbox. یک پرامپت کافی است:
یک سندباکس موقت کوچک بساز. یک اسکریپت پایتون بنویس که اعداد اول کمتر از 1,000,000 را بشمارد، آنجا اجرایش کن، اگر شکست خورد اصلاحش کن، نتیجه را به من بگو و سندباکس را حذف کن.
عامل همان فراخوانیهایی را انجام میدهد که اسکریپت بالا. اینکه کدام ابزارها را میتوان بدون تأیید مجاز کرد، در محافظهای MCP آمده است.
چقدر هزینه شد
سندباکس خیلی کمتر از یک دقیقه زنده بود و با حداقل ۶۰ ثانیه حساب شد: 0.00055 دلار روی small. فراخوانی مدل گرانتر از سندباکس است. اعتبار آزمایشی ۱ دلاری حساب تازه برای حدود ۱٬۸۰۰ اجرای اینچنینی کافی است.
قدم بعدی
- SDK گام به گام: SDK پایتون برای سندباکس در ۵ دقیقه یا تایپاسکریپت.
- همهٔ متدها و خطاها: مرجع SDK.
- تعرفهها و اعتبار آزمایشی: صفحهٔ سندباکسها.
نظرات
هنوز نظری نیست. اولین نفر باشید.