Wakala anayeandika msimbo ana manufaa tu ikiwa kitu kinaendesha msimbo huo kwa usalama na kuripoti matokeo. Mwongozo huu unajenga kitanzi hicho kutoka mwanzo hadi mwisho: modeli inaandika skripti ya Python, sandbox inaiendesha, na ikishindwa, hitilafu inarudi kwa modeli. Kisha kazi ile ile bila kuandika msimbo, kupitia MCP.
Unahitaji Python 3.8+, tokeni ya akaunti ya EQVPS (tazama kuunganisha akaunti) na ufunguo wa API wa modeli.
1. Weka kikomo cha matumizi kwanza
Wakala anaunda sandbox mwenyewe, kwa hiyo mpe kiwango cha juu kabla hajaanza. Dola mbili kwa siku na ishirini kwa mwezi zinatosha kabisa kwa majaribio:
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}'
Kikomo kikifikiwa, sandbox mpya zinapata 429 budget_exceeded na sandbox za muda zinazoendelea zinafutwa. Maelezo yako kwenye vikomo na malipo ya sandbox.
2. Sakinisha maktaba mbili
pip install eqvps anthropic
export EQVPS_API_KEY="your-eqvps-token"
export ANTHROPIC_API_KEY="your-model-key"
Mfano unatumia mtoa huduma mmoja wa modeli, lakini hakuna kinachomtegemea. Kitendaji cha ask() pekee ndicho kinazungumza na modeli.
3. Kitanzi cha andika, endesha, rekebisha
Hifadhi hii kama 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."},
]
Iendeshe:
python3 agent.py
Uendeshaji wa kawaida unachapisha attempt 1: exit code 0 kisha 78498. Skripti ya kwanza ikishindwa, utaona jaribio la pili lenye hitilafu iliyorekebishwa.
Kila sehemu inafanya nini:
Sandbox.create(..., idle_timeout=120)inawasha microVM kwa takriban sekunde moja. Skripti yako ikifa katikati, sandbox bado inajifuta yenyewe baada ya dakika 2 bila shughuli.sb.run(code, timeout=55)inaendesha msimbo na kurudisha msimbo wa kutoka, stdout na stderr. Msimbo kuanguka ni matokeo ya kawaida, si exception, kwa hiyo kitanzi kinaweza kuuonyesha kwa modeli.r.stderr[-3000:]inatuma mwisho wa hitilafu tu. Traceback kamili ya skripti kubwa inaweza kupoteza sehemu kubwa ya muktadha wa modeli.- Majaribio matatu ni kikomo cha makusudi. Modeli ambayo haijarekebisha skripti kwa majaribio matatu kwa kawaida inahitaji maelezo bora ya kazi, si jaribio la nne.
4. Kazi ikihitaji zaidi ya sekunde 55
Wito wa kisawazishi unaweza kudumu hadi sekunde 55 tu. Kwa kazi ndefu zaidi, ianzishe chinichini kisha usubiri:
task = sb.run(code, background=True)
result = task.wait(timeout=1800)
Kazi inaendelea hata wait yako ikifikia muda wake wa mwisho, na unaweza kuirudia kwa sb.task(task_id).
5. Kazi ile ile kupitia MCP, bila msimbo
Ikiwa unatumia mteja wa MCP kama Claude Desktop au Cursor pamoja na seva ya MCP ya EQVPS, wakala tayari ana zana za sandbox: create_sandbox, run_code, exec_command, upload_file, download_file na kill_sandbox. Maelekezo moja yanatosha:
Unda sandbox ndogo ya muda. Andika skripti ya Python inayohesabu namba tasa chini ya 1,000,000, iendeshe humo, irekebishe ikishindwa, niambie matokeo kisha ufute sandbox.
Wakala anafanya wito ule ule kama skripti hapo juu. Zana zipi ni salama kuruhusu bila uthibitisho kumeelezwa kwenye kinga za MCP.
Gharama yake
Sandbox iliishi chini sana ya dakika moja na ilitozwa kima cha chini cha sekunde 60: $0.00055 kwenye small. Wito wa modeli unagharimu zaidi kuliko sandbox. Mkopo wa majaribio wa $1 wa akaunti mpya unatosha uendeshaji kama huu takriban 1,800.
Wapi pa kwenda baadaye
- SDK hatua kwa hatua: SDK ya Python kwa sandbox kwa dakika 5 au TypeScript.
- Mbinu zote na hitilafu: marejeo ya SDK.
- Vifurushi na mkopo wa majaribio: ukurasa wa sandbox.
Maoni
Bado hakuna maoni. Kuwa wa kwanza.