Zurück zur Startseite

Wie Benchling Agenten entwickelt, wenn die klügste KI nicht klug genug ist

Ein klarer und praxisorientierter Artikel über künstliche Intelligenz für ein Fachpublikum.

Vorlesen ist in diesem Browser nicht verfügbar
Wie Benchling Agenten entwickelt, wenn die klügste KI nicht klug genug ist

Tags

Kurze Zusammenfassung

Ein klarer und praxisorientierter Artikel über künstliche Intelligenz für ein Fachpublikum.

Wie Benchling Agents entwickelt, wenn die klügste KI nicht klug genug ist

Selbst die leistungsfähigsten Large Language Models von OpenAI und Anthropic stoßen an ihre Grenzen, wenn man sie allein in komplexen, regulierten Domänen arbeiten lässt. Benchling, eine Plattform für Life-Sciences-Forschung und -Entwicklung, verdeutlicht, warum agentische Systeme – nicht monolithische Modelle – der Weg zu produktionsreifer KI sind. In der Biotechnologie ist eine selbstbewusste Halluzination über eine Proteinsequenz oder ein undokumentiertes Assay-Protokoll nicht bloß ein peinlicher Fehler; sie ist ein Haftungsrisiko, das Monate Laborarbeit zunichtemachen kann. Die klügste KI auf dem Markt verfügt weder über Echtzeitzugriff auf proprietäre Experimentdaten, noch über die Fähigkeit, domänenspezifische Berechnungen aufzurufen, noch über die Urteilsfähigkeit zu wissen, wann sie an ihre Grenzen stößt.

Dieser Artikel beleuchtet die praktischen Engineering-Patterns, die die Lücke zwischen Frontier-Modell-Intelligenz und realer Zuverlässigkeit schließen. Aufbauend auf breiteren Trends in der Agent-Orchestrierung und Enterprise-KI, wie sie im LangChain Blog, OpenAI News, Microsoft AI Blog und Anthropic News diskutiert werden, zeigen wir Schritt für Schritt, wie man in Python einen verteidigungsfähigen, toolnutzenden Agenten konstruiert. Sie verlassen diesen Artikel mit einem funktionierenden Prototypen, der an externe Tools delegiert, seine Ausgaben gegen strukturierte Schemata validiert und bei zu hoher Unsicherheit an menschliche Aufsicht eskaliert.

Warum die klügste KI immer noch Hilfe braucht

Frontier-Modelle brillieren in Reasoning, Übersetzung und Synthese, bleiben aber zustandslose Textprädiktoren. Wenn ein Wissenschaftler nach der optimalen Pufferkonzentration für ein CRISPR-Experiment fragt, kann ein Modell eine plausibel klingende Antwort generieren, die den Standardarbeitsanweisungen der Organisation widerspricht. Ohne Zugriff auf maßgebliche Quellen halluzinieren selbst die besten Systeme.

Das Problem verschärft sich in strukturierten Domänen. Life-Sciences-Daten sind hochgradig relational: Proben verweisen auf Platten, Platten auf Assays und Assays auf regulatorische Einreichungen. Ein eigenständiges LLM kann diese Beziehungen nicht zuverlässig abfragen, weil es keinen nativen Datenbankconnector hat, kein Verständnis für die internen Identifikatoren einer Organisation und keine Fähigkeit zur Ausführung deterministischen Codes. Darüber hinaus ist das Reasoning über numerische Präzision – etwa die Berechnung von Molarität oder die Umrechnung von Einheiten – besser durch Code als durch neuronale Textgenerierung zu bewältigen.

Deshalb behandeln moderne Agent-Architekturen das LLM nicht als Orakel. Stattdessen betrachten sie es als Reasoning-Router, der entscheidet, welches Tool aufgerufen wird, wie der Aufruf zu parametrisieren ist und wie die Ergebnisse zu synthetisieren sind. Wenn das Modell unsicher ist, hält das System an und bittet um Klärung, statt zu raten. Dieses Pattern der erweiterten Kognition – Modell plus Tools plus Guardrails – ist zentral dafür, wie Unternehmen KI verantwortungsvoll einsetzen.

Architektur-Patterns für Enterprise-Agents

Agents, die Produktionslast überstehen, erfordern mehr als das Einwickeln einer Chat-API in eine Schleife. Robuste Systeme trennen die Belange in diskrete Schichten.

**Tool-Delegation.** Der Agent erhält ein Toolkit deterministischer Funktionen: eine Datenbank abfragen, eine Python-Sandbox ausführen, eine interne REST-API aufrufen oder einen Vektor-Store durchsuchen. Die Aufgabe des LLM besteht darin, das richtige Tool auszuwählen und Parameter zu extrahieren, nicht die Berechnung selbst durchzuführen.

**Retrieval-Augmented Context.** Proprietäres Wissen liegt in Dokumentenspeichern, Notebooks und Legacy-Datenbanken. Retrieval-Schichten injizieren das minimal notwendige Kontextwissen in den Prompt, reduzieren Halluzinationen und halten Token-Kosten im Rahmen.

