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
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
Release history Release notifications | RSS feed
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.13.tar.gz
(14.2 kB
view details)
Built Distribution
toolfuse-0.1.13-py3-none-any.whl
(20.3 kB
view details)
File details
Details for the file toolfuse-0.1.13.tar.gz
.
File metadata
- Download URL: toolfuse-0.1.13.tar.gz
- Upload date:
- Size: 14.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.8.2 CPython/3.10.14 Linux/6.5.0-1017-azure
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 3cce0297e4086425b433771e0b90316f6b1a86c69dc517493f0ea5b8ab527723 |
|
MD5 | a454e9987845b721fffbef23bdea176d |
|
BLAKE2b-256 | 2d3ba67be1df9c0787dd9284332686f18ffd68c85fbb325cae56c87926339d22 |
File details
Details for the file toolfuse-0.1.13-py3-none-any.whl
.
File metadata
- Download URL: toolfuse-0.1.13-py3-none-any.whl
- Upload date:
- Size: 20.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: poetry/1.8.2 CPython/3.10.14 Linux/6.5.0-1017-azure
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 90f04c7f1b5d378062b7b58e340a8e23ab637acd1c9083de53a3c90722b2d796 |
|
MD5 | 80ba7c2af0474b4bb496832446a29703 |
|
BLAKE2b-256 | d85022ecf6ef8b21cb5562fc4a3f08584f62ab00d93d6f48571391142d92d890 |