Skip to main content

Test Agent | SVAHNAR AI Developer Docs

You can tempororily test the functionality of an agent using the following code. This API allows you to run a specific agent and perform its designated tasks. You can also specify the input data for the agent to process.

info

When working with complex agent configurations:

  • The process of building and responding may require additional time
  • Use the timeout parameter to accommodate longer processing times
  • Adjust the timeout value as needed based on your configuration complexity

With YAML file

You can test the agent using a YAML file. This is useful for testing complex agents in a single YAML file.

Python
from svahnar import Svahnar
from pathlib import Path

client = Svahnar()

response = client.agents.test(
yaml_file=Path("agent.yaml"),
message="Tell me about the Stargate Project",
timeout=600 # 5 minutes
)

print(response)

With Chat History

When you need to test how the agent handles follow-up questions or context, provide the agent_history.

tip

You can learn how to generate the chat history object automatically or manually in the Chat History Guide.

Python
from svahnar import Svahnar
from pathlib import Path

client = Svahnar()

# Example pre-existing history
history = [
{"role": "user", "content": "Who is the CEO of OpenAI?"},
{"role": "assistant", "content": "information search agent - Sam Altman is the CEO of OpenAI."}
]

response = client.agents.test(
yaml_file=Path("agent.yaml"),
message="How old is he?",
agent_history=history,
timeout=600
)

print(response)

With YAML string

You can use a YAML string to test the agent. This is useful for quick tests or when you don't want to create a separate YAML file.

Python
from svahnar import Svahnar

client = Svahnar()

response = client.agents.test(
yaml_string="""create_agent_network:
agent-1:
agent_name: information search agent
agent_function:
- It is used to search for the information on web or internet and provide the result
LLM_config:
params:
model: gpt-5-mini
max_tokens: 1000
request_timeout: 600
tools:
tool_assigned:
- name: Tavily
incoming_edge:
- Start
outgoing_edge: []
""",
message="Tell me about the Stargate Project",
timeout=600 # Adjusted timeout for processing
)

print(response)

Request Parameters

  • yaml_file: The YAML configuration file you want to upload. (Provide either yaml_file or yaml_string).
  • yaml_string: The YAML configuration string that defines the agent's context and settings. (Provide either yaml_file or yaml_string).
  • message: The input data or message you want to send to the agent for processing. Can be a string or a JSON dictionary.
  • agent_history: Optional. List of prior messages; defaults to an empty list.
  • thread_id: Optional. A unique identifier for the chat session.
  • hitl_decision: Optional. The Human-in-the-Loop decision. Accepts "approve", "edit", or "reject". Required when resuming an agent that was paused for HITL.
  • timeout: The maximum time (in seconds) to wait for the agent to respond. This is useful for complex agents that may take longer to process.

Response

The response format is identical to the standard agent execution.

json
{
"response": [
{
"information_search_agent": {
"reasoning": "Determined that search tool is needed.",
"toolcalls": [
{
"name": "Tavily",
"arguments": {"query": "Stargate Project"},
"id": "call_abc123"
}
],
"toolresponse": ["Search results..."],
"llmresponse": "The Stargate Project was a secret U.S. Army unit...",
"hitl": null
}
}
],
"usage": {
"credits_charged": [
{
"agent_name": "information_search_agent",
"number_of_runs": 1,
"credit_consumed": 1
}
],
"total_credits_charged": 1
},
"additional_metadata": {
"thread_id": "000000-00000-00000-00000"
},
"request_metadata": {
"request_id": "req_123456"
}
}

Response Parameters

  • response: A list containing dictionaries for each agent execution step. Each step includes reasoning, toolcalls, toolresponse, llmresponse, and hitl state.
  • usage: Information about the credits charged for the agent execution.
  • additional_metadata: Contains metadata like the thread_id to continue the conversation.
  • request_metadata: Contains the unique request_id.

Human-in-the-Loop (HITL) Handling

When testing an agent configured with Human-In-The-Loop (hitl: true), the execution will pause when the tool is called. The API will return a response where the hitl field contains the tool call details awaiting approval.

To resume the agent's execution, you must send the same request (including the YAML file/string) back to the /test endpoint, but include the hitl_decision parameter:

  • "approve": Allow the agent to execute the tool with the originally proposed arguments.
  • "edit": Allow execution, but use the modified arguments you provide in the message field.
  • "reject": Deny the tool execution. The agent receives feedback that the tool was denied and will attempt to proceed without it.

Example: Resuming after HITL Pause

Python
from svahnar import Svahnar
from pathlib import Path

client = Svahnar()

yaml_path = Path("agent.yaml")

# 1. Initial Request
response = client.agents.test(
yaml_file=yaml_path,
message="Tell me about the Stargate Project",
thread_id="my-test-session-123",
timeout=600
)

# Suppose the agent pauses here and returns hitl data in the response.
# You inspect the tool call and decide to approve it.

# 2. Resuming the agent with an approval
resume_response = client.agents.test(
yaml_file=yaml_path, # Must provide the exact same YAML
message=None, # Message is not needed when approving/rejecting
thread_id="my-test-session-123", # Must use the exact same thread_id
timeout=600,
hitl_decision="approve" # The HITL decision
)

print(resume_response)

# OR: Resuming with an edit (providing new arguments)
edit_response = client.agents.test(
yaml_file=yaml_path,
message={"query": "Declassified UFO documents"}, # The edited tool arguments
thread_id="my-test-session-123",
timeout=600,
hitl_decision="edit"
)