Welcome back! In the previous lesson, you learned how to use prompt chaining to connect multiple Claude API calls in a linear sequence, breaking down complex tasks into manageable steps. This approach works well when you know exactly what sequence of operations is needed.
However, real-world applications often face unpredictable requests that require different types of expertise. Instead of building separate chains for every possible request, routing workflows use Claude to analyze incoming requests and intelligently direct them to the right specialist—such as a math expert, a writing expert, or a code expert.
This lesson will show you how to build a flexible routing system that maintains high-quality responses by leveraging specialized system prompts for each domain.
The routing workflow follows a clean two-step pattern that's more dynamic than the linear chains you've used before. When a user submits a request, your system first sends it to a router — a Claude instance with a specialized system prompt designed to classify the request type. The router analyzes the content and returns a decision about which specialist should handle it.
Once you have the routing decision, you send the original user request to a second Claude instance configured with the appropriate specialist system prompt. This specialist focuses entirely on providing the best possible response within their domain of expertise, whether that's solving equations, crafting stories, or debugging code.
The key insight here is that you're using the same Anthropic API and the same Claude model for both calls, but with completely different system prompts that give each instance a distinct role and expertise. The router acts as a classifier, while the specialist acts as a domain expert. This separation of concerns makes your system both more reliable and easier to extend with new specialist types.
The router prompt is the critical component that determines how accurately your system classifies incoming requests. Unlike the open-ended prompts you might use for creative tasks, router prompts need to be strict and constrained to ensure reliable, parseable output.
Your router system prompt should establish Claude's role as a decision-maker and provide clear, unambiguous options. Here's an effective approach that limits the router to exactly three choices:
The phrase Respond with ONLY is crucial because it prevents Claude from adding explanatory text or reasoning that would complicate parsing the response. You want exactly one of three possible strings, nothing more. The explicit list of specialist names with their descriptions helps Claude understand the boundaries between categories and reduces ambiguous classifications.
Notice how each specialist description focuses on clear, distinct domains. Mathematical problems are clearly different from creative writing, which is clearly different from programming tasks. This separation reduces edge cases where the router might struggle to choose between specialists.
Each specialist needs a focused system prompt that establishes their expertise and approach. Unlike general-purpose prompts, specialist prompts should be concise and role-specific to maximize performance within their domain.
Your math specialist prompt should emphasize precision and clarity in mathematical communication:
The writing specialist focuses on creativity and engaging communication:
The code specialist emphasizes technical accuracy and practical implementation:
These prompts are intentionally brief because they need to work with a wide variety of requests within their domain. A math specialist might handle anything from basic arithmetic to complex calculus, so the prompt focuses on the general approach rather than specific techniques. This specialization improves both quality and consistency compared to using a generic "helpful assistant" prompt for all request types.
The beauty of this approach is reusability. Once you've crafted effective specialist prompts, you can use them across different projects and routing systems. They become reliable building blocks for more complex AI workflows.
To begin the routing workflow, you first prepare the user request and send it to the router. The router is a Claude instance configured with a strict system prompt to classify the request.
Here, you set up the Anthropic client, specify the model, and construct the message payload. The max_tokens=100 parameter ensures the router's response is concise, as you expect only a short specialist name.
After receiving the router's response, you need to extract the specialist decision and prepare it for use in the next step of the workflow.
The print statement is useful for debugging and verifying that the router is making the correct classification. For the example request "Write me a short story about robots", you should see:
This confirms that the router correctly identified the request as a creative writing task.
Once you have the router's decision, you need to map it to the appropriate specialist system prompt. This ensures that the user request is handled by the expert best suited for the task.
The if-elif-else structure provides a clean way to map router decisions to specialist prompts. Each condition checks for an exact string match with the expected specialist names from your router prompt. This approach is straightforward and easy to debug when routing decisions don't match expectations.
The else clause provides a crucial fallback mechanism. If the router returns an unexpected response — perhaps due to a prompt engineering issue or an edge case you didn't anticipate — the system defaults to a generic helpful assistant prompt rather than crashing. This graceful degradation keeps your system functional even when routing doesn't work perfectly.
After selecting the correct specialist prompt, you send the original user request to the chosen specialist. The specialist uses their domain expertise to generate the final response.
Notice that you send the original user_request to the specialist, not the router's response. The router's job is purely classification; the specialist needs to see the actual user question to provide a helpful answer. This separation keeps the workflow clean and ensures the specialist has all the context needed to respond effectively.
Finally, extract the specialist's response and display it. This is the answer that will be returned to the user.
When you run this code with the robot story request, you should see output like:
This demonstrates that the writing specialist correctly understood the creative writing request and produced an engaging story opening rather than trying to solve it as a math problem or write code.
You've successfully learned to implement intelligent task routing that uses Claude to classify requests and direct them to specialized system prompts optimized for specific domains. Your routing workflow follows a clean two-step pattern: analyze the request with a router prompt to get a classification decision, then send the original request to the appropriate specialist for the final response.
The routing patterns you've learned here form the foundation for much more sophisticated AI workflows. As you continue through this course, you'll see how these routing concepts extend to dynamic workflows, and complex agent behaviors that can handle real-world business problems with multiple types of expertise working together.
