Het ontwerpen van Helium Agent

Helium Agent is een lichtgewicht AI-agent gebouwd met Python. Het draait in je terminal. Het is ontworpen voor minimale complexiteit.

Hier zijn de belangrijkste ontwerpbeslissingen van de bouw:

• Architectuur Het systeem maakt gebruik van een platte architectuur. Ik vermijd zware frameworks en diepe afhankelijkheidstakken. Ik gebruik XML-tags zoals <action> in plaats van OpenAI function calling. Dit maakt de agent model-agnostisch. Je kunt elke LLM gebruiken.

• Composability door middel van Dependency Injection Ik gebruik een eenvoudige loop genaamd AgenticLoop. Deze accepteert twee inputs: een model caller en een tool executor. Deze ene keuze maakt vier verschillende modi mogelijk:

  • Algemene chat
  • Codeerworkflows
  • Subagents
  • Aangepaste skills Ik gebruik geen subclasses of complexe patronen. Alleen twee eenvoudige functies.

• State Management Helium is een tool voor een enkele gebruiker. Ik gebruik singletons op module-niveau voor de gespreksgeschiedenis en het geheugen. Global state is de eenvoudigste manier om een enkele gebruikerssessie weer te geven. Het voorkomt over-engineering.

• Safety Gates Ik gebruik een drielaags systeem voor tool-executie:

  • Veilig: Voert taken zoals het lezen van bestanden of zoeken automatisch uit.
  • Riskant: Vereist toestemming van de gebruiker voor taken zoals het schrijven van bestanden.
  • Voorwaardelijk: Controleert commando's zoals bash-scripts op gevaar. Dit voorkomt dat een hallucinerend model je bestanden verwijdert.

• Communicatie Ik gebruik ruwe HTTP-verzoeken in plaats van de OpenAI SDK. Dit vermindert afhankelijkheden en houdt de code transparant. Je ziet precies wat er naar de API wordt gestuurd.

• Skill System Skills zijn simpelweg Markdown-bestanden. Je kunt een nieuwe skill toevoegen door een tekstbestand te schrijven met YAML frontmatter. Er is geen complexe registratie-API. Dit maakt het plugin-systeem voor iedereen gemakkelijk te gebruiken.

• Geleerde lessen

  1. Dependency injection zorgt voor eenvoudige composability.
  2. De system prompt is je API. Behandel het als een 'first-class' stuk code.
  3. Als je lazy imports nodig hebt om circulaire afhankelijkheden op te lossen, zijn je modulegrenzen fout. Los in plaats daarvan de architectuur op.

Eenvoud schaalt. Kies de eenvoudigste oplossing die werkt voor jouw specifieke use case.

Bron: https://dev.to/debmalyasen34/designing-helium-agent-1b39

Optionele leercommunity: https://t.me/GyaanSetuAi