Skip to main content

A simple library for prototyping and learning agent-based reasoning with tools.

Project description

servants

A simple Python library for prototyping and learning agent-based reasoning with tools.

This package helps you quickly prototype agent architectures that use tools (functions) and step-by-step reasoning. It is designed for educational and experimental purposes, not for production use.

Installation

pip install servants

Usage

# Example: Using Servants for Tool-Driven Agent Reasoning

import time
import sys
import os
from openai import OpenAI

# Import the main classes for tool, agent, and orchestration
from servants import Tool, Servant, Master

# --- Tool Definitions ---
def get_weather(city: str) -> str:
    """
    Gets the current weather for a given city.
    Args:
        city (str): The city to get the weather for.
    Returns:
        str: The weather conditions (e.g., "Sunny", "Rainy", "Cloudy").
    """
    if "london" in city.lower():
        return "Rainy"
    elif "paris" in city.lower():
        return "Sunny"
    else:
        return "Cloudy"

def suggest_activity(weather: str) -> str:
    """
    Suggests an activity based on the weather.
    Args:
        weather (str): The current weather (e.g., "Sunny", "Rainy", "Cloudy").
    Returns:
        str: A suggested activity.
    """
    if weather == "Sunny":
        return "Go for a walk in the park."
    elif weather == "Rainy":
        return "Visit a museum or watch a movie."
    else:
        return "It's a good day to read a book indoors."

# --- LLM Client Setup ---
# Set up OpenAI client (replace with your API key)
client = OpenAI(api_key="sk-...YOUR-API-KEY...")

# --- Tool Wrapping ---
weather_tool = Tool(get_weather, "get_weather", "Gets the current weather for a given city.")
activity_tool = Tool(suggest_activity, "suggest_activity", "Suggests an activity based on the weather.")

# --- LLM Chat Completion Function ---
def chat_completion_func(messages):
    """
    Calls the OpenAI chat completion API with the given messages.
    Args:
        messages (list): List of message dicts for the LLM.
    Returns:
        str: The LLM's response content.
    """
    response = client.chat.completions.create(
        model="gpt-4o",
        messages=messages,
        temperature=0.7
    )
    return response.choices[0].message.content

# --- Agent and Orchestration ---
servant = Servant(tools=[weather_tool, activity_tool])
manager = Master([servant])
problem = "I'm in London today. What do you suggest I do?"
system_message = (
    "You are a helpful assistant. You can use tools to find information and make suggestions. "
    "Reason step-by-step to solve the user's problem."
)

print("Starting the orchestrator...")
manager.run(
    problem=problem,
    chat_completion_func=chat_completion_func,
    system_message=system_message,
    max_iterations=4,
    tools=[weather_tool, activity_tool]
)

# --- Monitoring and Control ---
for _ in range(10):
    print(f"Manager statuses: {manager.get_status()}")
    time.sleep(1)
print("Pausing all servants...")
manager.pause()
time.sleep(3)
print("Resuming all servants...")
manager.resume()
time.sleep(10)
results = manager.get_results()
print("\nResults from Manager:")
for idx, result in results:
    print(f"Servant {idx}: {result}")
manager.stop()
print("All servants stopped")

# --- Entrypoint ---
if __name__ == "__main__":
    # Run the example usage if this script is executed directly
    example_usage()

What does it do?

  • Lets you quickly prototype agent-based architectures that use tools (functions) and step-by-step reasoning.
  • Provides a simple API for defining tools, agents (servants), and orchestrators (masters).
  • Automatically generates a JSON schema for any Python function's parameters and types.
  • Makes it easy to describe agent tools and methods for LLMs or other automation systems.
  • Minimal, easy-to-use API for experimentation and learning.

Note

This library is intended for prototyping and learning. For production-grade agent frameworks, see LangChain or similar projects.

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

servants-0.2.0.tar.gz (7.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

servants-0.2.0-py3-none-any.whl (7.7 kB view details)

Uploaded Python 3

File details

Details for the file servants-0.2.0.tar.gz.

File metadata

  • Download URL: servants-0.2.0.tar.gz
  • Upload date:
  • Size: 7.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.9.6

File hashes

Hashes for servants-0.2.0.tar.gz
Algorithm Hash digest
SHA256 b3b8b95b8a9103a38dc869d4ff4d9a7782b50c042fcb2e758d5f2ded574f64fa
MD5 cd424c5d3b4c3114195bffdfb87bc559
BLAKE2b-256 6a0880d9a2b9149d23edc4580fa52ab704ea1c624ea5e67faf75a27191d9cd80

See more details on using hashes here.

File details

Details for the file servants-0.2.0-py3-none-any.whl.

File metadata

  • Download URL: servants-0.2.0-py3-none-any.whl
  • Upload date:
  • Size: 7.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.1.0 CPython/3.9.6

File hashes

Hashes for servants-0.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 0b73c8c076dc1eb89381a1fabef802d83be88daa21e1fd1ef6b817cd635d2a8c
MD5 301537672db94fd98cc46a35febea00a
BLAKE2b-256 1e5b61b24205a03c202efb3ce7063160af6c9672b964b0b6f4f02268da0419c7

See more details on using hashes here.

Supported by

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