Skip to content

Tool Result Metadata

Pavel Buchnev edited this page Sep 18, 2024 · 1 revision

Feature Explanation

The ReturnToolResult class is a metadata option that instructs an AI agent to return the tool result immediately after it's called by the Language Model (LLM). This class extends the Option class and is part of the LLM Agents framework. It's designed to modify the behavior of the agent, specifically in how it handles tool execution results.

Use Cases (5 Examples)

a) Immediate API Response:

use LLM\Agents\Solution\Metadata\ReturnToolResult;
use LLM\Agents\Agent\AgentAggregate;

$agent = new AgentAggregate(
    agent: new Agent(key: 'api_agent', name: 'API Agent', instruction: 'Handle API requests'),
);
$agent->addMetadata(new ReturnToolResult());

$result = $executor->execute(agent: 'api_agent', prompt: 'Get user data');
echo $result->content; // Directly outputs API response

b) Data Transformation Pipeline:

use LLM\Agents\Solution\Metadata\ReturnToolResult;

class DataTransformationAgent extends AgentAggregate {
    public function __construct() {
        parent::__construct(
            agent: new Agent(
                key: 'data_transformer',
                name: 'Data Transformer',
                instruction: 'Transform input data',
            )
        );
        $this->addMetadata(new ReturnToolResult());
    }
}

$agent = new DataTransformationAgent();
$result = $executor->execute(agent: 'data_transformer', prompt: 'Convert CSV to JSON');
$transformedData = json_decode($result->content);

c) Quick Fact Checker:

use LLM\Agents\Solution\Metadata\ReturnToolResult;

$factCheckerAgent = new AgentAggregate(
    agent: new Agent(
        key: 'fact_checker',
        name: 'Fact Checker',
        instruction: 'Verify facts using reliable sources',
    )
);
$factCheckerAgent->addMetadata(new ReturnToolResult());

$result = $executor->execute(
    agent: 'fact_checker',
    prompt: 'Is the Earth flat?',
    options: new Options(toolChoice: ToolChoice::specific('verify_fact'))
);
echo $result->content; // Outputs fact-checking result directly

d) Language Translator:

use LLM\Agents\Solution\Metadata\ReturnToolResult;

$translatorAgent = new AgentAggregate(
    agent: new Agent(
        key: 'translator',
        name: 'Language Translator',
        instruction: 'Translate text between languages',
    )
);
$translatorAgent->addMetadata(new ReturnToolResult());

$result = $executor->execute(
    agent: 'translator',
    prompt: 'Translate "Hello, world!" to French',
    options: new Options(toolChoice: ToolChoice::specific('translate'))
);
echo $result->content; // Outputs translated text directly

e) Mathematical Computation:

use LLM\Agents\Solution\Metadata\ReturnToolResult;

$mathAgent = new AgentAggregate(
    agent: new Agent(
        key: 'math_solver',
        name: 'Math Solver',
        instruction: 'Solve mathematical problems',
    )
);
$mathAgent->addMetadata(new ReturnToolResult());

$result = $executor->execute(
    agent: 'math_solver',
    prompt: 'Calculate the square root of 144',
    options: new Options(toolChoice: ToolChoice::specific('calculate'))
);
echo $result->content; // Outputs calculation result directly

Configuration Options

The ReturnToolResult class doesn't have any configurable options itself. It's a simple metadata class that, when added to an agent, modifies its behavior to return tool results immediately. The configuration is done by adding this metadata to an agent:

use LLM\Agents\Solution\Metadata\ReturnToolResult;

$agent->addMetadata(new ReturnToolResult());

Related Classes

a) LLM\Agents\Solution\Metadata\Option:

  • Purpose: Base class for metadata options.
  • Functionality: Provides a structure for defining configuration options for agents.
  • Interaction: ReturnToolResult extends this class, inheriting its basic structure and behavior.

b) LLM\Agents\Solution\SolutionMetadata:

  • Purpose: Represents metadata for a solution (which can be an agent, tool, or other component).
  • Functionality: Holds metadata information including type, key, and content.
  • Interaction: The Option class (and by extension, ReturnToolResult) is a specific type of SolutionMetadata.

c) LLM\Agents\Solution\MetadataType:

  • Purpose: Enum defining types of metadata.
  • Functionality: Provides constants for different metadata types (e.g., Configuration, Memory, Prompt).
  • Interaction: Used in the Option class to specify the metadata type as Configuration.

d) LLM\Agents\Agent\AgentAggregate:

  • Purpose: Represents an aggregation of an agent and its associated components.
  • Functionality: Manages the agent's metadata, tools, and other properties.
  • Interaction: The ReturnToolResult metadata is added to an AgentAggregate instance to modify its behavior.

Mermaid Class Diagram

classDiagram
    class SolutionMetadata {
        +MetadataType type
        +string key
        +mixed content
    }
    class Option {
        +__construct(string key, mixed content)
    }
    class ReturnToolResult {
        +__construct()
    }
    class MetadataType {
        <<enumeration>>
        Configuration
        Memory
        Prompt
    }
    class AgentAggregate {
        +addMetadata(SolutionMetadata metadata)
    }
    
    SolutionMetadata <|-- Option
    Option <|-- ReturnToolResult
    SolutionMetadata -- MetadataType
    AgentAggregate --> "0..*" SolutionMetadata : contains

Loading

This class diagram illustrates the inheritance hierarchy and relationships between ReturnToolResult and its related classes. The ReturnToolResult class extends Option, which in turn extends SolutionMetadata. The AgentAggregate class can contain multiple SolutionMetadata instances, including ReturnToolResult.

The ReturnToolResult class is a simple yet powerful feature in the LLM Agents framework. It allows for immediate return of tool execution results, which can be particularly useful in scenarios where quick, direct responses are needed without further processing by the LLM. This can optimize performance and simplify the flow of data in certain use cases.