- Veröffentlicht am

In diesem Beitrag untersuchen wir, wie man E2B-Sandboxes einrichtet und DeepSeek AI nutzt, um Python-basierte AI-Workflows auszuführen. Durch die Integration von LLM-gesteuerter Code-Generierung mit den vielseitigen Sandboxes von E2B können Entwickler komplexe Aufgaben wie Datenverarbeitung und Visualisierung effizienter gestalten. Die folgenden Beispiele zeigen Schritt-für-Schritt-Workflows, einschließlich AI-gesteuerter Python-Skripterstellung und der Generierung von Erkenntnissen durch Diagramme.
Was ist E2B?
E2B ist eine Open-Source-Infrastruktur, die es Entwicklern ermöglicht, AI-generierten Code in sicheren, isolierten Sandboxes auszuführen, die in der Cloud gehostet werden. Diese Sandboxes sind leichtgewichtige virtuelle Maschinen (VMs), die in nur ~150 ms gestartet werden können, was sie ideal für Echtzeitanwendungen macht. Egal, ob Sie AI-Datenanalysetools, Coding-Playgrounds oder vollwertige AI-Anwendungen erstellen, E2B bietet die Grundlage, um Ihre Projekte skalierbar, sicher und effizient zu gestalten.
Weitere Details finden Sie in meinem Blogbeitrag Building AI-Powered Applications with E2B Sandboxes.
Einrichten von E2B-Sandboxes
E2B-Sandboxes bieten isolierte, skalierbare Umgebungen, die perfekt für die Ausführung von AI-Anwendungen geeignet sind. Folgen Sie diesen Schritten, um loszulegen:
- Registrieren Sie sich für E2B: Erstellen Sie ein Konto auf der E2B-Plattform.
- API-Schlüssel einrichten:
- Generieren Sie einen API-Schlüssel für E2B und setzen Sie ihn als Umgebungsvariable:
export E2B_API_KEY=your_key
- Generieren Sie einen API-Schlüssel von DeepSeek AI und setzen Sie ihn als Umgebungsvariable:
export DEEPSEEK_API_KEY=your_key
- Optional: Wenn Sie Mistral als API verwenden möchten, müssen Sie stattdessen diese Umgebungsvariable setzen:
export MISTRAL_API_KEY=your_key
Sobald Ihre Sandbox bereit ist, können Sie mit der Ausführung von Workflows und der Interaktion mit DeepSeek AI fortfahren.
Ausführen von AI-gesteuerten Workflows
Dieser Abschnitt zeigt, wie man AI-gesteuerte Workflows in der E2B-Sandbox-Umgebung ausführt. Das Python-Skript e2b_llm_integration.py integriert AI-Modelle wie DeepSeek und Mistral, um Python-Code zu generieren und auszuführen. Im Folgenden erläutern wir die Funktionalität des Skripts und wie es E2B-Sandboxes für die sichere, isolierte Ausführung nutzt.
Überblick über das Python-Skript
Das Python-Skript, e2b_llm_integration.py, dient als umfassendes Tool zur Generierung und Ausführung von Python-Code mithilfe von AI-Modellen wie Mistral und DeepSeek. Es ermöglicht die Interaktion mit diesen Modellen, indem es Benutzeranfragen akzeptiert, generierten Python-Code abruft und ihn in einer E2B-Sandbox-Umgebung ausführt. Zu den Hauptmerkmalen gehören:
- Unterstützung für sowohl Mistral- als auch DeepSeek-APIs mit flexibler API-Auswahl.
- Extraktion von Python-Codeblöcken mithilfe von Regex für eine saubere Ausführung.
- Unterstützung von Befehlszeilenargumenten zur Angabe von Anfragen, API-Optionen, Ausgabedateipfaden und Eingabedateien.
- Dateiverwaltung: Das Skript erwartet, dass der generierte Python-Code eine Datei (z. B. ein Diagramm) in der Sandbox-Umgebung erstellt. Nach der Ausführung ruft das Skript diese Datei aus der Sandbox ab und speichert sie im angegebenen lokalen Verzeichnis. Dadurch wird sichergestellt, dass die Ausgabe (z. B. Visualisierungen) außerhalb der Sandbox zugänglich ist.
Befehlszeilenargumente
Das Skript unterstützt die folgenden Befehlszeilenargumente:
prompt: Die vom Benutzer bereitgestellte Anfrage für das AI-Modell.--file: Optional; Pfad zu einer Textdatei, die die Anfrage enthält.--api: Optional; Gibt die zu verwendende API an (mistraloderdeepseek). Standard istdeepseek.--output: Optional; Lokaler Pfad, um die generierte Datei zu speichern. Standard istplot.jpg.
"""
Script Name: e2b_llm_integration.py
Description:
This script facilitates the generation and execution of Python code using AI models such as Mistral and DeepSeek. It accepts a user-provided prompt, sends it to the specified model (default is DeepSeek), retrieves the generated code, and executes it within a sandboxed environment provided by E2B. The script supports both Mistral and DeepSeek APIs, allowing for flexible API selection, output file path specification, and input prompt sourcing from either direct input or a text file.
Key Features:
- Extracts Python code blocks from the model's response using regex.
- Executes the generated code in a secure, sandboxed environment using E2B.
- Supports command-line arguments for user prompts, API selection, output file paths, and input prompt files.
Usage:
- Default API (DeepSeek):
python e2b_llm_integration.py "<your prompt>"
- Specify API:
python e2b_llm_integration.py "<your prompt>" --api <mistral|deepseek>
- Specify output file path:
python e2b_llm_integration.py "<your prompt>" --output <path/to/output/file>
- Use a prompt from a text file:
python e2b_llm_integration.py --file <path/to/prompt_file.txt>
Dependencies:
- Python 3.6+
- mistralai: Python client for the Mistral API.
- e2b-code-interpreter: Python client for the E2B Sandbox API.
- openai: Python client for the OpenAI API, used for DeepSeek.
Environment Variables:
- MISTRAL_API_KEY: API key for accessing the Mistral API.
- DEEPSEEK_API_KEY: API key for accessing the DeepSeek API.
- E2B_API_KEY: API key for accessing the E2B Sandbox API.
Arguments:
- prompt (str): User prompt for the AI model.
- --file (str): Optional; Path to a text file containing the prompt.
- --api (str): Optional; Specify the API to use ('mistral' or 'deepseek'). Default is 'deepseek'.
- --output (str): Optional; Local path to save the generated file. Default is 'plot.jpg'.
Version: 1.0.0
"""
import os
import sys
import re
import logging
import argparse
from typing import Optional
from mistralai import Mistral
from e2b_code_interpreter import Sandbox
from openai import OpenAI
logging.basicConfig(level=logging.INFO, format="%(asctime)s - %(levelname)s - %(message)s")
class CodeGenerator:
"""
A class to handle the generation of Python code using specified AI models.
Attributes:
api_option (str): The API to use for code generation ('mistral' or 'deepseek').
prompt (str): The user-provided prompt for code generation.
api_key (str): The API key for accessing the specified API.
"""
def __init__(self, api_option: str, prompt: str):
"""
Initializes the CodeGenerator with the specified API option and prompt.
Args:
api_option (str): The API to use for code generation ('mistral' or 'deepseek').
prompt (str): The user-provided prompt for code generation.
"""
self.api_option = api_option
self.prompt = prompt
self.api_key = os.environ.get("MISTRAL_API_KEY" if api_option == "mistral" else "DEEPSEEK_API_KEY")
if not self.api_key:
print(f"Error: The environment variable {'MISTRAL_API_KEY' if api_option == 'mistral' else 'DEEPSEEK_API_KEY'} is not set.")
sys.exit(1)
def get_client(self):
"""
Returns a client instance for the specified API.
Returns:
An instance of the client for the specified API.
"""
if self.api_option == "mistral":
return Mistral(api_key=self.api_key)
elif self.api_option == "deepseek":
return OpenAI(api_key=self.api_key, base_url="https://api.deepseek.com")
def generate_code(self):
"""
Generates Python code based on the user-provided prompt using the specified API.
Returns:
str: The generated Python code.
"""
client = self.get_client()
system_prompt = (
"""
You are a Python coding assistant that only outputs Python code without any explanations or comments. For all modules or packages you use in the script, do not assume the packages are installed. Include the necessary installation commands before the import statements. This is an example for the module SomeClass:
import subprocess
import sys
try:
from some_module import SomeClass
except ImportError:
subprocess.check_call([sys.executable, '-m', 'pip', 'install', 'some_module'])
from some_module import SomeClass
You will be asked to create a method and call it. The call to the method has to be with if __name__ == "__main__":
Document well the method in the header including:
- Arguments
- Purpose of the method
- Return values
Very important: write the Python code like this:
```python
code
```
"""
)
try:
if self.api_option == "mistral":
response = client.chat.complete(
model="codestral-latest",
messages=[
{"role": "system", "content": system_prompt},
{"role": "user", "content": self.prompt}
],
temperature=0.0
)
elif self.api_option == "deepseek":
response = client.chat.completions.create(
model="deepseek-chat",
messages=[
{"role": "system", "content": system_prompt},
{"role": "user", "content": self.prompt}
],
stream=False,
temperature=0.0
)
return response.choices[0].message.content.strip()
except Exception as e:
print(f"Error communicating with {self.api_option.capitalize()} API: {e}")
sys.exit(1)
def extract_code_block(content: str) -> Optional[str]:
"""
Extracts a Python code block from the given text data using regex.
Args:
content (str): The text data containing a Python code block.
Returns:
Optional[str]: The extracted Python code block, or None if not found.
"""
if not content:
logging.warning("Content is empty or None.")
return None
match = re.search(r'\`\`\`python(.*?)\`\`\`', content, re.DOTALL)
if match:
return match.group(1).strip() # Return the Python code without the backticks
logging.warning("No Python code block found in the content.")
return None
def main():
"""
Main function to parse command-line arguments, generate code, and execute it in a sandboxed environment.
"""
# Command-line argument parsing
parser = argparse.ArgumentParser(description="Generate and execute Python code using AI models.")
group = parser.add_mutually_exclusive_group(required=True)
group.add_argument("prompt", type=str, nargs="?", help="Prompt for the AI model.")
group.add_argument("--file", type=str, help="Path to a text file containing the prompt.")
parser.add_argument(
"--api", type=str, choices=["mistral", "deepseek"], default="deepseek",
help="Specify the API to use (default: deepseek)."
)
parser.add_argument(
"--output", type=str, default="plot.jpg",
help="Optional: Local path to save the file (default: plot.jpg)."
)
args = parser.parse_args()
# Check for E2B_API_KEY environment variable
if not os.environ.get("E2B_API_KEY"):
print("Error: The environment variable E2B_API_KEY is not set.")
sys.exit(1)
# Read the prompt from the provided argument or file
if args.file:
try:
with open(args.file, 'r') as file:
prompt = file.read().strip()
except Exception as e:
print(f"Error reading the prompt file: {e}")
sys.exit(1)
else:
prompt = args.prompt
api_option = args.api
local_file_path = args.output
sandbox_filename = os.path.basename(local_file_path) # Extract only the filename for the sandbox
print("Input Prompt:")
print(prompt)
print(f"Using model: {api_option.capitalize()}")
print(f"Local file path: {local_file_path}")
# Generate code
code_generator = CodeGenerator(api_option, prompt)
raw_code = code_generator.generate_code()
code = extract_code_block(raw_code)
if not code:
print("Error: Received empty code from the model.")
sys.exit(1)
print("Generated Code:")
print("----------------")
print("```python")
print(code)
print("```")
print("----------------\n")
# Execute code in E2B Sandbox
try:
with Sandbox() as sandbox:
execution = sandbox.run_code(code)
result = execution.text
logs = execution.logs
try:
# Attempt to download file from the sandbox
content = sandbox.files.read(f"/home/user/{sandbox_filename}", format="bytes")
# Write file to the specified local path
with open(local_file_path, "wb") as file:
file.write(content)
logging.info(f"File successfully downloaded and saved to {local_file_path}")
except Exception as e:
logging.error(f"Failed to download file from sandbox: {e}")
except Exception as e:
logging.error(f"Error executing code in Sandbox: {e}")
sys.exit(1)
logging.info("Execution Output:")
logging.info("Stdout Logs:")
for log in logs.stdout:
logging.info(log)
logging.info("Stderr Logs:")
for log in logs.stderr:
logging.info(log)
logging.info("Execution Result:")
logging.info(result)
if __name__ == "__main__":
main()
Wichtige Überlegungen zur Gestaltung von Anfragen für die Code-Generierung
Ein kritischer Aspekt der Anfrage, die für die Code-Generierung verwendet wird, ist die explizite Anweisung an das AI-Modell: "You are a Python coding assistant that only outputs Python code without any explanations or comments." Dies stellt sicher, dass die generierte Ausgabe sauberer, ausführbarer Code ohne überflüssigen Text ist. Darüber hinaus enthält die Anfrage die Anweisung: "For all modules or packages you use in the script, do not assume the packages are installed. Include the necessary installation commands before the import statements." Dies stellt sicher, dass der generierte Code eigenständig ist und in Umgebungen ausgeführt werden kann, in denen Abhängigkeiten möglicherweise nicht vorinstalliert sind.
Workflow-Beispiele
Im Folgenden finden Sie vier Beispiele, die zeigen, wie die Integration von E2B und DeepSeek AI für Datenverarbeitungs- und Visualisierungsaufgaben genutzt werden kann. Jeder Fall beleuchtet einen anderen Anwendungsfall, von der Analyse von Temperaturtrends bis zur Visualisierung des BIP-Wachstums.
Hinweis: Diese Beispiele wurden mit der DeepSeek-API ausgeführt, und die Ergebnisse für die Mistral-API wurden nicht getestet oder überprüft.
Fall 1: Analyse von Mindesttemperaturtrends
Anfrage: "Laden Sie die CSV-Datei von der bereitgestellten URL herunter, generieren Sie ein Zeitreihendiagramm der Mindesttemperatur in jedem Jahr, umgerechnet in Celsius, und speichern Sie es als JPEG-Datei mit dem Namen 'graph_001.jpg'. Drucken Sie die Größe der generierten Datei. Dies ist das Format der CSV-Datei: ..."
Ausführung: Das Skript hat die CSV-Daten heruntergeladen und verarbeitet, wobei die jährlichen Mindesttemperaturen berechnet wurden. Ein Zeitreihendiagramm wurde generiert, um die Temperaturtrends über die Zeit zu visualisieren, in Celsius umgerechnet und als graph_001.jpg gespeichert.

