Skip to main content

Use Gradio Apps as tools for LLM Agents

Project description

Gradio Tools: Gradio 🤝 LLM Agents

Any Gradio application at the tips of your LLM's fingers 🦾

gradio_tool can turn any Gradio application into a tool that an LLM agent can use to complete its task.

Currently supported are:

Example Usage

Simply import the desired tools from gradio_tool (or create your own!) and pass to initialize_agent from LangChain.

In this example, we use some pre-built tools to generate images, caption them, and create a music clip to match its artistic style!

Read the How It Works section to learn how to create your own tools! We welcome any new tools to the library!

os.environ["OPENAI_API_KEY"] = "<Secret Key>"

from langchain.agents import initialize_agent
from langchain.llms import OpenAI
import os
from gradio_tool.tool import StableDiffusionTool, ImageCaptioningTool, ImageToMusicTool
from langchain.memory import ConversationBufferMemory

llm = OpenAI(temperature=0)
memory = ConversationBufferMemory(memory_key="chat_history")
tools = [StableDiffusionTool().langchain, ImageCaptioningTool().langchain, ImageToMusicTool().langchain]


agent = initialize_agent(tools, llm, memory=memory, agent="conversational-react-description", verbose=True)
output = agent.run(input=("I would please like a photo of a dog riding a skateboard. "
                          "Please caption this image and create a song for it."))

gradio_langchain

How it works

The core abstraction is the GradioTool, which lets you define a new tool for your LLM as long as you implement a standard interface:

class GradioTool(BaseTool):

    def __init__(self, name: str, description: str, src: str) -> None:

    @abstractmethod
    def create_job(self, query: str) -> Job:
        pass

    @abstractmethod
    def postprocess(self, output: Tuple[Any] | Any) -> str:
        pass

The requirements are:

  1. The name for your tool
  2. The description for your tool. This is crucial! Agents decide which tool to use based on their description. Be precise and be sure to inclue example of what the input and the output of the tool should look like.
  3. The url or space id, e.g. freddyaboulton/calculator, of the Gradio application. Based on this value, gradio_tool will create a gradio client instance to query the upstream application via API. Be sure to click the link and learn more about the gradio client library if you are not familiar with it.
  4. create_job - Given a string, this method should parse that string and return a job from the client. Most times, this is as simple as passing the string to the submit function of the client. More info on creating jobs here
  5. postprocess - Given the result of the job, convert it to a string the LLM can display to the user.
  6. Optional - Some libraries, e.g. MiniChain, may need some info about the underlying gradio input and output types used by the tool. By default, this will return gr.Textbox() but if you'd like to provide more accurate info, implement the _block_input(self) and _block_output(self) methods of the tool.

And that's it!

Pre-built tools

gradio_tool comes with a set of pre-built tools you can leverage immediately! These are

  1. StableDiffusionTool - Generate an image from a given prompt using the open source stable diffusion demo hosted on HuggingFace spaces
  2. ImageCaptionTool - Caption an image by providing a filepath based on Niels Rogge's HuggingFace Space
  3. ImageToMusicTool - Create an audio clip that matches the style of a given image file based on Sylvain Filoni's HuggingFace Space

Appendix

What are agents?

A LangChain agent is a Large Language Model (LLM) that takes user input and reports an output based on using one of many tools at its disposal.

What is Gradio?

Gradio is the defacto standard tool for building Machine Learning Web Applications and sharing them with the world - all with just python! 🐍

Download files

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

Source Distribution

gradio_tools-0.0.4.tar.gz (3.5 MB view details)

Uploaded Source

Built Distribution

gradio_tools-0.0.4-py3-none-any.whl (193.7 kB view details)

Uploaded Python 3

File details

Details for the file gradio_tools-0.0.4.tar.gz.

File metadata

  • Download URL: gradio_tools-0.0.4.tar.gz
  • Upload date:
  • Size: 3.5 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.9.16

File hashes

Hashes for gradio_tools-0.0.4.tar.gz
Algorithm Hash digest
SHA256 eb3814963aac042a3bf60efc94cffb1c38d5fa5012c175a017585d5130981a38
MD5 91aac424c129848d9c872f35534a9fa9
BLAKE2b-256 797ff1712205510f2ba1d8812d8076000aa2839f8022295ef1cb76c51432a8ad

See more details on using hashes here.

File details

Details for the file gradio_tools-0.0.4-py3-none-any.whl.

File metadata

  • Download URL: gradio_tools-0.0.4-py3-none-any.whl
  • Upload date:
  • Size: 193.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.9.16

File hashes

Hashes for gradio_tools-0.0.4-py3-none-any.whl
Algorithm Hash digest
SHA256 4f64896667f4a721e1b58d654e43b9a2fcde1d3dd5e6ed63ad2bf8f3e16a8eae
MD5 2c10b4a467dcd43857085b5d98280d09
BLAKE2b-256 f1be04852761cdc46d0612552602fd66132b73dac0ed2c9bd2f576d2f783d865

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