−25%

kwa Windows ya mwaka, hadi 31 Okt. Tazama mipango

EQVPS
Anza

Kazi yako ya kwanza ya wakala ndani ya sandbox: LLM inaandika msimbo, microVM inauendesha

Jenga kitanzi kidogo kabisa chenye manufaa cha kuendesha msimbo kwa AI: modeli inaandika skripti ya Python, sandbox ya Firecracker inaiendesha, na hitilafu zinarudi kwa modeli hadi skripti ifanye kazi. Takriban mistari 40, pamoja na kazi ile ile kupitia MCP bila msimbo kabisa.

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

Maswali

Kwa nini nisiendeshe tu msimbo wa modeli kwenye mashine yangu mwenyewe?

Kwa sababu hujui utafanya nini. Msimbo uliozalishwa unaweza kufuta faili, kusoma funguo zako au kuzunguka bila mwisho. Ndani ya sandbox unaendeshwa kwenye microVM tofauti yenye kernel yake, na sandbox inafutwa baadaye.

Je, hii inafanya kazi na modeli nyingine zaidi ya ile ya mfano?

Ndiyo. Kitanzi kinahitaji tu kitendaji kinachopokea ujumbe na kurudisha maandishi. Badilisha kitendaji cha ask() kwa API yoyote ya mazungumzo, pamoja na modeli ya ndani.

Ni nini kinachozuia wakala kuunda sandbox bila mwisho?

Weka kikomo cha matumizi cha kila siku na kila mwezi kabla ya kuanza. Kikomo kikifikiwa, sandbox mpya zinakataliwa kwa 429 budget_exceeded. Pia, kwenye akaunti moja zinaendeshwa amri mbili tu kwa wakati mmoja, kwa hiyo kitanzi kilichoshindwa kudhibitiwa hakiwezi kuzaliana.

Je, msimbo uliozalishwa unaweza kufikia intaneti?

Ndiyo, sandbox zina intaneti ya kutoka nje ili msimbo usakinishe vifurushi na kuleta data. Hazina milango ya kuingia. Usiweke siri kwenye maelekezo au msimbo; zile ambazo skripti inahitaji kweli zipitishe kama vigezo vya mazingira.

Maoni

Bado hakuna maoni. Kuwa wa kwanza.

Acha maoni

Maoni yanakaguliwa kabla ya kuonekana.