Abbildung 1: Zeitreihendiagramm, das die Trends der Mindesttemperaturen über die Zeit zeigt.
Fall 2: Visualisierung der BIP-Verteilung
Anfrage: "Laden Sie die CSV-Datei von der bereitgestellten URL herunter, lesen und verarbeiten Sie die Daten, und generieren Sie ein Tortendiagramm im JPG-Format, das die BIP-Verteilung der 10 größten Volkswirtschaften für das Jahr 2022 zeigt. Fügen Sie Ländernamen als Beschriftungen im Tortendiagramm hinzu und speichern Sie es als graph_002.jpg. Drucken Sie die Größe der gespeicherten Datei in Bytes. Dies ist das Format der CSV-Datei: ..."
Ausführung: Mit DeepSeek AI hat das Skript die CSV-Daten heruntergeladen und verarbeitet, wobei die Top-10-Volkswirtschaften nach BIP für 2022 identifiziert wurden. Ein Tortendiagramm wurde mit beschrifteten Segmenten generiert, die die BIP-Beiträge darstellen, und als graph_002.jpg gespeichert.

Abbildung 2: Tortendiagramm, das die BIP-Verteilung der Top-10-Volkswirtschaften im Jahr 2022 zeigt.
Fall 3: Analyse globaler Temperaturanomalien
Anfrage: "Laden Sie die CSV-Datei von der bereitgestellten URL herunter, generieren Sie ein Zeitreihendiagramm der jährlichen globalen Temperaturanomalien im JPG-Format und speichern Sie es in einer lokalen Datei mit dem Namen 'graph_003.jpg'. Drucken Sie die Größe der generierten Datei. Dies ist das Format der CSV-Datei: ..."
Ausführung: Das Skript hat die CSV-Daten heruntergeladen und verarbeitet, wobei die jährlichen globalen Temperaturanomalien über die Zeit visualisiert wurden. Ein Zeitreihendiagramm wurde generiert und als graph_003.jpg gespeichert.