**Strukturierte Output-Validierung.** Jede Antwort, die Downstream-Systeme beeinflusst, sollte einem Schema entsprechen. Pydantic-Modelle oder JSON-Schemata erzwingen Typsicherheit und fangen fehlerhafte Generierungen ab, bevor sie eine Datenbank erreichen.

**Human-in-the-Loop-Eskalation.** Bei niedrigem Konfidenzniveau, bei Validierungsfehlern eines Tools oder bei Anfragen außerhalb definierter Richtlinien muss der Agent die Entscheidung an einen Menschen weiterleiten. Das ist kein Bug; es ist ein Design-Feature für Hochrisikoumgebungen.

**Multi-Agent-Dekomposition.** Komplexe Workflows können in kleinere, spezialisierte Agents aufgeteilt werden – einen für Suche, einen für Berechnung, einen für Zusammenfassung –, die von einem Supervisor koordiniert werden. Das begrenzt den Fehlerblast-Radius und ermöglicht modulares Testen.

Diese Patterns decken sich mit den breiteren Enterprise-KI-Strategien, die in der Branche betont werden, wo der Fokus von roher Modellskalierung hin zu Orchestrierung, Sicherheit und Integration verschoben wurde.

Anforderungen

Bevor Sie etwas installieren, stellen Sie sicher, dass Ihre Umgebung die folgende Grundlage erfüllt.

  • **Betriebssystem:** Linux, macOS oder Windows mit WSL2.
  • **Python:** Version 3.10 oder neuer.
  • **API-Zugang:** Gültige API-Schlüssel für mindestens einen LLM-Provider. Wir konfigurieren OpenAI und Anthropic in den Beispielen, Sie können aber auch nur einen verwenden.
  • **Netzwerk:** Ausgehender HTTPS-Zugriff auf Provider-APIs.
  • **Hardware:** Keine GPU für Inferenz erforderlich; ein Standard-Laptop oder Cloud-VM genügt.

Sie benötigen außerdem ein Arbeitsverzeichnis für das Projekt.

Erstellen Sie einen dedizierten Ordner für das Projekt und wechseln Sie hinein.

mkdir benchling-agent-demo && cd benchling-agent-demo

Schritt-für-Schritt-Installation

Beginnen Sie mit der Erstellung einer isolierten Python-Virtual-Environment, um Abhängigkeitskonflikte mit Systempaketen zu vermeiden.

python3 -m venv venv

Aktivieren Sie die virtuelle Umgebung. Unter macOS oder Linux verwenden Sie folgenden Befehl.

source venv/bin/activate

Unter Windows aktivieren Sie die Umgebung stattdessen mit diesem Befehl.

venv\Scripts\activate

Aktualisieren Sie `pip`, um Kompatibilität mit aktuellen Paketdistributionen sicherzustellen.

pip install --upgrade pip

Installieren Sie die Kern-Orchestrierungs-Bibliotheken. Wir verwenden LangChain für das Agent-Scaffolding, LangChain-OpenAI- und Anthropic-Integrationen für den Modellzugriff sowie Pydantic für strukturierte Validierung.

pip install langchain langchain-openai langchain-anthropic pydantic python-dotenv

Installieren Sie eine leichtgewichtige lokale Datenbank und einen HTTP-Client, um reale Tool-Integrationen zu simulieren.

pip install sqlite3 requests

Erstellen Sie eine Environment-Datei, um Ihre API-Schlüssel sicher außerhalb der Versionskontrolle zu speichern.

touch .env

Öffnen Sie `.env` in Ihrem Editor und fügen Sie Ihre Provider-Schlüssel hinzu. Ersetzen Sie die Platzhalter durch echte Werte.

OPENAI_API_KEY=sk-your-openai-key-here
ANTHROPIC_API_KEY=sk-ant-your-anthropic-key-here

In einer Produktionsbereitstellung sollten Sie diese Variablen zur Laufzeit laden, statt sie fest zu kodieren. Erstellen Sie einen kleinen Konfigurations-Loader in Python namens `config.py`, der die Schlüssel über `python-dotenv` bereitstellt.

import os
from dotenv import load_dotenv

load_dotenv()

OPENAI_API_KEY = os.getenv("OPENAI_API_KEY")
ANTHROPIC_API_KEY = os.getenv("ANTHROPIC_API_KEY")

Um zu verifizieren, dass Ihre Umgebung korrekt verdrahtet ist, führen Sie einen schnellen Import-Test durch.

python -c "import langchain, pydantic, openai; print('All packages imported successfully')"

Wenn der Befehl die Erfolgsmeldung ohne Fehler ausgibt, ist Ihre Installation abgeschlossen.

Nutzungsbeispiele

Wir bauen nun einen wissenschaftlichen Forschungsassistenten, der die Constraints einer Life-Sciences-Plattform nachahmt. Der Agent kann eine interne Protokolldatenbank abfragen, Molekulargewichte berechnen und validieren, dass seine finale Antwort nur bekannte Substanzen zitiert. Bei Validierungsfehlern hält er an.

