Skip to main content
There are two ways to get your agent into Orizon QA: upload the source code, or describe the agent using a template. Both paths lead to the same test configuration screen — the difference is how much Orizon QA can automatically infer about your agent.
Uploading code gives Orizon QA the most information. It scans your files to detect the framework, extract tool definitions, identify agent types, and understand how your agent is structured — all without you having to fill anything in manually.Accepted file types: .py, .js, .ts, .json, .yaml, .yml, and .zip archives containing any of the above.

What Orizon QA extracts from your code

When you upload agent code, Orizon QA parses the file and extracts:
  • Framework — detected automatically from imports and class patterns (see Framework auto-detection below)
  • Tools — names, parameters, and descriptions pulled from decorators (@tool), Tool() constructors, FunctionDeclaration, and similar patterns
  • Agent types — the specific agent class or pattern in use (e.g. ReActAgent, AssistantAgent, genai.Agent)
  • Memory configuration — whether conversation memory is in use and what type
  • System prompt — if present in the code
  • Rules and constraints — keywords like never, always, must not in system prompts
Orizon QA does not run your code during the upload step. It performs static analysis only — no agent is invoked until you explicitly start a test run.

How to upload

1

Go to Agent Testing

Navigate to Agent Testing in the sidebar, then click Upload Agent.
2

Select your files

Drag and drop your agent file(s) or click to browse. You can upload a single file or a .zip archive with multiple files.
3

Review detection results

Orizon QA displays the detected framework and a summary of what it found — tools, agent types, memory, and any system prompt. Verify the results are correct.
4

Correct if needed

If the framework was not detected or was detected incorrectly, use the framework selector to choose the right one manually.
5

Continue to test configuration

Click Continue to proceed to the test category and evaluation model selection screen.

Framework auto-detection

When you upload code, Orizon QA checks for framework-specific patterns in sequence. The first framework whose detection patterns match is selected.
Orizon QA identifies LangChain code by looking for:
  • Imports: from langchain, from langchain_core, from langchain_community
  • JavaScript imports: @langchain/core, @langchain/community
  • The string LangChain (case-insensitive)
Once detected, it also extracts:
  • Tools via @tool decorator, Tool() constructor, StructuredTool subclasses, and JS new DynamicTool()
  • Chains: LLMChain, SequentialChain, LCEL pipe operators, RetrievalQA
  • Agents: create_react_agent, create_tool_calling_agent, AgentExecutor, ZeroShotAgent
  • Memory: ConversationBufferMemory, ConversationSummaryMemory, VectorStoreRetrieverMemory, and others
Orizon QA identifies CrewAI code by looking for:
  • Imports: from crewai
  • Decorators: @agent, @task, @crew
  • The Crew() constructor
Once detected, it also extracts:
  • Crew definitions from @crew decorators and Crew(agents=[...], tasks=[...]) constructors
  • Agent roles, goals, and backstories from @agent decorators and Agent() constructors
  • Task descriptions and expected outputs from @task decorators and Task() constructors
  • Process type: sequential (default) or hierarchical
  • Built-in tools: SerperDevTool, ScrapeWebsiteTool, FileReadTool, DirectoryReadTool, and others
Orizon QA identifies AutoGen code by looking for:
  • Imports: from autogen
  • Class names: ConversableAgent, UserProxyAgent, AssistantAgent, GroupChat
Once detected, it also extracts:
  • Agent types and their configurations (system message, human_input_mode, max_consecutive_auto_reply)
  • Group chat agents and GroupChatManager references
  • Code execution settings (code_execution_config, Docker usage, working directory)
  • Registered functions via @register_for_llm decorators and register_function() calls
Orizon QA identifies Google ADK code by looking for:
  • Imports: from google.adk, from google.generativeai
  • Class names: AgentDefinition, VertexAI
  • Constructor: genai.Agent
  • Package: @google-cloud/vertexai
Once detected, it also extracts:
  • Agent definitions from AgentDefinition subclasses and genai.Agent() constructors
  • Tools from @genai.tool decorators and FunctionDeclaration() constructors
  • Built-in tools: google_search, code_execution, retrieval
  • Orchestration patterns: orchestrator, sequential, parallel, router
Orizon QA identifies Claude Agent SDK code by looking for:
  • Imports: from anthropic, @anthropic-ai/sdk
  • Constructor: Anthropic()
  • Model name strings: claude-3, claude-sonnet, claude-opus, claude-haiku
Once detected, it also extracts:
  • Tools from @tool decorators, tools=[{...}] arrays, and tool_use blocks
  • Computer use tools: computer, text_editor, bash
  • Hooks: on_message, on_tool_call, on_tool_result, on_error, before_completion, after_completion
  • System prompt from the system parameter or {"role": "system"} message
  • Rules from explicit rules=[...] arrays and constraint keywords in the system prompt
Orizon QA identifies Solace Agent Mesh code by looking for:
  • Package names: solace-agent-mesh, solace.messaging
  • Class names: SolaceAgentMesh, AgentMesh, PubSubPlus
  • Imports: from solace, @solace
Once detected, it also extracts:
  • Agent definitions from Agent/BaseAgent subclasses and AgentMesh.register() calls
  • Topic and queue names
  • Event handlers from @on_message and @on_event decorators
  • A2A communication patterns: request-reply, pub-sub, direct messaging, broadcast, event sourcing
  • PubSub+ configuration: host, VPN name, QoS settings
If your code spans multiple files — for example, tools defined in one file and the agent in another — upload a .zip archive. Orizon QA will scan all files in the archive and merge the extracted information.