Abbildung 3: Zeitreihendiagramm, das die jährlichen globalen Temperaturanomalien zeigt.
Fall 4: Analyse der US-BIP-Wachstumstrends
Anfrage: "Laden Sie die Datei von der bereitgestellten URL herunter. Entpacken Sie sie und verarbeiten Sie die relevante CSV-Datei, wobei Sie diejenigen ausschließen, die mit 'Metadata' beginnen. Generieren Sie ein Diagramm mit dem jährlichen prozentualen BIP-Wachstum in den Vereinigten Staaten von 2008 bis 2021, fügen Sie Ländernamen als Beschriftungen hinzu. Speichern Sie das Diagramm als 'graph_004.jpg' und überprüfen Sie seine Existenz, indem Sie die Dateigröße in Bytes drucken. Fügen Sie Trace-Logs zur Fehlerbehebung bei der Dateiverwaltung und den Datenverarbeitungsschritten hinzu. Dies ist das Format der CSV-Datei: ..."
Ausführung: Das Skript hat das Herunterladen, Entpacken und Verarbeiten der Daten bewältigt, einschließlich einer ordnungsgemäßen Fehlerbehandlung und Trace-Protokollierung. Das jährliche BIP-Wachstum für die Vereinigten Staaten wurde berechnet und in einem beschrifteten Diagramm visualisiert, das nach Überprüfung seiner Existenz und Größe als graph_004.jpg gespeichert wurde.