Zunächst initialisieren wir eine lokale SQLite-Datenbank mit einer Tabelle von Assay-Protokollen. Das simuliert die strukturierten Daten, die Benchling und ähnliche Plattformen verwalten.

import sqlite3

conn = sqlite3.connect("lab_data.db")
cursor = conn.cursor()
cursor.execute("""
CREATE TABLE IF NOT EXISTS protocols (
    id INTEGER PRIMARY KEY,
    name TEXT,
    reagent TEXT,
    concentration_molar REAL
)
""")
cursor.execute("INSERT OR IGNORE INTO protocols VALUES (1, 'CRISPR Buffer A', 'Tris-HCl', 0.05)")
cursor.execute("INSERT OR IGNORE INTO protocols VALUES (2, 'Lysis Buffer X', 'SDS', 0.1)")
conn.commit()
conn.close()

Als Nächstes definieren wir die Tools, die der Agent nutzen wird. Jedes Tool ist eine Python-Funktion mit einem klaren Docstring, denn das LLM verlässt sich auf Docstrings, um zu verstehen, wann das Tool aufzurufen ist.

from langchain.tools import tool
import sqlite3

@tool
def search_protocols(query: str) -> str:
    """Search the internal protocol database by reagent name or protocol name.
    Returns matching rows as formatted text."""
    conn = sqlite3.connect("lab_data.db")
    cursor = conn.cursor()
    cursor.execute(
        "SELECT name, reagent, concentration_molar FROM protocols WHERE name LIKE ? OR reagent LIKE ?",
        (f"%{query}%", f"%{query}%")
    )
    rows = cursor.fetchall()
    conn.close()
    if not rows:
        return "No matching protocols found."
    return "\n".join([f"Protocol: {r[0]}, Reagent: {r[1]}, Concentration: {r[2]} M" for r in rows])

@tool
def calculate_molarity(mass_g: float, molecular_weight_g_per_mol: float, volume_l: float) -> str:
    """Calculate molarity given mass in grams, molecular weight in g/mol, and volume in liters."""
    if volume_l == 0:
        return "Error: volume cannot be zero."
    molarity = mass_g / molecular_weight_g_per_mol / volume_l
    return f"{molarity:.4f} M"

Fügen wir nun eine Validierungs-Sicherung hinzu. Diese Funktion prüft, ob alle in der finalen Antwort erwähnten Substanzen in unserer vertrauenswürdigen Datenbank existieren. Taucht eine unbekannte Substanz auf, muss der Agent eskalieren, statt die Antwort zurückzugeben.

@tool
def validate_substances(answer: str) -> str:
    """Check whether all chemical substances in the answer are present in the trusted database.
    Returns 'PASS' if all are known, otherwise returns 'FAIL: <unknown substances>'."""
    conn = sqlite3.connect("lab_data.db")
    cursor = conn.cursor()
    cursor.execute("SELECT DISTINCT reagent FROM protocols")
    known = {row[0].lower() for row in cursor.fetchall()}
    conn.close()
    
    # Simple token heuristic; production systems should use a Named Entity Recognition model
    tokens = answer.lower().split()
    unknown = [t for t in tokens if t.isalpha() and t not in known and len(t) > 2]
    if unknown:
        return f"FAIL: {', '.join(set(unknown))}"
    return "PASS"

Mit den definierten Tools setzen wir den Agenten zusammen. Wir verwenden LangChain, um die Tools an ein OpenAI-Modell mit Function-Calling-Fähigkeit zu binden. Wenn Sie Anthropic bevorzugen, ersetzen Sie durch `ChatAnthropic` und den entsprechenden Modellnamen.

from langchain_openai import ChatOpenAI
from langchain import hub
from langchain.agents import create_openai_tools_agent, AgentExecutor

# Load configuration
from config import OPENAI_API_KEY

llm = ChatOpenAI(model="gpt-4o", temperature=0, api_key=OPENAI_API_KEY)

# Pull a standard prompt template from the LangChain hub
prompt = hub.pull("hwchase17/openai-tools-agent")

tools = [search_protocols, calculate_molarity, validate_substances]

agent = create_openai_tools_agent(llm, tools, prompt)
agent_executor = AgentExecutor(agent=agent, tools=tools, verbose=True, handle_parsing_errors=True)

Führen Sie den Agenten mit einer

Quellen

FAQ

Worum geht es in diesem Artikel?

Dieser Artikel behandelt „Wie Benchling Agenten entwickelt, wenn die klügste KI nicht klug genug ist“ in der Kategorie KI-Agenten. Ein klarer und praxisorientierter Artikel über künstliche Intelligenz für ein Fachpublikum.

Für wen ist dieser Artikel nützlich?

Er ist nützlich für Leserinnen und Leser, die KI-Tools und KI-Anwendungen praktisch verstehen möchten.

Was ist der nächste Schritt?

Lesen Sie den Artikel, prüfen Sie die angegebenen Quellen und testen Sie passende Ideen in Ihrem Kontext.