Bot Father: A Deep Dive

Version: ≥5.5.x

Overview

The Bot Father is EDDI's meta-bot—a bot that creates other bots. It's the perfect example of EDDI's architecture in action, demonstrating how conversation flow, behavior rules, property extraction, and HTTP calls work together to build sophisticated workflows.

More importantly, it shows EDDI's unique capability: the same architecture that powers simple chatbots can orchestrate complex, multi-step processes, even self-modifying the system itself.

What Makes Bot Father Special?

It's Not Special Code

Bot Father is not a special feature or custom module. It's a regular EDDI bot built using the standard components:

  • Behavior Rules (to control conversation flow)

  • Property Extraction (to gather user input)

  • HTTP Calls (to invoke EDDI's own API)

  • Output Templates (to guide users)

It Demonstrates Self-Modification

Bot Father uses EDDI's REST API to create new bots, packages, dictionaries, and configurations. This is possible because EDDI's API is designed to be programmable—you can automate bot creation just like any other API integration.

It's a Conversational Wizard

Instead of requiring users to understand JSON configurations or API calls, Bot Father provides a conversational interface that:

  1. Asks questions in natural language

  2. Validates and stores answers

  3. Builds complete bot configurations

  4. Creates the bot via API

  5. Returns the bot ID for deployment

Architecture of Bot Father

Bot Composition

Bot Father is composed of multiple packages:

Step-by-Step Flow

Let's walk through how Bot Father creates a new bot:

Step 1: Conversation Start

User: Starts conversation with Bot Father

Bot Father: (via Output Template)

Behavior Rule:

(Triggers only on first step)

Step 2: Capture Bot Name

User: "My Weather Bot"

Property Setter: (from property extension)

Result: Stores "My Weather Bot" in conversation memory:

Bot Father: "Great! What should your bot do? Describe its purpose."

Step 3: Capture Bot Description

User: "It should tell users the current weather"

Property Setter:

Bot Father: "Which AI provider would you like to use? (OpenAI, Claude, Gemini, or None)"

Step 4: Capture LLM Choice

User: "OpenAI"

Property Setter:

Bot Father: "Please provide your OpenAI API key."

Step 5: Capture API Key

User: "sk-..."

Property Setter:

Step 6: Trigger Bot Creation

Now all required data is collected. A Behavior Rule monitors the memory:

Explanation:

  • This rule checks if all required data exists in memory

  • When all conditions are met, it triggers the httpcall(create-bot) action

  • This demonstrates conditional API execution based on conversation state

Step 7: Execute HTTP Call to Create Bot

The create-bot HTTP call is defined in an HTTP Calls extension:

What Happens:

  1. Request: POST to http://localhost:7070/botstore/bots

  2. Body: Empty bot configuration (packages added later)

  3. Response:

  4. Property Extraction: Saves bot ID to context.newBotId

Step 8: Create Package with LangChain Configuration

Another HTTP call creates a package:

Step 9: Create LangChain Configuration

Note: The body uses Thymeleaf templating to inject conversation memory values:

  • ${context.llmProvider} → "openai"

  • ${context.apiKey} → "sk-..."

  • ${context.botDescription} → "It should tell users the current weather"

Step 11: Deploy Bot

Step 12: Confirmation

Bot Father: (via Output Template)

Key Architectural Insights

1. Conversation-Driven Workflows

Bot Father demonstrates that EDDI can orchestrate any multi-step process, not just conversations:

  • Data collection (via conversation)

  • Validation (via behavior rules)

  • API orchestration (via HTTP calls)

  • Response formatting (via output templates)

2. Conditional Execution

The behavior rule that triggers bot creation shows conditional API execution:

This is more sophisticated than simple API proxies—it's business logic orchestration.

3. Memory as State Machine

Conversation memory acts as a state machine:

  • Initial state: No data collected

  • Transition: User provides information → Property setters update state

  • Trigger: All data present → Behavior rule fires

  • Action: HTTP call executes

4. Template-Based Configuration

HTTP call bodies use Thymeleaf templates, allowing dynamic configuration:

This means the same HTTP call definition can create different configurations based on conversation data.

5. Self-Modification

Bot Father calls EDDI's own API, demonstrating:

  • Programmable infrastructure: Bots can modify the system

  • API-first design: Everything is accessible via REST

  • Composability: Bots are data, not code—they can be created programmatically

Real-World Applications

The Bot Father pattern can be applied to many scenarios:

1. Customer Onboarding Wizard

2. Order Processing System

3. Support Ticket Creation

4. Dynamic Bot Configuration

Code Deep Dive

Let's look at the actual Java components that make Bot Father work:

Behavior Rules Task (executes rules)

HTTP Calls Task (executes API calls)

Property Extraction Task

Configuration Files

Bot Father Bot Configuration

File: botfather.bot.json

Package Configuration Example

File: package-conversation-flow.package.json

Behavior Rules Example

File: behavior-bot-creation.behavior.json

Testing Bot Father

Using the REST API

Lessons from Bot Father

1. Configuration Over Code

Bot Father proves that complex workflows can be configured, not coded. No Java needed—just JSON.

2. Composability is Powerful

By combining simple components (rules, HTTP calls, templates), you can build sophisticated systems.

3. Conversations Are Workflows

Any multi-step process can be modeled as a conversation, making it user-friendly and intuitive.

4. EDDI is Infrastructure

EDDI isn't just for chatbots—it's infrastructure for orchestrating any API-driven workflow with conversational interfaces.

5. Self-Modification is Safe

Because bots are data (JSON), creating/modifying them via API is safe and version-controlled.

Summary

The Bot Father demonstrates EDDI's core philosophy:

Sophisticated AI orchestration should be configuration, not code.

By combining:

  • Behavior Rules (decision logic)

  • Property Extraction (state management)

  • HTTP Calls (API orchestration)

  • Output Templates (user interaction)

You can build systems that:

  • Guide users through complex processes

  • Collect and validate data conversationally

  • Orchestrate multiple API calls conditionally

  • Generate dynamic configurations

  • Self-modify and adapt

This is the power of EDDI's architecture—and Bot Father is the proof.

Last updated

Was this helpful?