Annotating Agent Methods (Rust)
Overview
Golem agents can annotate methods with #[prompt] and #[description] attributes. These provide metadata for AI/LLM tool discovery — agents with annotated methods can be used as tools by LLM-based systems.
Annotations
#[prompt("...")]— A short instruction telling an LLM when to call this method#[description("...")]— A longer explanation of what the method does, its parameters, and return value
Usage
use golem_rust::{agent_definition, agent_implementation, prompt, description};
#[agent_definition]
pub trait InventoryAgent {
fn new(warehouse_id: String) -> Self;
#[prompt("Look up the current stock level for a product")]
#[description("Returns the number of units in stock for the given product SKU. Returns 0 if the product is not found.")]
fn check_stock(&self, sku: String) -> u32;
#[prompt("Add units of a product to inventory")]
#[description("Increases the stock count for the given SKU by the specified amount. Returns the new total.")]
fn restock(&mut self, sku: String, quantity: u32) -> u32;
#[prompt("Remove units of a product from inventory")]
#[description("Decreases the stock count for the given SKU. Returns err if insufficient stock.")]
fn pick(&mut self, sku: String, quantity: u32) -> Result<u32, String>;
}Guidelines
#[prompt]should be a natural-language instruction an LLM can match against a user request#[description]should document behavior, edge cases, and expected inputs/outputs- Both annotations are optional — omit them for internal methods not intended for LLM discovery
- Annotations have no effect on runtime behavior; they are purely metadata