Abbildung 4: Liniendiagramm, das das jährliche BIP-Wachstum in den Vereinigten Staaten von 2008 bis 2021 zeigt.
Schlussfolgerungen
Die Integration von E2B-Sandboxes mit DeepSeek AI bietet eine robuste Lösung für die Ausführung von AI-gesteuerten Python-Workflows, wie die vier oben genannten Beispiele zeigen. Jedes Beispiel hat erfolgreich genaue Visualisierungen generiert, was die Effektivität dieses Ansatzes für Datenverarbeitungs- und Visualisierungsaufgaben unterstreicht. Bei der Wahl zwischen Cloud- und lokalen Sandboxes sollten jedoch folgende Punkte berücksichtigt werden:
- Kosten: Cloud-Sandboxes wie E2B sind skalierbar, können aber höhere Kosten verursachen, während lokale Sandboxes kosteneffizienter, aber weniger skalierbar sind.
- Sicherheit: Lokale Sandboxes halten Daten in kontrollierten Umgebungen, während Cloud-Sandboxes eine robuste Verschlüsselung und Zugriffsverwaltung erfordern.
- Skalierbarkeit: Cloud-Sandboxes zeichnen sich durch Skalierbarkeit und Zusammenarbeit aus, während lokale Sandboxes besser für sichere, kleinere Projekte geeignet sind.
Wählen Sie basierend auf den Anforderungen Ihres Projekts: Cloud für Skalierbarkeit und Zusammenarbeit oder lokal für Sicherheit und Kosteneffizienz. Die Berücksichtigung dieser Faktoren gewährleistet eine optimale Produktivität und Sicherheit in Ihren Workflows.
Hat Ihnen dieser Beitrag gefallen? Fanden Sie ihn hilfreich? Hinterlassen Sie gerne einen Kommentar unten, um Ihre Gedanken mitzuteilen oder Fragen zu stellen. Ein GitHub-Konto ist erforderlich, um an der Diskussion teilzunehmen.
Weiterlesen
Ähnliche Beiträge
Mar 30, 2025
0KommentareAI-Agenten mit DeepSeek und Model Context Protocol (MCP) erstellen: Eine praktische Anleitung mit OpenAIs Agentic SDK
Erfahren Sie, wie Sie kosteneffiziente AI-Agenten erstellen, indem Sie DeepSeek mit OpenAIs Agentic SDK über das Model Context Protocol (MCP) integrieren. Dieser Beitrag demonstriert die Leistungsfähigkeit offener Protokolle und alternativer LLMs anhand eines praktischen Beispielskripts.
May 4, 2025
0KommentareUmfassendes Tutorial: FastAPI-APIs mit FastAPI-MCP in intelligente Werkzeuge verwandeln
Entdecken Sie, wie FastAPI-MCP nahtlos die Lücke zwischen Ihren FastAPI-APIs und KI-Agenten schließt. Dieses umfassende Tutorial behandelt Einrichtung, Sicherheit, Bereitstellung und reale Anwendungsfälle und befähigt Sie, mühelos intelligente Anwendungen zu erstellen.
Oct 12, 2024
0KommentareParent Document Retriever in Aktion: Einrichten von RAG mit Mistral LLM und LangChain
Eine praktische Demonstration der Einrichtung eines Retrieval-Augmented Generation (RAG)-Systems unter Verwendung eines Parent Document Retrievers mit dem LangChain-Framework und Mistral LLM.