Skip to content

Plan-Validate-Solve (PVS) Agent for accurate, reliable and reproducable workflow automation

License

Notifications You must be signed in to change notification settings

felixbrock/lemon-agent

Repository files navigation

Disclaimer: This repo is currently not under active maintenance. Things might break unexpectedly!

🍋 Lemon Agent

When life gives you lemons, automate it using Lemon Agent 😎

Discord Twitter MIT License
Run Notebook in LangChain Docs

lemon-agent-demo.mp4

Start talking to your tools like Airtable, Hubspot, Discord, Notion and GitHub in minutes and build powerful workflow automations by enabling your LLM to reliably perform read and write operations.

Lemon Agent is a standalone supervised Plan and Solve Agent (ACL 2023 Paper "Plan-and-Solve Prompting: Improving Zero-Shot Chain-of-Thought Reasoning by Large Language Models") that allows for

🤝 Separation of tasks and human-in-the-loop interactions

  • Lemon Agent is currently holding a Planner Agent and a Solver Agent to keep the agents focussed and increase accuracy. We are planning on adding additional agents real soon. In addition, Lemon Agent will ask for approval at relevant workflow steps to make sure the intended actions are executed.

🌌 Unlimited configuration options

  • Lemon Agent gives you unlimited configuration options (see example here) when defining your workflow. For instance, you can tell Lemon Agent to ask for permission before executing a workflow step or to drop a 🧔‍♀️ dad joke every time the model executes a workflow step.

👀 UI flexibility

  • Build any UI on top or engage with Lemon Agent via the built-in CLI.

🎨 [Soon] Model & framework agnostic operations

  • Lemon Agent is a standalone agent, but can easily be integrated into frameworks like LangChain and be used with any model.

Bonus: By using the analytics visualization you can easily gain a better understanding of how frequently and in which order tools are used. As a result, you can identify weak spots in your agent’s decision-making capabilities and move to a more deterministic behavior by further configuring your Lemon Agent workflows. (.html file that can be run without any additional installation)

Demo

🏗️ Architecture

A Lemon Agent session is initiated by the user. Via the UI the user then directly chats with the planner agent to define how to solve a given task. Once a solution was defined, the planner agent then starts communicating with the solver agent, which, finally, executes a given workflow step by making use of the multiple tools that are available to the Lemon Agent.

Agent Architecture

⚡️ Getting Started

1. Prerequisites

2. Installing

  1. To run the Lemon Agent locally git clone this repo.
  2. Open the local clone with your favourite IDE and run pnpm i at the root of the project.

3. Start the Lemon Agent

  1. At the root of the project run cp .env.example .env.development to create a new env file.
  2. Store your OpenAI (as AUTH_TOKEN_OPENAI) and GitHub (as AUTH_TOKEN_GITHUB) auth token in .env.development.

For Unix and Unix-like systems: 3. At the root of the project run pnpm exec turbo dev to start the Lemon Agent. In case this doesn't work for you run pnpm exec turbo build at the root, run cd apps/cli to navigate to the project's cli client, and finally, run pnpm run dev.

For Windows:

  1. At the root of the project run pnpm exec turbo dev-win to start the Lemon Agent. In case this doesn't work for you run pnpm exec turbo build at the root, run cd apps/cli to navigate to the project's cli client, and finally, run pnpm run dev-win.

By now your Lemon Agent should be running and waiting for a task to solve.

4. A simple example

Similar to OpenAI functions, the Lemon Agent provides the option to define workflows as reusable functions. Feel free to define and configure any workflow you want in data/workflow.json. Include different tools and add additional fields to further configure the workflow. For instance, the userPermissionRequired field is interpreted by the model as a pre-execution condition to ask the user whether to execute a workflow step.

Example Workflow

{
  "steps": [
    {
      "toolId": "github-repo-get",
      "userPermissionRequired": false
    }
  ]
}

To run the workflow above all you have to do is to tell the Lemon Agent to 'get information about a repository' and finally approve 'yes, do this for the repository lemon-agent and the owner felixbrock'.

🧩 Supported Tools

We already allow agents to interact with over 120 tools across the following services:

  • HackerNews
  • Airtable
  • Slack
  • HubSpot
  • Github
  • Notion
  • Discord
  • Medium
  • Monday.com

🩻 Next Up

  • Github
  • Notion
  • Discord
  • Medium
  • Monday.com
  • Gmail
  • Google Calendar
  • Kafka
  • Pipedrive
  • Stripe
  • Google Cloud Realtime Database
  • Salesforce

🦸 Contributing

Great to see you here! We are extremely open to contributions! You can find more information in our CONTRIBUTING.md. If you have any more questions feel free to drop us a message on Discord.

❤️‍🔥 Contributors

Those are the team members and people who actively help out improving the codebase by making PRs and reviewing code. We are beyond grateful for your help!