Ένας agent που γράφει κώδικα είναι χρήσιμος μόνο αν κάτι εκτελεί αυτόν τον κώδικα με ασφάλεια και αναφέρει το αποτέλεσμα. Αυτός ο οδηγός χτίζει αυτόν τον βρόχο από την αρχή ως το τέλος: ένα μοντέλο γράφει script Python, ένα sandbox το τρέχει, και αν αποτύχει, το σφάλμα γυρίζει στο μοντέλο. Μετά η ίδια εργασία χωρίς ούτε μία γραμμή κώδικα, μέσω MCP.
Χρειάζεστε Python 3.8+, token λογαριασμού EQVPS (δείτε σύνδεση λογαριασμού) και κλειδί API για ένα μοντέλο.
1. Ορίστε πρώτα όριο δαπανών
Ένας agent δημιουργεί sandboxes μόνος του, οπότε δώστε του ένα ταβάνι πριν ξεκινήσει. Δύο δολάρια την ημέρα και είκοσι τον μήνα αρκούν και περισσεύουν για πειράματα:
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}'
Όταν συμπληρωθεί ένα όριο, τα νέα sandboxes παίρνουν 429 budget_exceeded και τα προσωρινά που τρέχουν διαγράφονται. Λεπτομέρειες στα όρια και χρέωση sandboxes.
2. Εγκαταστήστε τις δύο βιβλιοθήκες
pip install eqvps anthropic
export EQVPS_API_KEY="your-eqvps-token"
export ANTHROPIC_API_KEY="your-model-key"
Το παράδειγμα χρησιμοποιεί έναν πάροχο μοντέλων, αλλά τίποτα δεν εξαρτάται από αυτόν. Μόνο η συνάρτηση ask() μιλά με το μοντέλο.
3. Ο βρόχος γράψε, τρέξε, διόρθωσε
Αποθηκεύστε αυτό ως 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. Αν το πρώτο script αποτύχει, θα δείτε τη δεύτερη προσπάθεια με το σφάλμα διορθωμένο.
Τι κάνει κάθε κομμάτι:
Sandbox.create(..., idle_timeout=120)ξεκινά ένα microVM σε περίπου ένα δευτερόλεπτο. Αν το script σας πεθάνει στη μέση, το sandbox θα διαγραφεί μόνο του έτσι κι αλλιώς μετά από 2 λεπτά αδράνειας.sb.run(code, timeout=55)εκτελεί τον κώδικα και επιστρέφει κωδικό εξόδου, stdout και stderr. Ένα κρασάρισμα του κώδικα είναι κανονικό αποτέλεσμα, όχι exception, οπότε ο βρόχος μπορεί να το δείξει στο μοντέλο.r.stderr[-3000:]στέλνει μόνο το τέλος του σφάλματος. Ένα πλήρες traceback από μεγάλο script μπορεί να σπαταλήσει πολύ από το context του μοντέλου.- Τρεις προσπάθειες είναι σκόπιμο όριο. Ένα μοντέλο που δεν διόρθωσε ένα script σε τρεις προσπάθειες συνήθως χρειάζεται καλύτερη περιγραφή της εργασίας, όχι τέταρτη προσπάθεια.
4. Όταν η εργασία χρειάζεται πάνω από 55 δευτερόλεπτα
Μια σύγχρονη κλήση διαρκεί το πολύ 55 δευτερόλεπτα. Για μεγαλύτερη δουλειά, ξεκινήστε την στο παρασκήνιο και περιμένετε:
task = sb.run(code, background=True)
result = task.wait(timeout=1800)
Η εργασία συνεχίζει ακόμη κι αν το wait σας φτάσει το χρονικό του όριο, και μπορείτε να την ξαναπιάσετε με sb.task(task_id).
5. Η ίδια εργασία μέσω MCP, χωρίς κώδικα
Αν χρησιμοποιείτε πελάτη MCP όπως το Claude Desktop ή το Cursor με τον server MCP της EQVPS, ο agent έχει ήδη τα εργαλεία sandbox: create_sandbox, run_code, exec_command, upload_file, download_file και kill_sandbox. Αρκεί ένα prompt:
Δημιούργησε ένα μικρό προσωρινό sandbox. Γράψε ένα script Python που μετρά τους πρώτους αριθμούς κάτω από 1.000.000, τρέξ' το εκεί, διόρθωσέ το αν αποτύχει, πες μου το αποτέλεσμα και διάγραψε το sandbox.
Ο agent κάνει τις ίδιες κλήσεις με το script παραπάνω. Ποια εργαλεία μπορείτε να επιτρέψετε χωρίς επιβεβαίωση εξηγείται στις προστασίες MCP.
Πόσο κόστισε
Το sandbox έζησε πολύ λιγότερο από ένα λεπτό και χρεώθηκε το ελάχιστο των 60 δευτερολέπτων: 0,00055 $ στο small. Η κλήση του μοντέλου κοστίζει περισσότερο από το sandbox. Η δοκιμαστική πίστωση 1 $ ενός νέου λογαριασμού καλύπτει περίπου 1.800 τέτοιες εκτελέσεις.
Πού να πάτε μετά
- Το SDK βήμα βήμα: Python SDK για sandboxes σε 5 λεπτά ή TypeScript.
- Κάθε μέθοδος και σφάλμα: αναφορά του SDK.
- Πακέτα και δοκιμαστική πίστωση: η σελίδα των sandboxes.
Σχόλια
Δεν υπάρχουν ακόμη σχόλια. Γίνετε ο πρώτος.