Skip to main content

Lemon AI's A Python client. Grant your LLM agents access to a wide range of APIs for read and write operations, creating copilots in minutes and unlocking the true potential of LLMs.

Project description

🍋 Lemon AI

Gateway to empower LLM agents to interact with the world

Discord Twitter MIT License
Run Notebook in LangChain Docs

Demo

Lemon AI helps you build powerful AI assistants in minutes and automate workflows by allowing for accurate and reliable read and write operations in tools like Airtable, Hubspot, Discord, Notion, Slack and Github.

Most connectors available today are focused on read-only operations, limiting the potential of LLMs. Agents, on the other hand, have a tendency to hallucinate from time to time due to missing context or instructions.

With Lemon AI, it is possible to give your agents access to well-defined APIs for reliable read and write operations. In addition, Lemon AI functions allow you to further reduce the risk of hallucinations by providing a way to statically define workflows that the model can rely on in case of uncertainty.

⚡️ Getting Started

1. Prerequisites

Requires Python 3.8.1 and above.

2. Installing

To use Lemon AI in your Python project run pip install lemonai. The following example uses an OpenAI model. Therefore, we also need to pip install openai. Depending on which model you want to use this install is optional.

3. (Optional) Launch the server

The interaction of your agents and all Lemon AI tools is provided by the Lemon AI Server. Per default the Lemon AI Python client is sending requests to a hosted server version. To run the Lemon AI server on-prem please refer to the Server Documentation.

4. Use Lemon AI with LangChain

The easiest way to give Lemon AI a try is via the Jupyter Notebook you can find in the LangChain Docs.

Lemon AI automatically solves given tasks by finding the right combination of relevant tools or uses Lemon AI Functions as an alternative. The following example demonstrates how to retrieve a user from Hackernews and write it to a table in Airtable:

Include Lemon AI in your LangChain project

import os
from lemonai import execute_workflow
from langchain import OpenAI

Load API keys and access tokens

To use tools that require authentication, you have to store the corresponding access credentials in your environment in the format "{tool name}_{authentication string}" where the authentication string is one of ["API_KEY", "SECRET_KEY", "SUBSCRIPTION_KEY", "ACCESS_KEY"] for API keys or ["ACCESS_TOKEN", "SECRET_TOKEN"] for authentication tokens. Examples are "OPENAI_API_KEY", "BING_SUBSCRIPTION_KEY", "AIRTABLE_ACCESS_TOKEN".

""" Load all relevant API Keys and Access Tokens into your environment variables """
os.environ["OPENAI_API_KEY"] = "*INSERT OPENAI API KEY HERE*"
os.environ["GITHUB_API_KEY"] = "*INSERT GITHUB API KEY HERE*"
os.environ["DISCORD_WEBHOOK_URL"] = "*INSERT DISCORD CHANNEL WEBHOOK URL HERE*"

Example of defining your prompt and executing the Langchain Agent

The following example makes use of several Lemon AI tools to

  1. Retrieve details about a personal repository on GitHub
  2. Get the top growing starred repositories of my account
  3. Send a Discord message with results and review.

Use Case Example

lemonai_repo_owner = "Abdus2609"
github_username = "Abdus2609"

""" Define your instruction to be given to your LLM """
prompt = f"""Get the description for a repository I am working with called lemonai (owner {lemonai_repo_owner}).
Also, get my top growing starred repositories (username {github_username}). Analyze the descriptions of both
the LemonAI repository and my top-starred repositories. Then, send a Discord message that first displays a
numerically bullet-pointed leaderboard of the top growing starred repositories and their growth, and secondly
discuss how each tool could be useful specifically to lemonai's use case based on your analysis of the
descriptions of each repository."""

"""
Use the Lemon AI execute_workflow wrapper
to run your LangChain agent in combination with Lemon AI
"""
model = OpenAI(temperature=0)

execute_workflow(llm=model, prompt_string=prompt)

(Optional) Define your Lemon AI Functions

Similar to OpenAI functions, Lemon AI provides the option to define workflows as reusable functions. These functions can be defined for use cases where it is especially important to move as close as possible to near-deterministic behavior. Specific workflows can be defined in a separate lemonai.json. You can find the corresponding tool ids (e.g. hackernews-get-user) in the Tool Docs:

[
  {
    "name": "Hackernews Airtable User Workflow",
    "description": "retrieves user data from Hackernews and appends it to a table in Airtable",
    "tools": ["hackernews-get-user", "airtable-append-data"]
  }
]

Your model will have access to these functions and will prefer them over self-selecting tools to solve a given task. All you have to do is to let the agent know that it should use a given function by including the function name in the prompt (e.g. prompt = f"""Execute the Hackernews Airtable user workflow...).

5. Gain transparency on your Agent's decision making

To gain transparency on how your Agent interacts with Lemon AI tools to solve a given task, all decisions made, tools used and operations performed are written to a local lemonai.log file. Every time your LLM agent is interacting with the Lemon AI tool stack a corresponding log entry is created:

2023-06-26T11:50:27.708785+0100 - b5f91c59-8487-45c2-800a-156eac0c7dae - hackernews-get-user
2023-06-26T11:50:39.624035+0100 - b5f91c59-8487-45c2-800a-156eac0c7dae - airtable-append-data
2023-06-26T11:58:32.925228+0100 - 5efe603c-9898-4143-b99a-55b50007ed9d - hackernews-get-user
2023-06-26T11:58:43.988788+0100 - 5efe603c-9898-4143-b99a-55b50007ed9d - airtable-append-data

By using the Lemon AI Analytics Tool 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 defining Lemon AI functions.

Heatmap Example

🧩 Supported Tools

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

  • HackerNews
  • Airtable
  • Slack
  • HubSpot
  • Github
  • Notion
  • Discord

🩻 Next Up

  • Github
  • Notion
  • Discord
  • Gmail
  • Google Calendar
  • Kafka
  • Pipedrive
  • Monday.com
  • Stripe
  • Medium
  • 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!


Felix Brockmeier

Mohammed Hannan

Hai Nghiem

Clemens Schroeer

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

lemonai-0.1.3.tar.gz (5.8 MB view details)

Uploaded Source

Built Distribution

lemonai-0.1.3-py3-none-any.whl (12.4 kB view details)

Uploaded Python 3

File details

Details for the file lemonai-0.1.3.tar.gz.

File metadata

  • Download URL: lemonai-0.1.3.tar.gz
  • Upload date:
  • Size: 5.8 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.10.6

File hashes

Hashes for lemonai-0.1.3.tar.gz
Algorithm Hash digest
SHA256 a5c83148edf20c2a86293543d8ad73b300997d7145ad17d40f276a5f6f1a7884
MD5 63be45d7056379eb1145e1d8b44787b7
BLAKE2b-256 d9b887cbefab9b979696c3a91e8ea50cead0a9a069758e5109d556ec377cfb22

See more details on using hashes here.

File details

Details for the file lemonai-0.1.3-py3-none-any.whl.

File metadata

  • Download URL: lemonai-0.1.3-py3-none-any.whl
  • Upload date:
  • Size: 12.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.10.6

File hashes

Hashes for lemonai-0.1.3-py3-none-any.whl
Algorithm Hash digest
SHA256 d4736e801ad7f7db31763631ad16f2a28a8cdaae0df9bd86ea8a52350cd5cef4
MD5 834d8b6637e461a4efbb0ff3dc468a15
BLAKE2b-256 5d9828fc584f93071d1cace55e87a0290f86135f9cd64b84806595a49de34799

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page