Skip to main content

Tools for AI agents

Project description


ToolFuse

A common protocol for AI agent tools
Explore the docs »

View Demo · Report Bug · Request Feature


ToolFuse provides a common potocol for AI agent tools, use them with your favorite agent framework or model.

Installation

pip install toolfuse-ai

Usage

Let's define a simple weather logger tool

from toolfuse import Tool, action, observation
from selenium import webdriver


class WeatherLogger(Tool):
  """A simple weather logger."""

    @action
    def log(self, message: str) -> None:
        """Logs a message to the log file."""

        with open("weather.txt", "a") as file:
            file.write("***\n" + message + "\n")

    @observation
    def weather(self, location: str) -> str:
        """Checks the current weather from the internet using wttr.in."""

        weather_api_url = f"http://wttr.in/{location}?format=%l:+%C+%t"
        response = requests.get(weather_api_url)
        response.raise_for_status()
        return response.text

We mark the functions to be made available to the agent as

  • @action if they mutate the environment
  • @observation if they are read only.

Function Calling

Use a tool with OpenAI function calling

from openai import OpenAI

client = OpenAI()

weatherlogger = WeatherLogger()
schemas = weatherlogger.json_schema()

messages = []
messages.append({"role": "system", "content": "Don't make assumptions about what values to plug into functions. Ask for clarification if a user request is ambiguous."})
messages.append({"role": "user", "content": "What is the weather in Paris?"})

headers = {
    "Content-Type": "application/json",
    "Authorization": "Bearer " + openai.api_key,
}
json_data = {"model": model, "messages": messages, "tools": schemas}
response = requests.post(
    "https://api.openai.com/v1/chat/completions",
    headers=headers,
    json=json_data,
)

assistant_message = response.json()["choices"][0]["message"]
messages.append(assistant_message)
assistant_message
{
  "role": "assistant",
  "tool_calls": [
    {
      "id": "call_RYXaDjxpUCfWmpXU7BZEYVqS",
      "type": "function",
      "function": {
        "name": "weather",
        "arguments": "{\n  \"location\": \"Paris\"}"
      }
    }
  ]
}

Then to use this action

for tool in assistant_message["tool_calls"]:
    action = weatherlogger.find_action(tool["function"]["name"])
    args = json.loads(tool["function"]["arguments"])
    resp = weatherlogger.use(action, **args)

Available Tools

:computer: AgentDesk provides AI agents with a full GUI desktop locally or in the cloud.

Roadmap

  • Integrate with langchain
  • Integrate with babyagi
  • Integrate with autogen
  • Integrate with llamaindex

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

toolfuse-0.1.11.tar.gz (14.3 kB view details)

Uploaded Source

Built Distribution

toolfuse-0.1.11-py3-none-any.whl (20.3 kB view details)

Uploaded Python 3

File details

Details for the file toolfuse-0.1.11.tar.gz.

File metadata

  • Download URL: toolfuse-0.1.11.tar.gz
  • Upload date:
  • Size: 14.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.5.1 CPython/3.10.1 Darwin/22.6.0

File hashes

Hashes for toolfuse-0.1.11.tar.gz
Algorithm Hash digest
SHA256 96ddfc5b99c672584a1ca1ce3a082bb0ec31733337c366b5f21d008a68359d6d
MD5 d3d901010b19dd7c18603dc88c445c16
BLAKE2b-256 a5a8944915e8eeaf379db7da7dea36c307747060177d7cb15ab4bd45d7eec352

See more details on using hashes here.

File details

Details for the file toolfuse-0.1.11-py3-none-any.whl.

File metadata

  • Download URL: toolfuse-0.1.11-py3-none-any.whl
  • Upload date:
  • Size: 20.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.5.1 CPython/3.10.1 Darwin/22.6.0

File hashes

Hashes for toolfuse-0.1.11-py3-none-any.whl
Algorithm Hash digest
SHA256 8cbf2c9d1ff86eed4a0a11cca4047cd318b21cc366c00ea638f5b1b4624d612a
MD5 d20ba1083f7bd19ff8b9cf252e37d937
BLAKE2b-256 05f91ef6fbc722e06a7e9511b10ba334e1e6ed9e6dd8ba4afa57c1255547f3b6

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